/
/
/
Ansible role that deployes services on my runner machine
1---
2# Runner Services Role - Main Tasks
3
4- name: Check if runner role is enabled
5 fail:
6 msg: "Runner role is disabled. Set runner_enabled: true to enable."
7 when: not runner_enabled
8 tags: always
9
10- name: Display runner role start message
11 debug:
12 msg: "Starting Runner 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 - runner
25 - prerequisites
26 - setup
27
28# Performance tuning
29- name: Include performance tuning tasks
30 include_tasks: performance.yml
31 when: runner_performance_tuning_enabled
32 tags:
33 - runner
34 - performance
35 - tuning
36
37# NFS mount configuration
38- name: Include NFS mount tasks
39 include_tasks: nfs-mounts.yml
40 when: runner_nfs_enabled
41 tags:
42 - runner
43 - nfs
44 - mounts
45
46# Docker network setup
47- name: Include docker network tasks
48 include_tasks: docker-network.yml
49 tags:
50 - runner
51 - docker
52 - network
53
54# Service deployments
55- name: Include Frigate deployment
56 import_tasks: frigate.yml
57 when: frigate_enabled
58 tags:
59 - frigate
60
61- name: Include Immich deployment
62 import_tasks: immich.yml
63 when: immich_enabled
64 tags:
65 - immich
66
67- name: Include Forgejo deployment
68 import_tasks: forgejo.yml
69 when: forgejo_enabled
70 tags:
71 - forgejo
72
73- name: Include Web Tools deployment
74 import_tasks: web-tools.yml
75 when: web_tools_enabled
76 tags:
77 - web-tools
78
79- name: Include Tandoor deployment
80 import_tasks: tandoor.yml
81 when: tandoor_enabled
82 tags:
83 - tandoor
84
85- name: Include Ghost CMS deployment
86 import_tasks: ghost.yml
87 when: ghost_enabled
88 tags:
89 - ghost
90
91- name: Include CVAT deployment
92 import_tasks: cvat.yml
93 when: cvat_enabled
94 tags:
95 - cvat
96
97- name: Include Harbor deployment
98 import_tasks: harbor.yml
99 when: harbor_enabled
100 tags:
101 - harbor
102
103- name: Include LLM Stack deployment
104 import_tasks: llm-stack.yml
105 when: llm_stack_enabled
106 tags:
107 - llm-stack
108 - ollama
109 - openwebui
110 - litellm
111
112- name: Include D&D session agent deployment
113 import_tasks: dnd.yml
114 when: dnd_enabled
115 tags:
116 - dnd
117 - dnd-stt
118 - thaumaturgeon
119
120- name: Include LiveKit deployment
121 import_tasks: livekit.yml
122 when: livekit_enabled
123 tags:
124 - livekit
125 - conferencing
126
127- name: Display runner deployment summary
128 debug:
129 msg: |
130 Runner Services deployment completed successfully!
131
132 Services Status:
133 - LLM Stack (AI): {{ 'Enabled' if llm_stack_enabled else 'Disabled' }}
134 - Frigate (CCTV): {{ 'Enabled' if frigate_enabled else 'Disabled' }}
135 - Immich (Photos): {{ 'Enabled' if immich_enabled else 'Disabled' }}
136 - Forgejo (Git): {{ 'Enabled' if forgejo_enabled else 'Disabled' }}
137 - Harbor (Registry): {{ 'Enabled' if harbor_enabled else 'Disabled' }}
138 - Web Tools: {{ 'Enabled' if web_tools_enabled else 'Disabled' }}
139 - Tandoor (Recipes): {{ 'Enabled' if tandoor_enabled else 'Disabled' }}
140 - Ghost CMS: {{ 'Enabled' if ghost_enabled else 'Disabled' }}
141 - CVAT: {{ 'Enabled' if cvat_enabled else 'Disabled' }}
142 - LiveKit (Conferencing): {{ 'Enabled' if livekit_enabled else 'Disabled' }}
143
144 Access Information:
145 {% if llm_stack_enabled %}
146 - Ollama: http://{{ ansible_default_ipv4.address }}:{{ llm_stack_ollama_port }}
147 - OpenWebUI: http://{{ ansible_default_ipv4.address }}:{{ llm_stack_openwebui_port }}
148 - LiteLLM: http://{{ ansible_default_ipv4.address }}:{{ llm_stack_litellm_port }}
149 {% endif %}
150 {% if frigate_enabled %}
151 - Frigate: http://{{ ansible_default_ipv4.address }}:{{ frigate_port }}
152 {% endif %}
153 {% if immich_enabled %}
154 - Immich: http://{{ ansible_default_ipv4.address }}:{{ immich_server_port }}
155 {% endif %}
156 {% if forgejo_enabled %}
157 - Forgejo: http://{{ ansible_default_ipv4.address }}:{{ forgejo_http_port }}
158 - Forgejo SSH: ssh://git@{{ ansible_default_ipv4.address }}:{{ forgejo_ssh_port }}
159 {% endif %}
160 {% if harbor_enabled %}
161 - Harbor Registry: http://{{ ansible_default_ipv4.address }}:{{ harbor_http_port | default(8080) }}
162 - Harbor Admin: admin/{{ harbor_admin_password | default('Harbor12345') }}
163 {% endif %}
164 {% if web_tools_enabled %}
165 - Stirling-PDF: http://{{ ansible_default_ipv4.address }}:{{ web_tools_stirling_port }}
166 - ConvertX: http://{{ ansible_default_ipv4.address }}:{{ web_tools_convertx_port }}
167 - CyberChef: http://{{ ansible_default_ipv4.address }}:{{ web_tools_cyberchef_port }}
168 - IT-Tools: http://{{ ansible_default_ipv4.address }}:{{ web_tools_it_tools_port }}
169 {% endif %}
170 {% if tandoor_enabled %}
171 - Tandoor: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}
172 {% endif %}
173 {% if ghost_enabled %}
174 - Ghost CMS: http://{{ ansible_default_ipv4.address }}:{{ ghost_port }}
175 {% endif %}
176 {% if cvat_enabled %}
177 - CVAT: http://{{ cvat_domain }}
178 {% endif %}
179 {% if livekit_enabled %}
180 - LiveKit Meet: http://{{ ansible_default_ipv4.address }}:{{ livekit_meet_port }}
181 - LiveKit Signaling: {{ livekit_public_ws_url }}
182 {% endif %}
183
184 Management Scripts: /usr/local/bin/runner-*
185
186 Service Directories (Consolidated Structure):
187 - LLM Stack: {{ llm_stack_config_dir }}
188 - Ollama Data: {{ llm_stack_ollama_data_dir }}
189 - OpenWebUI Data: {{ llm_stack_openwebui_data_dir }}
190 - LiteLLM Data: {{ llm_stack_litellm_data_dir }}
191 - Frigate: {{ frigate_config_dir }}
192 - Immich: {{ immich_config_dir }}
193 - Forgejo: {{ forgejo_config_dir }}
194 - Harbor: {{ harbor_config_dir }}
195 - Web Tools: {{ web_tools_config_dir }}
196 - Tandoor: {{ tandoor_config_dir }}
197 - Ghost: {{ ghost_config_dir }}
198 - CVAT: {{ cvat_config_dir }}
199 - LiveKit: {{ livekit_config_dir }}
200
201 NFS Mounts: {{ runner_nfs_mount_dir }}
202 tags: always
203