如何在 Ansible cron 模块中设置时区?

问题描述 投票:0回答:2

我有一个 Ansible 剧本,可以设置 cron 作业。
由于项目的结构,我们不使用 cron.conf 文件。我们需要每天在特定时间为 AWS 中的不同 EC2 实例运行作业两次。然而,当时钟向前和向后移动时,就会引起问题。

我想确保 cron 作业可以进行,而无需在时钟更改时重新配置 cron 作业。

我知道

CRON_TZ
变量,但是没有 cron.conf 文件,但是,我不确定在哪里可以插入该变量。
该项目使用 Ansible
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"
amazon-web-services automation ansible cron cron-task
2个回答
0
投票

该项目使用Ansible

cron
模块,以下链接中列出的参数没有列出
CRON_TZ
参数的部分。

某些 Linux 发行版可以 将 TimeZone 与 cron tab 一起使用,对于基于 Red Hat 的发行版,根据 我在哪里可以设置 crontab 将使用的环境变量?,情况可能并非如此。这可能就是为什么没有这样的参数或选项的原因。

关于如何解决此限制有什么建议吗?

也许随后在第二个任务中使用其他模块配置它,例如

lineinfile


0
投票

据我了解,

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
© www.soinside.com 2019 - 2024. All rights reserved.