Ansible 和库存特定变量

Ansible and inventory specific vars

是否可以声明库存水平的变量?例如,我有一个用于我的开发环境的库存,另一个用于我的生产环境。

我有一些模板,我需要用特定于任一环境的特定变量填充这些模板。

目前我似乎只能在组或主机级别设置这些变量,但我希望它适用于整个清单以避免为我定义的每个组或主机重复我自己!

留在这里供参考,但看看我的另一个答案,有更简单的方法。


我认为这不可能直接实现。您可以直接在清单 中定义变量,但仍然必须根据 host or group.

定义变量

您可以创建一个继承自该清单文件的所有其他组的组,然后将变量分配给该组。

库存文件myInventory:

[some_group]
some_host

[another_group]
another_host

[myInventory:children]
some_group
another_group

[myInventory:vars]
some_var=some_value

单独的库存是个好主意。上面的答案是完全准确的,但我不相信如果你的组被分散在库存文件中,你将无法遵循这种方法,我认为你的问题暗示它们是这样的。

根据您的平台(模式是 AWS),按环境对所有机器进行分组很容易,而且哪个库存或哪些库存拾取它们并不重要。 我只想添加一个环境组变量文件。

如果 group_vars 是您要明确避免的事情,请进行编辑。如果是这种情况,那么适当或创建您自己的清单脚本(向 ec2 添加一个常量变量非常非常容易)。

原来,我之前的回答不太对。有一个更简单的解决方案。只需为 all 组定义变量。我本以为 ansible 会抱怨没有匹配的组定义,但它有效,我刚刚测试过它:

[some_group]
some_host

[another_group]
another_host

[all:vars]
some_var=some_value

但在这种情况下,您确实被迫在清单文件中定义变量,而不能在group_vars/all中定义它,但这应该是显而易见的。