/
/
/
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 calibre-stack directory exists
69 stat:
70 path: "{{ calibre_config_dir }}"
71 register: calibre_dir_exists
72 changed_when: false
73 check_mode: no
74 when: calibre_config_dir is defined
75 tags: ['calibre', 'restart']
76
77- name: restart calibre-stack
78 community.docker.docker_compose_v2:
79 project_src: "{{ calibre_config_dir }}"
80 state: present
81 recreate: always
82 check_mode: no
83 when:
84 - calibre_dir_exists is defined
85 - calibre_dir_exists.stat.exists
86 tags: ['calibre', 'restart']
87
88- name: Check if restic-server directory exists
89 stat:
90 path: "{{ restic_backup_config_dir }}"
91 register: restic_dir_exists
92 changed_when: false
93 check_mode: no
94 when: restic_backup_config_dir is defined
95 tags: ['restic', 'backup', 'restart']
96
97- name: restart restic-server
98 community.docker.docker_compose_v2:
99 project_src: "{{ restic_backup_config_dir }}"
100 state: present
101 recreate: always
102 check_mode: no
103 when:
104 - restic_dir_exists is defined
105 - restic_dir_exists.stat.exists
106 tags: ['restic', 'backup', 'restart']
107
108# ==============================================================================
109# SYSTEM HANDLERS
110# ==============================================================================
111
112- name: reload systemd
113 systemd:
114 daemon_reload: true
115 check_mode: no
116
117- name: create docker network
118 community.docker.docker_network:
119 name: "{{ storage_docker_network }}"
120 state: present
121 check_mode: no
122 tags: ['docker', 'network']
123
124# ==============================================================================
125# CONFIGURATION HANDLERS
126# ==============================================================================
127
128- name: update permissions
129 file:
130 path: "{{ item }}"
131 owner: "{{ storage_user }}"
132 group: "{{ storage_group }}"
133 recurse: true
134 loop:
135 - "{{ storage_docker_dir }}"
136 - "{{ storage_base_path }}"
137 check_mode: no
138 tags: ['permissions']
139
140- name: Check if docker compose directories exist
141 stat:
142 path: "{{ item }}"
143 register: compose_dirs
144 changed_when: false
145 loop:
146 - "{{ jellyfin_data_dir }}"
147 - "{{ arr_config_dir }}"
148 - "{{ music_assistant_config_dir }}"
149 - "{{ calibre_config_dir }}"
150 - "{{ restic_backup_config_dir }}"
151 when:
152 - item is defined
153 - item != ""
154 tags: ['validation']
155
156- name: validate docker compose
157 command: docker compose config
158 args:
159 chdir: "{{ item.item }}"
160 loop: "{{ compose_dirs.results }}"
161 when:
162 - item.stat is defined
163 - item.stat.exists
164 changed_when: false
165 check_mode: no
166 tags: ['validation']