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

时间:2013-12-18 10:33:12

标签: linux ubuntu cron ansible

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

所以,如果我对:

运行ansible
HOSTA
HOSTB
HOSTC

我想将cron配置为像这样

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

如果没有对每个主机的变量进行硬编码,你知道如何实现它吗?

1 个答案:

答案 0 :(得分: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 }