我在常规推送模式中使用了Ansible,其库存中有多个组。我有“工作站”和“服务器”以及其他一些东西。
现在使用ansible-pull
我已经向“工作站”推出了一个cron
作业,它将拉出一个git存储库,然后将localhost.yml
应用于自己。这工作正常,但我希望将不同的角色映射到不同的组。
我唯一的想法是将不同的cron
作业推广到不同的计算机并拥有workstations.yml
剧本等等。
让Ansible找出(有库存或变量)主机所属的组是否明智?我想可以用主机名定义列表字典。然后我这样做:
- role: workstation
when: ansible_hostname in inventory['workstations']
- role: laptop
when: ansible_hostname in inventory['laptops']
这是一个很好的解决方案,还是我应该做些更好的事情?
答案 0 :(得分:1)
默认ansible-pull
在调用-l localhost,node-name,127.0.0.1
时附加ansible-playbook
参数。
这样你可以拥有库存:
[workstations]
node1
[laptops]
node2
和剧本local.yml
:
- hosts: all
roles:
- generic
- hosts: workstations
roles:
- workstation
- hosts: laptops
roles:
- laptop
由于-l
仅generic+laptops
播放将应用于node2
和generic+workstations
至node1
。将跳过
跳过:没有匹配的主机