/
/
/
Ansible role that provisions my storage server.
1---
2# Storage Services Role - Main Tasks
3
4- name: Check if storage role is enabled
5 fail:
6 msg: "Storage role is disabled. Set storage_enabled: true to enable."
7 when: not storage_enabled
8 tags: always
9
10- name: Display storage role start message
11 debug:
12 msg: "Starting Storage Services deployment with {{ ansible_play_hosts | length }} host(s)"
13 tags: always
14
15# Validate vault secrets before proceeding
16- name: Include vault variable validation
17 include_tasks: validate-vault.yml
18 tags: [always, validation]
19
20# Prerequisites and system setup
21- name: Include prerequisites tasks
22 include_tasks: prerequisites.yml
23 tags:
24 - storage
25 - prerequisites
26 - setup
27
28# Docker network setup
29- name: Include docker network tasks
30 include_tasks: docker-network.yml
31 tags:
32 - storage
33 - docker
34 - network
35
36# Service deployments
37- name: Include Jellyfin deployment
38 include_tasks: jellyfin.yml
39 when: jellyfin_enabled
40 tags:
41 - storage
42 - jellyfin
43 - media
44
45- name: Include Arr Stack deployment
46 include_tasks: arr-stack.yml
47 when: arr_stack_enabled
48 tags:
49 - storage
50 - arr-stack
51 - automation
52
53- name: Include Music Assistant deployment
54 include_tasks: music-assistant.yml
55 when: music_assistant_enabled
56 tags:
57 - storage
58 - music-assistant
59 - music
60
61- name: Include Navidrome deployment
62 include_tasks: navidrome.yml
63 when: navidrome_enabled
64 tags:
65 - storage
66 - navidrome
67 - music
68
69- name: Include Calibre Stack deployment
70 include_tasks: calibre-stack.yml
71 when: calibre_enabled
72 tags:
73 - storage
74 - calibre
75 - books
76
77- name: Include Restic Backup Server deployment
78 include_tasks: restic-server.yml
79 when: restic_backup_server_enabled
80 tags:
81 - storage
82 - restic
83 - backup
84
85# Post-deployment validation
86- name: Include validation tasks
87 include_tasks: validation.yml
88 tags:
89 - storage
90 - validation
91 - health-check
92
93
94- name: Display storage deployment summary
95 debug:
96 msg: |
97 Storage Services Deployment Complete!
98
99 Services Status:
100 - Jellyfin (Media): {{ 'Enabled' if jellyfin_enabled else 'Disabled' }}
101 - Arr Stack (Automation): {{ 'Enabled' if arr_stack_enabled else 'Disabled' }}
102 - Music Assistant: {{ 'Enabled' if music_assistant_enabled else 'Disabled' }}
103 - Navidrome: {{ 'Enabled' if navidrome_enabled else 'Disabled' }}
104 - Calibre Stack (Books): {{ 'Enabled' if calibre_enabled else 'Disabled' }}
105 - Restic Backup: {{ 'Enabled' if restic_backup_server_enabled else 'Disabled' }}
106
107 Access Information:
108 {% if jellyfin_enabled %}
109 - Jellyfin: http://{{ ansible_default_ipv4.address }}:{{ jellyfin_host_port }}
110 {% endif %}
111 {% if arr_stack_enabled %}
112 - Sonarr (TV): http://{{ ansible_default_ipv4.address }}:{{ sonarr_host_port }}
113 - Radarr (Movies): http://{{ ansible_default_ipv4.address }}:{{ radarr_host_port }}
114 - Prowlarr (Indexers): http://{{ ansible_default_ipv4.address }}:{{ prowlarr_host_port }}
115 - LazyLibrarian (Books): http://{{ ansible_default_ipv4.address }}:{{ lazylibrarian_host_port }}
116 - Lidarr (Music): http://{{ ansible_default_ipv4.address }}:{{ lidarr_host_port }}
117 - Jellyseer (Requests): http://{{ ansible_default_ipv4.address }}:{{ jellyseer_host_port }}
118 - Flaresolverr (Cloudflare): http://{{ ansible_default_ipv4.address }}:{{ flaresolverr_host_port }}
119 {% endif %}
120 {% if music_assistant_enabled %}
121 - Music Assistant: http://{{ ansible_default_ipv4.address }}:8095 (host network)
122 {% endif %}
123 {% if navidrome_enabled %}
124 - Navidrome: http://{{ ansible_default_ipv4.address }}:{{ navidrome_host_port }}
125 {% endif %}
126 {% if calibre_enabled %}
127 - Calibre Server: http://{{ ansible_default_ipv4.address }}:{{ calibre_server_host_port }}
128 - Calibre-Web: http://{{ ansible_default_ipv4.address }}:{{ calibre_web_host_port }}
129 {% endif %}
130 {% if restic_backup_server_enabled %}
131 - Restic Backup: http://{{ ansible_default_ipv4.address }}:{{ restic_backup_host_port }}
132 {% endif %}
133
134 Management Scripts: /usr/local/bin/storage-*
135
136 Service Directories:
137 - Jellyfin: {{ jellyfin_data_dir }}
138 - Arr Stack: {{ arr_config_dir }}
139 - Music Assistant: {{ music_assistant_config_dir }}
140 - Calibre: {{ calibre_config_dir }}
141 - Restic: {{ restic_backup_config_dir }}
142
143 Media Paths: {{ storage_base_path }}
144 tags: always