如何在 Ansible 中默认从 'all' 中排除库存组?
How to exclude an inventory group from 'all' by default in Ansible?
我正在 ansible 中建立一个小项目,与其他项目共享一个节点。此节点是 CI 运行 节点,应该很少成为剧本的目标。
我想在默认情况下从 all
中排除一个组
我目前的解决方案是建立一个名为旁观者的小组,并将其排除在 运行 all
的所有剧本之外
主持人:
[groupA]
node1
[bystanders]
ci-node
playbook_example:
hosts: all:!bystanders
...
但这很容易出错,或者忘记在某些剧本中排除它,无意中 运行在该节点上设置剧本。
我在别处问过这个问题,Dynamic inventory 提到了脚本。
动态清单 returns 'all' 和 'ungrouped',因此我们可以使用动态清单脚本操纵这些变量的结果。
{
"_meta": {
"hostvars": {}
},
"all": {
"children": [
"ungrouped"
]
},
"ungrouped": {}
}
然而,在那次谈话中提到 'all' 有点反模式,首先避免它可能是个好主意。 'all' 表示全部,在这种情况下,项目特定的任何内容都不应使用 'all'。
所以我认为这回答了我的问题。我会避免使用 all ,如果我真的需要这样做,我会使用动态清单脚本
我正在 ansible 中建立一个小项目,与其他项目共享一个节点。此节点是 CI 运行 节点,应该很少成为剧本的目标。
我想在默认情况下从 all
中排除一个组
我目前的解决方案是建立一个名为旁观者的小组,并将其排除在 运行 all
主持人:
[groupA]
node1
[bystanders]
ci-node
playbook_example:
hosts: all:!bystanders
...
但这很容易出错,或者忘记在某些剧本中排除它,无意中 运行在该节点上设置剧本。
我在别处问过这个问题,Dynamic inventory 提到了脚本。
动态清单 returns 'all' 和 'ungrouped',因此我们可以使用动态清单脚本操纵这些变量的结果。
{
"_meta": {
"hostvars": {}
},
"all": {
"children": [
"ungrouped"
]
},
"ungrouped": {}
}
然而,在那次谈话中提到 'all' 有点反模式,首先避免它可能是个好主意。 'all' 表示全部,在这种情况下,项目特定的任何内容都不应使用 'all'。
所以我认为这回答了我的问题。我会避免使用 all ,如果我真的需要这样做,我会使用动态清单脚本