我们的ansible库存结构非常标准,我们有一个主库存文件夹,每个不同站点的子文件夹,其中包含特定站点的主机列表,以及每个站点的group_vars文件夹,我们在其中保留该站点的其他变量/设备:
inventory:
---> site1:
hosts.txt
---> group_vars:
site1.yml
到目前为止,如果我们所有的剧本都在使用它们,我们将尝试仅创建新的清单/站点,但是现在我们已经到达需要在一些已知的剧本会失败(或仅适用于特定剧本)的站点上工作的地步。主机),因此我们想要做的是在清单文件中放置一些标志(即[group:vars]或每个主机),以便可以跳过那些主机。例如
[group1]
host1
host2
host3 playbook1_enabled: true
[group1:vars]
playbook1_enabled: false
这时,应该将playbook1的主机列表过滤为仅host3:
ansible-playbook -i inventory/site1/hosts.txt playbook1.yml --list-hosts
playbook: playbook1.yml
play #1 (all): PLAYBOOK TAGS: []
pattern: [u'all']
hosts (1):
host3
但是,似乎找不到任何可以检查主机的变量值并将其从主机列表中排除的东西。
有没有人知道这是否完全可能? 如果没有,有哪些替代方案?我的意思是,跟踪哪个Playbook可以在哪些站点/主机上运行并自动排除无法运行Playbook的主机的最佳方法是什么?
任何对此事的见识都受到赞赏!