mirror of
https://github.com/fscotto/infra.git
synced 2026-09-27 19:03:47 +00:00
115 lines
3.6 KiB
YAML
115 lines
3.6 KiB
YAML
---
|
|
- name: Read server account details for rootless Navidrome
|
|
tags: [services, podman, rclone, navidrome]
|
|
ansible.builtin.getent:
|
|
database: passwd
|
|
key: "{{ server_username }}"
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Check for a running legacy rootful Navidrome container
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.command:
|
|
argv:
|
|
- podman
|
|
- container
|
|
- inspect
|
|
- --format
|
|
- "{{ '{{.State.Running}}' }}"
|
|
- navidrome
|
|
register: server_legacy_navidrome_container
|
|
changed_when: false
|
|
failed_when: false
|
|
check_mode: false
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Refuse concurrent legacy and rootless Navidrome
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.assert:
|
|
that:
|
|
- >-
|
|
server_legacy_navidrome_container.rc != 0
|
|
or server_legacy_navidrome_container.stdout | trim != 'true'
|
|
fail_msg: >-
|
|
Stop the legacy rootful Navidrome container before enabling the rootless Quadlet.
|
|
The playbook does not remove the old container or its data automatically.
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Enable lingering for rootless Navidrome
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.command:
|
|
argv:
|
|
- loginctl
|
|
- enable-linger
|
|
- "{{ server_username }}"
|
|
creates: "/var/lib/systemd/linger/{{ server_username }}"
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Start server user systemd manager
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.systemd:
|
|
name: "user@{{ ansible_facts['getent_passwd'][server_username][1] }}.service"
|
|
state: started
|
|
when:
|
|
- server_atlas_music_enabled | bool
|
|
- not ansible_check_mode
|
|
|
|
- name: Create rootless Navidrome Quadlet directory
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.file:
|
|
path: "{{ server_navidrome_quadlet_dir }}"
|
|
state: directory
|
|
owner: "{{ server_username }}"
|
|
group: "{{ server_user_group }}"
|
|
mode: "0700"
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Create private rootless Navidrome configuration directory
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.file:
|
|
path: "{{ server_navidrome_env_dir }}"
|
|
state: directory
|
|
owner: "{{ server_username }}"
|
|
group: "{{ server_user_group }}"
|
|
mode: "0700"
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Render Vault-backed rootless Navidrome environment
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.template:
|
|
src: navidrome.env.j2
|
|
dest: "{{ server_navidrome_env_file }}"
|
|
owner: "{{ server_username }}"
|
|
group: "{{ server_user_group }}"
|
|
mode: "0600"
|
|
no_log: true
|
|
diff: false
|
|
notify: Restart rootless Navidrome
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Render rootless Navidrome Quadlet
|
|
tags: [services, podman, navidrome]
|
|
ansible.builtin.template:
|
|
src: navidrome.container.j2
|
|
dest: "{{ server_navidrome_quadlet_dir }}/navidrome.container"
|
|
owner: "{{ server_username }}"
|
|
group: "{{ server_user_group }}"
|
|
mode: "0644"
|
|
notify: Restart rootless Navidrome
|
|
when: server_atlas_music_enabled | bool
|
|
|
|
- name: Start rootless Navidrome Quadlet
|
|
tags: [services, podman, navidrome]
|
|
become_user: "{{ server_username }}"
|
|
ansible.builtin.systemd:
|
|
name: navidrome.service
|
|
scope: user
|
|
state: started
|
|
daemon_reload: true
|
|
environment:
|
|
XDG_RUNTIME_DIR: "/run/user/{{ ansible_facts['getent_passwd'][server_username][1] }}"
|
|
DBUS_SESSION_BUS_ADDRESS: >-
|
|
unix:path=/run/user/{{ ansible_facts['getent_passwd'][server_username][1] }}/bus
|
|
when:
|
|
- server_atlas_music_enabled | bool
|
|
- not ansible_check_mode
|