Ansible变量范围冲突

时间:2016-06-15 16:40:22

标签: variables scope ansible ansible-playbook inventory

我有一个ansible设置,看起来像这样

inventories/
    sandbox1
    group_vars/
       all
       sandbox1
pb/
    pb1/
        run_pb1.yml

我也有角色和其他东西,但我认为这足以捕捉到我需要做的事情。

我有一个我在里面定义的变量 foo

inventories/group_vars/all

inventories/group_vars/sandbox1

现在我的问题是每当我打电话

ansible-playbook -i inventories/sandbox1 pb/pb1/run_pb1.yml

Playbook的值为 foo  包含在 inventoryories / group_vars / all ...换句话说,来自 inventoryories / group_vars / sandbox1 的foo值不会覆盖" global /所有"版本

这是实施库存特定变量的正确方法吗?我想避免为变量这样简单的事情创建多个剧本......也就是说,我不想在"所有"内部做这样的事情。文件

default_foo: bar
sandbox1_foo: baz

以及多个剧本,除了他们引用的变量外,它们都是相同的。

有没有办法做我要问的事?

1 个答案:

答案 0 :(得分:1)

group_vars文件夹应包含组的名称,而不是用于添加变量的清单。在sandbox1清单文件中添加一个名为“sandbox1”的组,然后它将使用这些变量。