Several roles reported "changed" on every playbook run even when
nothing on the target had drifted, making real config drift
indistinguishable from noise:
- 7 systemd tasks across 6 roles used state:restarted, which always
issues a restart and always reports changed. Switched to
state:started plus notify-driven handlers that only restart when
the underlying unit file, script, or config actually changes.
- pi_standard_setup's boot mode, timezone, and locale tasks shelled
out to raspi-config with changed_when:true hardcoded. Boot mode now
checks systemctl get-default first; timezone/locale now use the
natively idempotent community.general.timezone/locale_gen modules.
- The pi account password task computed password_hash('sha512')
without a seed, generating a new random salt (and thus an
apparently different hash) on every run. Added a stable seed so the
hash only changes when the underlying secret does.
Also renamed a mislabeled task in pi_squeezelite_custom and fixed a
typo in pi_standard_setup while those files were already touched.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
48 lines
1.2 KiB
YAML
48 lines
1.2 KiB
YAML
---
|
|
- name: Apt install dependencies
|
|
ansible.builtin.apt:
|
|
cache_valid_time: 7200
|
|
state: present
|
|
name:
|
|
- build-essential
|
|
- git
|
|
- xmltoman
|
|
- autoconf
|
|
- automake
|
|
- libtool
|
|
- libpopt-dev
|
|
- libconfig-dev
|
|
- libasound2-dev
|
|
- avahi-daemon
|
|
- libavahi-client-dev
|
|
- libssl-dev
|
|
- libsoxr-dev
|
|
- name: Build and Install Shairport sync (may take a while)
|
|
ansible.builtin.script: "build-shairport-sync.sh ${shairport_sync_version}"
|
|
args:
|
|
creates: /usr/local/bin/shairport-sync
|
|
notify: Restart shairport-sync
|
|
- name: Copy config
|
|
ansible.builtin.template:
|
|
src: shairport-sync.conf
|
|
dest: /etc/shairport-sync.conf
|
|
mode: "0644"
|
|
notify: Restart shairport-sync
|
|
- name: Modify service file to run as root
|
|
ansible.builtin.lineinfile:
|
|
path: /lib/systemd/system/shairport-sync.service
|
|
regexp: "^#?User="
|
|
line: "User=root"
|
|
notify: Restart shairport-sync
|
|
- name: Enable shairport-sync autostart
|
|
ansible.builtin.systemd:
|
|
name: shairport-sync
|
|
state: started
|
|
enabled: "yes"
|
|
daemon_reload: "yes"
|
|
- name: Add to sysdweb
|
|
ansible.builtin.include_role:
|
|
name: pi_sysdweb
|
|
vars:
|
|
pi_sysdweb_name: shairport-sync
|