Skip to content

Commit 3e7b792

Browse files
committed
Migrate to systemd timers
Timers are easier to debug and give more control about the scheduling.
1 parent 29c56ee commit 3e7b792

File tree

11 files changed

+109
-32
lines changed

11 files changed

+109
-32
lines changed

roles/icvpn/tasks/bird.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,13 @@
1414
- name: Install cronjob to automatically update bgp bird configurations
1515
template:
1616
src: icvpn-update
17-
dest: /etc/cron.hourly/icvpn-update
17+
dest: /usr/local/bin/icvpn-update
1818
mode: 0755
19+
20+
- name: Install timer
21+
import_role:
22+
name: timer
23+
vars:
24+
timer_name: icvpn-update
25+
timer_exec: /usr/local/bin/icvpn-update
26+
timer_interval: 1hour

roles/mesh-announce/tasks/main.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,18 @@
2424
name: respondd
2525
enabled: yes
2626

27-
- name: Install cronjob to automatically update alfred announce
28-
template:
29-
src: cronjob
30-
dest: /etc/cron.d/mesh-announce-alfred
27+
- name: Remove legacy cronjob
28+
file:
29+
path: /etc/cron.d/mesh-announce-alfred
30+
state: absent
31+
32+
- name: Install timer
33+
import_role:
34+
name: timer
35+
vars:
36+
timer_name: mesh-announce
37+
timer_exec: "/opt/{{ site_code }}/mesh-announce/announce.sh -i {{ alfred_mtu_interface if alfred_master else main_bridge }} -b {{ batman_interface }}"
38+
timer_interval: 1min
3139
when: mesh_announce_alfred
3240

3341
- name: Open firewall for respondd

roles/mesh-announce/templates/cronjob

Lines changed: 0 additions & 7 deletions
This file was deleted.

roles/meshviewer/tasks/geojson.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,15 @@
1414
group: root
1515
mode: 0755
1616

17-
- name: Install cronjob to copy valide geojson
18-
template:
19-
src: geojson.cronjob
20-
dest: /etc/cron.d/geojson-update
21-
owner: root
22-
group: root
23-
mode: 0644
17+
- name: Install timer
18+
import_role:
19+
name: timer
20+
vars:
21+
timer_name: geojson-update
22+
timer_exec: /usr/local/bin/geojson-update
23+
timer_interval: 5min
24+
25+
- name: Remove legacy cronjob
26+
file:
27+
path: /etc/cron.d/geojson-update
28+
state: absent

roles/meshviewer/templates/geojson.cronjob

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121
--nserver dns.bremen.freifunk.net ns2.afraid.org ns2.he.net \
2222
--file=/var/lib/nsd/0.b.a.b.b.b.f.f.2.8.7.8.6.0.a.2.ip6.arpa.zone --reverse nodes.ffhb.de. || exit
2323

24-
nsd-control reload > /dev/null
24+
nsd-control reload

roles/nsd/tasks/main.yml

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,30 @@
3030

3131
- name: Install script to generate nodes zone
3232
copy:
33-
src: zonegen.py
34-
dest: /usr/local/bin/zonegen.py
33+
src: "{{ item }}"
34+
dest: /usr/local/bin/
3535
owner: root
3636
group: root
3737
mode: 0755
38+
with_items:
39+
- zonegen.py
40+
- zonegen-all
3841

39-
- name: Install cronjob to generate nodes zone
40-
copy:
41-
src: cronjob
42-
dest: /etc/cron.hourly/zonegen
43-
owner: root
44-
group: root
45-
mode: 0755
42+
- name: Remove legacy cronjob
43+
file:
44+
path: /etc/cron.hourly/zonegen
45+
state: absent
46+
47+
- name: Install timer
48+
import_role:
49+
name: timer
50+
vars:
51+
timer_name: zonegen
52+
timer_exec: /usr/local/bin/zonegen-all
53+
timer_interval: 60min
4654

4755
- name: Initially generate nodes zone
48-
command: /etc/cron.hourly/zonegen
56+
service: name=zonegen.service state=started
4957

5058
- name: Open firewall for DNS
5159
copy:

roles/timer/defaults/main.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
timer_name:
2+
timer_descr:
3+
timer_exec: /bin/false
4+
timer_user: root
5+
timer_interval:
6+
timer_calendar:
7+
timer_randomized_delay:

roles/timer/tasks/main.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
- name: Fail when timer_name is empty
3+
fail: msg="timer_name is empty"
4+
when: not timer_name
5+
6+
- name: Upload service and timer
7+
template:
8+
src: "job.{{ item }}"
9+
dest: /lib/systemd/system/{{ timer_name }}.{{ item }}
10+
with_items:
11+
- service
12+
- timer
13+
register: template_result
14+
15+
- name: Reload systemd
16+
command: systemctl daemon-reload
17+
when: template_result.changed
18+
19+
- name: Enable and start timer
20+
service: {{ timer_name }}.timer enabled=yes state=started

roles/timer/templates/service

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# {{ ansible_managed }}
2+
3+
[Unit]
4+
Description={{ timer_descr | default(timer_name + " Timer") }}
5+
6+
[Service]
7+
Type=oneshot
8+
User={{ timer_user }}
9+
10+
ExecStart={{ timer_exec }}

0 commit comments

Comments
 (0)