From f8c19db61e65acd25e47a6fe13e3c0bd0de35b00 Mon Sep 17 00:00:00 2001 From: nd Date: Thu, 11 Jun 2020 00:17:39 +0200 Subject: [PATCH] added documentation and non special options. Breaking change --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ defaults/main.yml | 13 ++++++++++++- tasks/job.yml | 27 +++++++++++++++++++-------- tasks/main.yml | 2 +- 4 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4508e9a --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# Cron + +All configuration is to be placed inside the `cron` dict. + +``` +# : *jobconfig* +jobs: {} + +# defaults for all jobs, see *jobconfig* +defaults: + user: root + weekday: '*' + hour: '*' + minute: '*' + special_time: False + random_options: + weekday: "{{ range(6)|list }}" + hour: "{{ range(1, 22)|list }}" + minute: "{{ range(5, 50)|list }}" +``` + +**jobconfig** +``` +# user to run job as +user: root + +# weekday to run job at +weekday: '*' + +# hour to run job at +hour: '*' + +# minute to run job at +minute: '*' + +# can be False or (mutaly exclusive with weekday/hour/minute) one of 'random_daily' or 'random_weekly' +special_time: False + +# options if 'special_time' is not False +random_options: + weekday: "{{ range(6)|list }}" + hour: "{{ range(1, 22)|list }}" + minute: "{{ range(5, 50)|list }}" +``` diff --git a/defaults/main.yml b/defaults/main.yml index f0e79c2..48d013f 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1 +1,12 @@ -cron: {} +cron: + jobs: {} + defaults: + user: root + weekday: '*' + hour: '*' + minute: '*' + special_time: False + random_options: + weekday: "{{ range(6)|list }}" + hour: "{{ range(1, 22)|list }}" + minute: "{{ range(5, 50)|list }}" diff --git a/tasks/job.yml b/tasks/job.yml index 35b5c5a..958542c 100644 --- a/tasks/job.yml +++ b/tasks/job.yml @@ -1,21 +1,32 @@ - set_fact: - job: '{{ (item.value)|combine(item.value, {"name": item.key}) }}' + job: '{{ {}|combine(cron.defaults, item.value, {"name": item.key}, recursive=True) }}' + randomseed: "{{ inventory_hostname + item.key }}" - name: add cron jobs (random_daily) when: job.special_time == "random_daily" cron: name: "{{ job.name }}" job: "{{ job.job }}" - user: "{{ job.user|d('root') }}" - hour: "{{ 22 | random(start=1, seed=inventory_hostname + job.name) }}" - minute: "{{ 50 | random(start=5, seed=inventory_hostname + job.name) }}" + user: "{{ job.user }}" + hour: "{{ job.random_options.hour | random(seed=(randomseed + 'hour')) }}" + minute: "{{ job.random_options.minute | random(seed=(randomseed + 'minute')) }}" - name: add cron jobs (random_weekly) when: job.special_time == "random_weekly" cron: name: "{{ job.name }}" job: "{{ job.job }}" - user: "{{ job.user|d('root') }}" - weekday: "{{ ( 6 | random(seed=inventory_hostname + job.name) ) }}" - hour: "{{ 22 | random(start=1, seed=inventory_hostname + job.name) }}" - minute: "{{ 50 | random(start=5, seed=inventory_hostname + job.name) }}" + user: "{{ job.user }}" + weekday: "{{ job.random_options.weekday | random(seed=(randomseed + 'weekday')) }}" + hour: "{{ job.random_options.hour | random(seed=(randomseed + 'hour')) }}" + minute: "{{ job.random_options.minute | random(seed=(randomseed + 'minute')) }}" + +- name: add cron jobs (not special) + when: not job.special_time + cron: + name: "{{ job.name }}" + job: "{{ job.job }}" + user: "{{ job.user }}" + weekday: "{{ job.weekday }}" + hour: "{{ job.hour }}" + minute: "{{ job.minute }}" diff --git a/tasks/main.yml b/tasks/main.yml index dc4c817..c9675ff 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,3 +1,3 @@ - include_tasks: file: job.yml - with_dict: "{{ cron }}" + with_dict: "{{ cron.jobs }}"