Ansible变量范围冲突

Ansible variable scope clash

我有一个 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

剧本是运行,值为foo 包含在 inventories/group_vars/all... 换句话说,来自 inventories/group_vars/sandbox1 "global/all"版本。

这是实施库存特定变量的正确方法吗?我想避免为像变量更改这样简单的事情创建多个剧本......即,我不想在 "all" 文件

中做这样的事情
default_foo: bar
sandbox1_foo: baz

连同多个剧本,除了它们引用的变量外,它们是相同的。

有什么方法可以满足我的要求吗?

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