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