如何在Ansible中默认从“全部”中排除库存组?

时间:2018-12-20 12:25:56

标签: ansible continuous-deployment ansible-inventory

我正在ansible中建立一个小项目,并与其他项目共享一个节点。该节点是CI运行器,很少应作为剧本的目标。

默认情况下,我要从all中排除组

我当前拥有的解决方案是建立一个名为旁观者的小组,并将其从所有运行all的剧本中排除掉

主机:

[groupA]
node1
[bystanders]
ci-node

playbook_example:

hosts: all:!bystanders
...

但这很容易出错,或者忘记在某个剧本中无意中排除了该节点上的剧本。

1 个答案:

答案 0 :(得分:0)

我在其他地方问了这个问题,并提到了Dynamic inventory脚本。

动态库存返回“全部”和“未分组”,因此我们可以使用动态库存脚本来操纵这些变量的结果。

{
    "_meta": {
            "hostvars": {}
    },
    "all": {
            "children": [
                    "ungrouped"
            ]
    },
    "ungrouped": {}
 }

但是,在那次谈话中,有人提到“全部”是一种反模式,首先避免使用它是一个好主意。 “全部”表示全部,在这种情况下,项目特定的任何内容都不应使用“全部”。

所以我认为这为我回答了这个问题。我将避免全部使用,以防万一我真的需要这样做,我将使用动态清单脚本