mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-09-07 18:57:12 +02:00
Refactor CDN and run_once handling
- Move run_once include from main.yml to 01_core.yml in desk-gnome-caffeine and desk-ssh - Introduce sys-svc-cdn/01_core.yml to handle shared/vendor dirs once and role dirs per run - Replace cdn.* with cdn_paths_all.* across inj roles - Split cdn_dirs into cdn_dirs_role and CDN_DIRS_GLOBAL - Ensure cdn_urls uses cdn_paths_all Details: https://chatgpt.com/share/68b58d64-1e28-800f-8907-36926a9e9a9b
This commit is contained in:
@@ -19,3 +19,5 @@
|
||||
template:
|
||||
src: caffeine.desktop.j2
|
||||
dest: "{{auto_start_directory}}caffeine.desktop"
|
||||
|
||||
- include_tasks: utils/run_once.yml
|
||||
|
@@ -1,4 +1,3 @@
|
||||
- block:
|
||||
- include_tasks: 01_core.yml
|
||||
- include_tasks: utils/run_once.yml
|
||||
when: run_once_desk_gnome_caffeine is not defined
|
||||
|
@@ -48,4 +48,6 @@
|
||||
state: present
|
||||
create: yes
|
||||
mode: "0644"
|
||||
become: false
|
||||
become: false
|
||||
|
||||
- include_tasks: utils/run_once.yml
|
@@ -1,4 +1,3 @@
|
||||
- block:
|
||||
- include_tasks: 01_core.yml
|
||||
- include_tasks: utils/run_once.yml
|
||||
when: run_once_desk_ssh is not defined
|
@@ -14,7 +14,7 @@
|
||||
- name: Deploy default CSS files
|
||||
template:
|
||||
src: "{{ ['css', item ~ '.j2'] | path_join }}"
|
||||
dest: "{{ [cdn.shared.css, item] | path_join }}"
|
||||
dest: "{{ [cdn_paths_all.shared.css, item] | path_join }}"
|
||||
owner: "{{ NGINX.USER }}"
|
||||
group: "{{ NGINX.USER }}"
|
||||
mode: '0644'
|
||||
|
@@ -5,4 +5,4 @@ CSS_COUNT: 7
|
||||
CSS_SHADES: 100
|
||||
|
||||
# Variables
|
||||
css_app_dst: "{{ [cdn.role.release.css, 'style.css'] | path_join }}"
|
||||
css_app_dst: "{{ [cdn_paths_all.role.release.css, 'style.css'] | path_join }}"
|
@@ -1,2 +1,2 @@
|
||||
INJ_DESKTOP_JS_FILE_NAME: "iframe-handler.js"
|
||||
INJ_DESKTOP_JS_FILE_DESTINATION: "{{ [cdn.shared.js, INJ_DESKTOP_JS_FILE_NAME] | path_join }}"
|
||||
INJ_DESKTOP_JS_FILE_DESTINATION: "{{ [cdn_paths_all.shared.js, INJ_DESKTOP_JS_FILE_NAME] | path_join }}"
|
||||
|
@@ -1,2 +1,2 @@
|
||||
INJ_LOGOUT_JS_FILE_NAME: "logout.js"
|
||||
INJ_LOGOUT_JS_DESTINATION: "{{ [cdn.shared.js, INJ_LOGOUT_JS_FILE_NAME] | path_join }}"
|
||||
INJ_LOGOUT_JS_DESTINATION: "{{ [cdn_paths_all.shared.js, INJ_LOGOUT_JS_FILE_NAME] | path_join }}"
|
||||
|
30
roles/sys-svc-cdn/tasks/01_core.yml
Normal file
30
roles/sys-svc-cdn/tasks/01_core.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
- name: "Load CDN for '{{ domain }}'"
|
||||
include_role:
|
||||
name: web-svc-cdn
|
||||
public: false
|
||||
when:
|
||||
- application_id != 'web-svc-cdn'
|
||||
- run_once_web_svc_cdn is not defined
|
||||
|
||||
- name: Overwritte CDN handlers with neutral handlers
|
||||
ansible.builtin.include_tasks: "{{ [ playbook_dir, 'tasks/utils/load_handlers.yml'] | path_join }}"
|
||||
loop:
|
||||
- svc-prx-openresty
|
||||
- docker-compose
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
vars:
|
||||
handler_role_name: "{{ item }}"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Only-once creations (shared root and vendor)
|
||||
# ------------------------------------------------------------------
|
||||
- name: Ensure shared root and vendor exist (run once)
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ NGINX.USER }}"
|
||||
group: "{{ NGINX.USER }}"
|
||||
mode: "0755"
|
||||
loop: "{{ CDN_DIRS_GLOBAL }}"
|
||||
- include_tasks: utils/run_once.yml
|
@@ -1,25 +1,6 @@
|
||||
---
|
||||
- block:
|
||||
- name: "Load CDN for '{{ domain }}'"
|
||||
include_role:
|
||||
name: web-svc-cdn
|
||||
public: false
|
||||
when:
|
||||
#- inj_enabled.logout
|
||||
#- inj_enabled.desktop
|
||||
- application_id != 'web-svc-cdn'
|
||||
- run_once_web_svc_cdn is not defined
|
||||
|
||||
- name: Overwritte CDN handlers with neutral handlers
|
||||
ansible.builtin.include_tasks: "{{ [ playbook_dir, 'tasks/utils/load_handlers.yml'] | path_join }}"
|
||||
loop:
|
||||
- svc-prx-openresty
|
||||
- docker-compose
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
vars:
|
||||
handler_role_name: "{{ item }}"
|
||||
- include_tasks: utils/run_once.yml
|
||||
- include_tasks: 01_core.yml
|
||||
when:
|
||||
- run_once_sys_svc_cdn is not defined
|
||||
|
||||
@@ -30,12 +11,12 @@
|
||||
owner: "{{ NGINX.USER }}"
|
||||
group: "{{ NGINX.USER }}"
|
||||
mode: "0755"
|
||||
loop: "{{ cdn_dirs }}"
|
||||
loop: "{{ cdn_dirs_role }}"
|
||||
|
||||
- name: Ensure 'latest' symlink points to current release
|
||||
file:
|
||||
src: "{{ cdn.role.release.root }}"
|
||||
dest: "{{ [cdn.role.root, 'latest'] | path_join }}"
|
||||
src: "{{ cdn_paths_all.role.release.root }}"
|
||||
dest: "{{ [cdn_paths_all.role.root, 'latest'] | path_join }}"
|
||||
state: link
|
||||
force: true
|
||||
when: CDN_VERSION != 'latest'
|
||||
|
@@ -1,19 +1,22 @@
|
||||
# Base CDN root (shared across all roles)
|
||||
CDN_ROOT: "{{ NGINX.DIRECTORIES.DATA.CDN }}"
|
||||
CDN_ROOT: "{{ NGINX.DIRECTORIES.DATA.CDN }}"
|
||||
|
||||
# Default version identifier: UTC timestamp
|
||||
CDN_VERSION: "latest" # Latest is used atm because timestamp based would just lead to an unneccessary overhead
|
||||
CDN_VERSION: "latest" # Latest is used atm because timestamp based would just lead to an unneccessary overhead
|
||||
|
||||
# Base Url to deliver the files
|
||||
CDN_BASE_URL: "{{ domains | get_url('web-svc-cdn', WEB_PROTOCOL) }}"
|
||||
CDN_BASE_URL: "{{ domains | get_url('web-svc-cdn', WEB_PROTOCOL) }}"
|
||||
|
||||
# Role specific CDN paths
|
||||
|
||||
## Build CDN path structure (via filter)
|
||||
cdn: "{{ CDN_ROOT | cdn_paths(application_id, CDN_VERSION) }}"
|
||||
cdn_paths_all: "{{ CDN_ROOT | cdn_paths(application_id, CDN_VERSION) }}"
|
||||
|
||||
## Global CDN dirs
|
||||
CDN_DIRS_GLOBAL: "{{ (cdn_paths_all.shared | cdn_dirs) + [cdn_paths_all.vendor] }}"
|
||||
|
||||
## Flatten CDN dict to list of all string paths
|
||||
cdn_dirs: "{{ cdn | cdn_dirs }}"
|
||||
cdn_dirs_role: "{{ cdn_paths_all.role | cdn_dirs }}"
|
||||
|
||||
# Dictionary with all urls
|
||||
cdn_urls: "{{ cdn | cdn_urls(CDN_BASE_URL) }}"
|
||||
cdn_urls: "{{ cdn_paths_all | cdn_urls(CDN_BASE_URL) }}"
|
||||
|
Reference in New Issue
Block a user