/
/
/
Ansible role that deploys snapcast clients.
1---
2- name: Include OS vars
3 ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml"
4 when: ansible_os_family is defined
5
6- name: Install ALSA utils and Avahi packages
7 ansible.builtin.apt:
8 name:
9 - "{{ alsa_utils_pkg }}"
10 - "{{ avahi_pkg }}"
11 state: present
12 update_cache: true
13 when: ansible_os_family == "Debian"
14
15- name: Remove any existing snapclient packages
16 ansible.builtin.apt:
17 name: snapclient
18 state: absent
19 purge: yes
20 when: ansible_os_family == "Debian"
21 ignore_errors: yes
22
23- name: Remove any architecture-specific snapclient packages
24 ansible.builtin.apt:
25 name: "snapclient:*"
26 state: absent
27 purge: yes
28 when: ansible_os_family == "Debian"
29 ignore_errors: yes
30
31- name: Force remove snapclient package using dpkg
32 ansible.builtin.command:
33 cmd: dpkg --remove --force-remove-reinstreq snapclient
34 when: ansible_os_family == "Debian"
35 ignore_errors: yes
36
37- name: Download Snapcast client deb package
38 ansible.builtin.get_url:
39 url: "{{ snapcast_deb_url }}"
40 dest: "/tmp/snapclient_{{ snapcast_version }}-1_{{ snapcast_architecture }}_{{ ansible_distribution_release | default('bookworm') }}.deb"
41 timeout: 300
42 when: ansible_os_family == "Debian"
43
44- name: Install Snapcast client from deb package
45 ansible.builtin.apt:
46 deb: "/tmp/snapclient_{{ snapcast_version }}-1_{{ snapcast_architecture }}_{{ ansible_distribution_release | default('bookworm') }}.deb"
47 state: present
48 when: ansible_os_family == "Debian"
49
50- name: Ensure Avahi is enabled/disabled per var
51 ansible.builtin.service:
52 name: avahi-daemon
53 state: "{{ enable_avahi | ternary('started','stopped') }}"
54 enabled: "{{ enable_avahi | ternary(true,false) }}"
55 when: ansible_os_family == "Debian"
56
57- name: Optionally manage Pi HiFiBerry overlay
58 ansible.builtin.include_tasks: overlay.yml
59 when: enable_hifiberry_overlay | bool
60
61- name: Manage ALSA /etc/asound.conf (mono or absent)
62 ansible.builtin.include_tasks: alsa.yml
63 when: manage_asound_conf | bool
64
65- name: Configure snapclient
66 ansible.builtin.include_tasks: snapclient.yml
67
68