/
/
/
Ansible role that provisions my storage server.
1---
2# Storage Services Handlers
3
4# ==============================================================================
5# DOCKER SERVICE HANDLERS
6# ==============================================================================
7
8- name: Check if jellyfin directory exists
9 stat:
10 path: "{{ jellyfin_data_dir }}"
11 register: jellyfin_dir_exists
12 changed_when: false
13 check_mode: no
14 when: jellyfin_data_dir is defined
15 tags: ['jellyfin', 'restart']
16
17- name: restart jellyfin
18 community.docker.docker_compose_v2:
19 project_src: "{{ jellyfin_data_dir }}"
20 state: present
21 recreate: always
22 check_mode: no
23 when:
24 - jellyfin_dir_exists is defined
25 - jellyfin_dir_exists.stat.exists
26 tags: ['jellyfin', 'restart']
27
28- name: Check if arr-stack directory exists
29 stat:
30 path: "{{ arr_config_dir }}"
31 register: arr_dir_exists
32 changed_when: false
33 check_mode: no
34 when: arr_config_dir is defined
35 tags: ['arr-stack', 'restart']
36
37- name: restart arr-stack
38 community.docker.docker_compose_v2:
39 project_src: "{{ arr_config_dir }}"
40 state: present
41 recreate: always
42 check_mode: no
43 when:
44 - arr_dir_exists is defined
45 - arr_dir_exists.stat.exists
46 tags: ['arr-stack', 'restart']
47
48- name: Check if music-assistant directory exists
49 stat:
50 path: "{{ music_assistant_config_dir }}"
51 register: music_assistant_dir_exists
52 changed_when: false
53 check_mode: no
54 when: music_assistant_config_dir is defined
55 tags: ['music-assistant', 'restart']
56
57- name: restart music-assistant
58 community.docker.docker_compose_v2:
59 project_src: "{{ music_assistant_config_dir }}"
60 state: present
61 recreate: always
62 check_mode: no
63 when:
64 - music_assistant_dir_exists is defined
65 - music_assistant_dir_exists.stat.exists
66 tags: ['music-assistant', 'restart']
67
68- name: Check if navidrome directory exists
69 stat:
70 path: "{{ navidrome_config_dir }}"
71 register: navidrome_dir_exists
72 changed_when: false
73 check_mode: no
74 when: navidrome_config_dir is defined
75 tags: ['navidrome', 'restart']
76
77- name: restart navidrome
78 community.docker.docker_compose_v2:
79 project_src: "{{ navidrome_config_dir }}"
80 state: present
81 recreate: always
82 check_mode: no
83 when:
84 - navidrome_dir_exists is defined
85 - navidrome_dir_exists.stat.exists
86 tags: ['navidrome', 'restart']
87
88- name: Check if calibre-stack directory exists
89 stat:
90 path: "{{ calibre_config_dir }}"
91 register: calibre_dir_exists
92 changed_when: false
93 check_mode: no
94 when: calibre_config_dir is defined
95 tags: ['calibre', 'restart']
96
97- name: restart calibre-stack
98 community.docker.docker_compose_v2:
99 project_src: "{{ calibre_config_dir }}"
100 state: present
101 recreate: always
102 check_mode: no
103 when:
104 - calibre_dir_exists is defined
105 - calibre_dir_exists.stat.exists
106 tags: ['calibre', 'restart']
107
108- name: Check if restic-server directory exists
109 stat:
110 path: "{{ restic_backup_config_dir }}"
111 register: restic_dir_exists
112 changed_when: false
113 check_mode: no
114 when: restic_backup_config_dir is defined
115 tags: ['restic', 'backup', 'restart']
116
117- name: restart restic-server
118 community.docker.docker_compose_v2:
119 project_src: "{{ restic_backup_config_dir }}"
120 state: present
121 recreate: always
122 check_mode: no
123 when:
124 - restic_dir_exists is defined
125 - restic_dir_exists.stat.exists
126 tags: ['restic', 'backup', 'restart']
127
128# ==============================================================================
129# SYSTEM HANDLERS
130# ==============================================================================
131
132- name: reload systemd
133 systemd:
134 daemon_reload: true
135 check_mode: no
136
137- name: create docker network
138 community.docker.docker_network:
139 name: "{{ storage_docker_network }}"
140 state: present
141 check_mode: no
142 tags: ['docker', 'network']
143
144# ==============================================================================
145# CONFIGURATION HANDLERS
146# ==============================================================================
147
148- name: update permissions
149 file:
150 path: "{{ item }}"
151 owner: "{{ storage_user }}"
152 group: "{{ storage_group }}"
153 recurse: true
154 loop:
155 - "{{ storage_docker_dir }}"
156 - "{{ storage_base_path }}"
157 check_mode: no
158 tags: ['permissions']
159
160- name: Check if docker compose directories exist
161 stat:
162 path: "{{ item }}"
163 register: compose_dirs
164 changed_when: false
165 loop:
166 - "{{ jellyfin_data_dir }}"
167 - "{{ arr_config_dir }}"
168 - "{{ music_assistant_config_dir }}"
169 - "{{ navidrome_config_dir }}"
170 - "{{ calibre_config_dir }}"
171 - "{{ restic_backup_config_dir }}"
172 when:
173 - item is defined
174 - item != ""
175 tags: ['validation']
176
177- name: validate docker compose
178 command: docker compose config
179 args:
180 chdir: "{{ item.item }}"
181 loop: "{{ compose_dirs.results }}"
182 when:
183 - item.stat is defined
184 - item.stat.exists
185 changed_when: false
186 check_mode: no
187 tags: ['validation']