我有一个 Ansible 剧本,可以设置 cron 作业。
由于项目的结构,我们不使用 cron.conf 文件。我们需要每天在特定时间为 AWS 中的不同 EC2 实例运行作业两次。然而,当时钟向前和向后移动时,就会引起问题。
我想确保 cron 作业可以进行,而无需在时钟更改时重新配置 cron 作业。
我知道
CRON_TZ
变量,但是没有 cron.conf 文件,但是,我不确定在哪里可以插入该变量。cron
模块,文档中列出的参数没有列出 CRON_TZ
参数的部分。
关于如何解决此限制有什么建议吗?
我设置 cron 作业的任务:
- name: Set-up cron jobs
cron:
name: "{{ item.name }}"
user: "{{ item.username }}"
minute: "{{ item.time.split(' ')[0] }}"
hour: "{{ item.time.split(' ')[1] }}"
day: "{{ item.time.split(' ')[2] }}"
month: "{{ item.time.split(' ')[3] }}"
weekday: "{{ item.time.split(' ')[4] }}"
job: "{{ item.job }}"
state: "{{ item.state }}"
with_items: "{{jobs}}"
notify: "restart cron"
模块,以下链接中列出的参数没有列出cron
参数的部分。CRON_TZ
某些 Linux 发行版可以 将 TimeZone 与 cron tab 一起使用,对于基于 Red Hat 的发行版,根据 我在哪里可以设置 crontab 将使用的环境变量?,情况可能并非如此。这可能就是为什么没有这样的参数或选项的原因。
关于如何解决此限制有什么建议吗?
也许随后在第二个任务中使用其他模块配置它,例如
lineinfile
。
据我了解,
CRON_TZ
是 crontab 中的一个环境变量,您可以通过 env
模块的参数
name
、value
和 cron
使用 Ansible 设置它。
因此,就您而言,您需要一项额外的任务来说明:
- name: Creates an entry like "CRON_TZ=Europe/Brussels" on top of crontab
ansible.builtin.cron:
name: CRON_TZ
env: yes
value: Europe/Brussels