storage

Ansible role that provisions my storage server.

3.7 KBYML
main.yml
3.7 KB145 lines • yaml
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 calibre-stack directory exists
49  stat:
50    path: "{{ calibre_config_dir }}"
51  register: calibre_dir_exists
52  changed_when: false
53  check_mode: no
54  when: calibre_config_dir is defined
55  tags: ['calibre', 'restart']
56
57- name: restart calibre-stack
58  community.docker.docker_compose_v2:
59    project_src: "{{ calibre_config_dir }}"
60    state: present
61    recreate: always
62  check_mode: no
63  when: 
64    - calibre_dir_exists is defined
65    - calibre_dir_exists.stat.exists
66  tags: ['calibre', 'restart']
67
68- name: Check if restic-server directory exists
69  stat:
70    path: "{{ restic_backup_config_dir }}"
71  register: restic_dir_exists
72  changed_when: false
73  check_mode: no
74  when: restic_backup_config_dir is defined
75  tags: ['restic', 'backup', 'restart']
76
77- name: restart restic-server
78  community.docker.docker_compose_v2:
79    project_src: "{{ restic_backup_config_dir }}"
80    state: present
81    recreate: always
82  check_mode: no
83  when: 
84    - restic_dir_exists is defined
85    - restic_dir_exists.stat.exists
86  tags: ['restic', 'backup', 'restart']
87
88# ==============================================================================
89# SYSTEM HANDLERS
90# ==============================================================================
91
92- name: reload systemd
93  systemd:
94    daemon_reload: true
95  check_mode: no
96
97- name: create docker network
98  community.docker.docker_network:
99    name: "{{ storage_docker_network }}"
100    state: present
101  check_mode: no
102  tags: ['docker', 'network']
103
104# ==============================================================================
105# CONFIGURATION HANDLERS
106# ==============================================================================
107
108- name: update permissions
109  file:
110    path: "{{ item }}"
111    owner: "{{ storage_user }}"
112    group: "{{ storage_group }}"
113    recurse: true
114  loop:
115    - "{{ storage_docker_dir }}"
116    - "{{ storage_base_path }}"
117  check_mode: no
118  tags: ['permissions']
119
120- name: Check if docker compose directories exist
121  stat:
122    path: "{{ item }}"
123  register: compose_dirs
124  changed_when: false
125  loop:
126    - "{{ jellyfin_data_dir }}"
127    - "{{ arr_config_dir }}"
128    - "{{ calibre_config_dir }}"
129    - "{{ restic_backup_config_dir }}"
130  when: 
131    - item is defined
132    - item != ""
133  tags: ['validation']
134
135- name: validate docker compose
136  command: docker compose config
137  args:
138    chdir: "{{ item.item }}"
139  loop: "{{ compose_dirs.results }}"
140  when: 
141    - item.stat is defined
142    - item.stat.exists
143  changed_when: false
144  check_mode: no
145  tags: ['validation']