使用Ansible Pull进行主机名映射的角色

时间:2018-03-30 06:16:11

标签: ansible

我在常规推送模式中使用了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']

这是一个很好的解决方案,还是我应该做些更好的事情?

1 个答案:

答案 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

由于-lgeneric+laptops播放将应用于node2generic+workstationsnode1。将跳过

与当前节点无关的播放
  

跳过:没有匹配的主机