- name: store job data set_fact: job: '{{ {}|combine(cron.defaults, item.value, {"name": item.key}, recursive=True) }}' randomseed: "{{ inventory_hostname + item.key }}" - name: expand special random keywords to real values when: job.special_time in ["random_daily", "random_weekly"] set_fact: job_random_values: weekday: "{% if job.special_time == 'random_weekly' %}{{ job.random_options.weekday | random(seed=(randomseed + 'weekday')) }}{% else %}*{% endif %}" hour: "{{ job.random_options.hour | random(seed=(randomseed + 'hour')) }}" minute: "{{ job.random_options.minute | random(seed=(randomseed + 'minute')) }}" - name: merge random values back into job when: job.special_time in ["random_daily", "random_weekly"] set_fact: job: '{{ {}|combine(job, job_random_values, recursive=True) }}' - name: add cron job users to node-exporter-textfile group when: cron.enable_monitoring ansible.builtin.user: name: '{{ job.user }}' groups: node-exporter-textfile append: yes - name: prepend cronjob monitoring command when: cron.enable_monitoring set_fact: job: '{{ job|combine({"job": "/usr/local/bin/monitor-cronjob.py %s %s %s"%(job.name|quote, ("%s %s * * %s"%(job.minute, job.hour, job.weekday))|quote, job.job|quote)}) }}' - name: add cron jobs cron: name: '{{ job.name }}' job: '{{ job.job }}' user: '{{ job.user }}' weekday: '{{ job.weekday }}' hour: '{{ job.hour }}' minute: '{{ job.minute }}' disabled: '{{ job.disabled }}'