Linux Ansible:在每个主机的不同时间运行cron

Linux Ansible:在每个主机的不同时间运行cron,linux,ubuntu,cron,ansible,Linux,Ubuntu,Cron,Ansible,我需要将cron作业配置为在多台主机上的不同时间运行。 理想情况下,我希望有一个索引来标识我当前正在修改的主机并对其进行偏移 因此,如果我与ansible竞争: HOSTA HOSTB HOSTC 我想将cron配置为这样 0 1 * * * #HOSTA 0 2 * * * #HOSTB 0 3 * * * #HOSTC 您知道如何在不对每个主机的变量进行硬编码的情况下实现它吗?您可以在一系列字典上使用带\u项的循环。然后使用inventory\u主机名或ansible\u主机名筛选适当的

我需要将cron作业配置为在多台主机上的不同时间运行。 理想情况下,我希望有一个索引来标识我当前正在修改的主机并对其进行偏移

因此,如果我与ansible竞争:

HOSTA
HOSTB
HOSTC
我想将cron配置为这样

0 1 * * * #HOSTA
0 2 * * * #HOSTB
0 3 * * * #HOSTC

您知道如何在不对每个主机的变量进行硬编码的情况下实现它吗?

您可以在一系列字典上使用带\u项的循环。然后使用inventory\u主机名或ansible\u主机名筛选适当的项目:

- name: cron jobs
  cron: min=0 hour={{ item.h }} job="echo server {{ item.s }} cron job started" state=present
  when: inventory_hostname == item.s
  with_items:
  - { s: 'hosta', h: 1 }
  - { s: 'hostb', h: 2 }
  - { s: 'hostc', h: 3 }

在每台主机上运行的间隔时间是否必须正好为一小时?例如,您可以使用IP地址中的位来对作业添加一些更改(假设您使用最后一个八位字节并将其除以四)。我想到了这一点,但我希望它是确定性的,而不是依赖于可能更改的IP地址。