/
/
/
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 Calibre Stack deployment
62 include_tasks: calibre-stack.yml
63 when: calibre_enabled
64 tags:
65 - storage
66 - calibre
67 - books
68
69- name: Include Restic Backup Server deployment
70 include_tasks: restic-server.yml
71 when: restic_backup_server_enabled
72 tags:
73 - storage
74 - restic
75 - backup
76
77# Post-deployment validation
78- name: Include validation tasks
79 include_tasks: validation.yml
80 tags:
81 - storage
82 - validation
83 - health-check
84
85
86- name: Display storage deployment summary
87 debug:
88 msg: |
89 Storage Services Deployment Complete!
90
91 Services Status:
92 - Jellyfin (Media): {{ 'Enabled' if jellyfin_enabled else 'Disabled' }}
93 - Arr Stack (Automation): {{ 'Enabled' if arr_stack_enabled else 'Disabled' }}
94 - Music Assistant: {{ 'Enabled' if music_assistant_enabled else 'Disabled' }}
95 - Calibre Stack (Books): {{ 'Enabled' if calibre_enabled else 'Disabled' }}
96 - Restic Backup: {{ 'Enabled' if restic_backup_server_enabled else 'Disabled' }}
97
98 Access Information:
99 {% if jellyfin_enabled %}
100 - Jellyfin: http://{{ ansible_default_ipv4.address }}:{{ jellyfin_host_port }}
101 {% endif %}
102 {% if arr_stack_enabled %}
103 - Sonarr (TV): http://{{ ansible_default_ipv4.address }}:{{ sonarr_host_port }}
104 - Radarr (Movies): http://{{ ansible_default_ipv4.address }}:{{ radarr_host_port }}
105 - Prowlarr (Indexers): http://{{ ansible_default_ipv4.address }}:{{ prowlarr_host_port }}
106 - LazyLibrarian (Books): http://{{ ansible_default_ipv4.address }}:{{ lazylibrarian_host_port }}
107 - Lidarr (Music): http://{{ ansible_default_ipv4.address }}:{{ lidarr_host_port }}
108 - Jellyseer (Requests): http://{{ ansible_default_ipv4.address }}:{{ jellyseer_host_port }}
109 - Flaresolverr (Cloudflare): http://{{ ansible_default_ipv4.address }}:{{ flaresolverr_host_port }}
110 {% endif %}
111 {% if music_assistant_enabled %}
112 - Music Assistant: http://{{ ansible_default_ipv4.address }}:8095 (host network)
113 {% endif %}
114 {% if calibre_enabled %}
115 - Calibre Server: http://{{ ansible_default_ipv4.address }}:{{ calibre_server_host_port }}
116 - Calibre-Web: http://{{ ansible_default_ipv4.address }}:{{ calibre_web_host_port }}
117 {% endif %}
118 {% if restic_backup_server_enabled %}
119 - Restic Backup: http://{{ ansible_default_ipv4.address }}:{{ restic_backup_host_port }}
120 {% endif %}
121
122 Management Scripts: /usr/local/bin/storage-*
123
124 Service Directories:
125 - Jellyfin: {{ jellyfin_data_dir }}
126 - Arr Stack: {{ arr_config_dir }}
127 - Music Assistant: {{ music_assistant_config_dir }}
128 - Calibre: {{ calibre_config_dir }}
129 - Restic: {{ restic_backup_config_dir }}
130
131 Media Paths: {{ storage_base_path }}
132 tags: always