/
/
/
Ansible role that provisions my storage server.
1---
2# Storage Services - Navidrome Music Server
3
4- name: Create Navidrome configuration directory structure
5 file:
6 path: "{{ item }}"
7 state: directory
8 owner: "{{ storage_user }}"
9 group: "{{ storage_group }}"
10 mode: '2775'
11 loop:
12 - "{{ navidrome_config_dir }}"
13 - "{{ navidrome_data_dir }}"
14
15- name: Deploy Navidrome Docker Compose file
16 template:
17 src: navidrome-compose.yml.j2
18 dest: "{{ navidrome_config_dir }}/docker-compose.yml"
19 owner: "{{ storage_user }}"
20 group: "{{ storage_group }}"
21 mode: '0664'
22 notify: restart navidrome
23
24- name: Start Navidrome service
25 community.docker.docker_compose_v2:
26 project_src: "{{ navidrome_config_dir }}"
27 state: present
28 register: navidrome_start_result
29 check_mode: no
30
31- name: Wait for Navidrome to be healthy
32 uri:
33 url: "http://localhost:{{ navidrome_port }}"
34 method: GET
35 status_code: [200, 302]
36 register: navidrome_health
37 until: navidrome_health.status in [200, 302]
38 retries: 15
39 delay: 5
40 when: navidrome_start_result is changed
41 check_mode: no
42
43- name: Display Navidrome deployment summary
44 debug:
45 msg: |
46 Navidrome Music Server Deployment:
47 - Status: {{ 'Started' if navidrome_start_result is changed else 'Already running' }}
48 - Web UI: http://{{ ansible_default_ipv4.address }}:{{ navidrome_host_port }}
49 - Configuration: {{ navidrome_config_dir }}
50 - Data: {{ navidrome_data_dir }}
51 - Music Library: {{ navidrome_music_dir }}
52