/
/
/
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 Stirling-PDF deployment
74 import_tasks: stirling-pdf.yml
75 when: stirling_pdf_enabled
76 tags:
77 - stirling-pdf
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: Display runner deployment summary
113 debug:
114 msg: |
115 Runner Services deployment completed successfully!
116
117 Services Status:
118 - LLM Stack (AI): {{ 'Enabled' if llm_stack_enabled else 'Disabled' }}
119 - Frigate (CCTV): {{ 'Enabled' if frigate_enabled else 'Disabled' }}
120 - Immich (Photos): {{ 'Enabled' if immich_enabled else 'Disabled' }}
121 - Forgejo (Git): {{ 'Enabled' if forgejo_enabled else 'Disabled' }}
122 - Harbor (Registry): {{ 'Enabled' if harbor_enabled else 'Disabled' }}
123 - Stirling-PDF: {{ 'Enabled' if stirling_pdf_enabled else 'Disabled' }}
124 - Tandoor (Recipes): {{ 'Enabled' if tandoor_enabled else 'Disabled' }}
125 - Ghost CMS: {{ 'Enabled' if ghost_enabled else 'Disabled' }}
126 - CVAT: {{ 'Enabled' if cvat_enabled else 'Disabled' }}
127
128 Access Information:
129 {% if llm_stack_enabled %}
130 - Ollama: http://{{ ansible_default_ipv4.address }}:{{ llm_stack_ollama_port }}
131 - OpenWebUI: http://{{ ansible_default_ipv4.address }}:{{ llm_stack_openwebui_port }}
132 - LiteLLM: http://{{ ansible_default_ipv4.address }}:{{ llm_stack_litellm_port }}
133 {% endif %}
134 {% if frigate_enabled %}
135 - Frigate: http://{{ ansible_default_ipv4.address }}:{{ frigate_port }}
136 {% endif %}
137 {% if immich_enabled %}
138 - Immich: http://{{ ansible_default_ipv4.address }}:{{ immich_server_port }}
139 {% endif %}
140 {% if forgejo_enabled %}
141 - Forgejo: http://{{ ansible_default_ipv4.address }}:{{ forgejo_http_port }}
142 - Forgejo SSH: ssh://git@{{ ansible_default_ipv4.address }}:{{ forgejo_ssh_port }}
143 {% endif %}
144 {% if harbor_enabled %}
145 - Harbor Registry: http://{{ ansible_default_ipv4.address }}:{{ harbor_http_port | default(8080) }}
146 - Harbor Admin: admin/{{ harbor_admin_password | default('Harbor12345') }}
147 {% endif %}
148 {% if stirling_pdf_enabled %}
149 - Stirling-PDF: http://{{ ansible_default_ipv4.address }}:{{ stirling_pdf_port }}
150 {% endif %}
151 {% if tandoor_enabled %}
152 - Tandoor: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}
153 {% endif %}
154 {% if ghost_enabled %}
155 - Ghost CMS: http://{{ ansible_default_ipv4.address }}:{{ ghost_port }}
156 {% endif %}
157 {% if cvat_enabled %}
158 - CVAT: http://{{ cvat_domain }}
159 {% endif %}
160
161 Management Scripts: /usr/local/bin/runner-*
162
163 Service Directories (Consolidated Structure):
164 - LLM Stack: {{ llm_stack_config_dir }}
165 - Ollama Data: {{ llm_stack_ollama_data_dir }}
166 - OpenWebUI Data: {{ llm_stack_openwebui_data_dir }}
167 - LiteLLM Data: {{ llm_stack_litellm_data_dir }}
168 - Frigate: {{ frigate_config_dir }}
169 - Immich: {{ immich_config_dir }}
170 - Forgejo: {{ forgejo_config_dir }}
171 - Harbor: {{ harbor_config_dir }}
172 - Stirling-PDF: {{ stirling_pdf_config_dir }}
173 - Tandoor: {{ tandoor_config_dir }}
174 - Ghost: {{ ghost_config_dir }}
175 - CVAT: {{ cvat_config_dir }}
176
177 NFS Mounts: {{ runner_nfs_mount_dir }}
178 tags: always
179