我需要配置一个 cron 作业以在多个主机上的不同时间运行。理想情况下,我希望有一个索引来标识我当前正在修改的主机并对其进行偏移。
因此,如果我针对以下情况运行 ansible:
HOSTA
HOSTB
HOSTC
我想将cron配置为这样
0 1 * * * #HOSTA
0 2 * * * #HOSTB
0 3 * * * #HOSTC
您知道如何在不为每个主机硬编码变量的情况下实现它吗?
您可以在字典数组上使用循环 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 }