mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-26 21:45:20 +02:00
- Unified variable naming: system_service_id → systemctl_id - Added automatic removal of trailing '@' for role directory resolution - Improved first_found search: prefer target role, fallback to sys-systemctl defaults - Split template resolution logic to avoid undefined variable errors - Added assertion in sys-timer to forbid '@' in systemctl_id - Corrected default systemctl.service.j2 template description - Cleaned up path handling and script directory generation Context: conversation about fixing template resolution and @ handling https://chatgpt.com/share/68a39994-1bb0-800f-a219-109e643c3efb
39 lines
1.3 KiB
YAML
39 lines
1.3 KiB
YAML
# 1) Find the template (prefer target role, then fall back to this role)
|
||
- name: Resolve systemctl template source
|
||
set_fact:
|
||
systemctl_template_src: >-
|
||
{{ lookup(
|
||
'first_found',
|
||
{
|
||
'files': [
|
||
'templates/systemctl@.service.j2',
|
||
'templates/systemctl.service.j2'
|
||
],
|
||
'paths': [
|
||
systemctl_role_dir,
|
||
role_path
|
||
]
|
||
},
|
||
errors='strict'
|
||
) }}
|
||
|
||
# Optional: sanity check with a clear error if truly nothing found
|
||
- name: Ensure a systemctl template was found
|
||
assert:
|
||
that: systemctl_template_src | length > 0
|
||
fail_msg: >-
|
||
Could not resolve any systemctl template. Looked in:
|
||
{{ systemctl_role_dir }}/templates/ and {{ role_path }}/templates/.
|
||
|
||
# 2) Now we may safely derive whether it’s the “@” variant
|
||
- name: Flag whether @-template is used
|
||
set_fact:
|
||
systemctl_uses_at: "{{ (systemctl_template_src | basename) is search('@\\.service\\.j2$') }}"
|
||
|
||
# 3) Use it
|
||
- name: "setup systemctl '{{ systemctl_id }}'"
|
||
template:
|
||
src: "{{ systemctl_template_src }}"
|
||
dest: "{{ [ PATH_SYSTEM_SERVICE_DIR, systemctl_id | get_service_name(SOFTWARE_NAME) ] | path_join }}"
|
||
notify: "{{ 'reload system daemon' if systemctl_uses_at else 'refresh systemctl service' }}"
|