ansible-roles/roles/timers/tasks/install.yml
2021-12-01 19:13:34 +01:00

95 lines
2.7 KiB
YAML

---
- name: Create script dir
file: path=/opt/ansible/timers state=directory
tags: system,cron
- name: List unmanaged scripts
shell: find /opt/ansible/timers -maxdepth 1 -mindepth 1 -type f -exec basename "{}" \;
changed_when: False
register: system_timers_current_scripts
tags: system,cron
- name: Remove unmanaged timer's scripts
file: path=/opt/ansible/timers/{{ item }} state=absent
when: item not in system_timers_managed
loop: "{{ system_timers_current_scripts.stdout_lines }}"
tags: system,cron
- name: List unmanaged timers service unit
shell: find /etc/systemd/system -maxdepth 1 -mindepth 1 -type f -name timer-ansible-*.service -exec basename "{}" \; | perl -pe 's/timer\-ansible\-([\w\-_]+)\.service/$1/g'
changed_when: False
register: system_timers_current_service
tags: system,cron
- name: Disable unmanaged timers
systemd: name=timer-ansible-{{ item }}.timer state=stopped enabled=False
when: item not in system_timers_managed
loop: "{{ system_timers_current_service.stdout_lines }}"
tags: system,cron
- name: Remove unmanaged timers service unit
file: path=/etc/systemd/system/timer-ansible-{{ item.0 }}.{{ item.1 }} state=absent
when: item.0 not in system_timers_managed
with_nested:
- "{{ system_timers_current_service.stdout_lines }}"
- - service
- timer
tags: system,cron
- name: Deploy scripts
copy:
content: |
{% if not item.command is search('^#!') %}
#!/bin/bash -e
{% endif %}
{{ item.command }}
dest: /opt/ansible/timers/{{ item.id }}
mode: 0700
owner: "{{ item.user }}"
loop: "{{ system_timers }}"
tags: system,cron
- name: Deploy service units
copy:
content: |
[Unit]
Description={{ item.description }}
[Service]
Type=oneshot
PrivateTmp=yes
ExecStart=/opt/ansible/timers/{{ item.id }}
User={{ item.user }}
TimeoutSec={{ item.max_duration }}
StandardOutput=journal
StandardError=journal
dest: /etc/systemd/system/timer-ansible-{{ item.id }}.service
loop: "{{ system_timers }}"
tags: system,cron
- name: Deploy timer units
copy:
content: |
[Unit]
Description={{ item.description }}
[Timer]
OnCalendar={{ item.calendar }}
Persistent={{ item.persistent | ternary('True','False') }}
[Install]
WantedBy=timers.target
dest: /etc/systemd/system/timer-ansible-{{ item.id }}.timer
loop: "{{ system_timers }}"
tags: system,cron
- name: Reload systemd
systemd: daemon_reload=True
tags: system,cron
- name: Enable timers
systemd: name=timer-ansible-{{ item.id }}.timer state={{ item.enabled | ternary('started','stopped') }} enabled={{ item.enabled }}
loop: "{{ system_timers }}"
tags: system,cron