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 清单文件中添加一个组,然后它将使用这些变量。
我有一个 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 清单文件中添加一个组,然后它将使用这些变量。