From 636019283fb5dea3d51207a6377968227dbc11a1 Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Wed, 25 Nov 2020 17:04:51 +0100 Subject: [PATCH] Add daily/weekly systemd timer setup --- roles/arch/handlers/main.yml | 13 ++++++ roles/arch/tasks/main.yml | 3 +- roles/arch/tasks/timer.yml | 47 +++++++++++++++++++++ roles/arch/templates/timer/daily_target.j2 | 9 ++++ roles/arch/templates/timer/daily_timer.j2 | 12 ++++++ roles/arch/templates/timer/weekly_target.j2 | 10 +++++ roles/arch/templates/timer/weekly_timer.j2 | 12 ++++++ 7 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 roles/arch/handlers/main.yml create mode 100644 roles/arch/tasks/timer.yml create mode 100644 roles/arch/templates/timer/daily_target.j2 create mode 100644 roles/arch/templates/timer/daily_timer.j2 create mode 100644 roles/arch/templates/timer/weekly_target.j2 create mode 100644 roles/arch/templates/timer/weekly_timer.j2 diff --git a/roles/arch/handlers/main.yml b/roles/arch/handlers/main.yml new file mode 100644 index 0000000..207f887 --- /dev/null +++ b/roles/arch/handlers/main.yml @@ -0,0 +1,13 @@ +- name: enable daily timer + systemd: + name: daily.timer + state: restarted + enabled: yes + daemon-reload: yes + +- name: enable weekly timer + systemd: + name: weekly.timer + state: restarted + enabled: yes + daemon-reload: yes diff --git a/roles/arch/tasks/main.yml b/roles/arch/tasks/main.yml index 3d32a43..5231b57 100644 --- a/roles/arch/tasks/main.yml +++ b/roles/arch/tasks/main.yml @@ -28,8 +28,6 @@ # TODO # - network setup (laptop) -# - daily systemd-timer -# - weekly systemd-timer # - reflector setup # - pacman setup depending on platform (see include section for common options) @@ -41,3 +39,4 @@ - include_tasks: syncthing.yml # TODO depending on platform - include_tasks: git.yml # TODO (identify) - include_tasks: openvpn.yml # TODO depending on platform +- include_tasks: timer.yml diff --git a/roles/arch/tasks/timer.yml b/roles/arch/tasks/timer.yml new file mode 100644 index 0000000..e0f352b --- /dev/null +++ b/roles/arch/tasks/timer.yml @@ -0,0 +1,47 @@ +- name: copy timer files + become: yes + template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: root + mode: "0644" + loop: + - { + src: "timer/daily_timer.j2", + dest: "/etc/systemd/system/daily.timer", + } + - { + src: "timer/weekly_timer.j2", + dest: "/etc/systemd/system/weekly.timer", + } + notify: + - enable daily timer + - enable weekly timer + +- name: copy target files + become: yes + template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: root + mode: "0644" + loop: + - { + src: "timer/daily_target.j2", + dest: "/etc/systemd/system/daily.target", + } + - { + src: "timer/weekly_target.j2", + dest: "/etc/systemd/system/weekly.target", + } + +- name: create target directories + become: yes + file: + path: "{{ item }}" + state: directory + owner: root + mode: "0755" + loop: + - "/etc/systemd/system/daily.target.wants" + - "/etc/systemd/system/weekly.target.wants" diff --git a/roles/arch/templates/timer/daily_target.j2 b/roles/arch/templates/timer/daily_target.j2 new file mode 100644 index 0000000..bf93acb --- /dev/null +++ b/roles/arch/templates/timer/daily_target.j2 @@ -0,0 +1,9 @@ +# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }} +# +# Add the following to your service unit to make use of this target: +# Wants=daily.target +# +# Or symlink the unit file to the daily.target.wants directory manually +[Unit] +Description=Daily timer target +Requires=multi-user.target diff --git a/roles/arch/templates/timer/daily_timer.j2 b/roles/arch/templates/timer/daily_timer.j2 new file mode 100644 index 0000000..4b4eace --- /dev/null +++ b/roles/arch/templates/timer/daily_timer.j2 @@ -0,0 +1,12 @@ +# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }} +# +[Unit] +Description=Timer which runs all services on a daily basis inside the daily.target.wants directory + +[Timer] +OnCalendar=daily +Unit=daily.target +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/roles/arch/templates/timer/weekly_target.j2 b/roles/arch/templates/timer/weekly_target.j2 new file mode 100644 index 0000000..7e944cb --- /dev/null +++ b/roles/arch/templates/timer/weekly_target.j2 @@ -0,0 +1,10 @@ +# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }} +# +# Add the following to your service unit to make use of this target: +# Wants=weekly.target +# +# Or symlink the unit file to the weekly.target.wants directory manually + +[Unit] +Description=Weekly timer target +Requires=multi-user.target diff --git a/roles/arch/templates/timer/weekly_timer.j2 b/roles/arch/templates/timer/weekly_timer.j2 new file mode 100644 index 0000000..56989bd --- /dev/null +++ b/roles/arch/templates/timer/weekly_timer.j2 @@ -0,0 +1,12 @@ +# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }} +# +[Unit] +Description=Timer which runs all services on a weekly basis inside the weekly.target.wants directory + +[Timer] +OnCalendar=weekly +Unit=weekly.target +Persistent=true + +[Install] +WantedBy=timers.target