3

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

因此,如果我针对以下情况运行 ansible:

HOSTA
HOSTB
HOSTC

我想将cron配置为这样

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

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

4

1 回答 1

4

您可以在字典数组上使用循环 with_items。然后使用 inventory_hostname 或 ansible_hostname 过滤适当的项目:

- 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 }
于 2014-04-12T01:49:04.313 回答