是否可以将变量声明为库存水平?例如,我有一个用于我的开发环境的清单,另一个用于我的生产环境。
我有模板,我需要填充某些特定于任一环境的变量。
目前我似乎只能在组或主机级别设置这些变量,但是我希望它能够申请整个库存,以避免为我定义的每个组或主机重复自己!
答案 0 :(得分:9)
all
组的变量即可。我本来期望ansible抱怨没有匹配的组定义,但是它有效,我只是测试了它:
[some_group]
some_host
[another_group]
another_host
[all:vars]
some_var=some_value
但在这种情况下,你真的被迫在库存文件中定义了,而不能在group_vars/all
中定义,但这应该是显而易见的。
答案 1 :(得分:2)
请留待此处参考,但请查看我的其他答案,有一种更简单的方法。
我认为这不是直接可能的。您可以直接在 清单中定义变量,但仍需按host或group定义。
您可以创建一个从该库存文件的所有其他组继承的组,然后将变量分配给该组。
广告资源文件myInventory
:
[some_group]
some_host
[another_group]
another_host
[myInventory:children]
some_group
another_group
[myInventory:vars]
some_var=some_value
答案 2 :(得分:1)
单独的库存是一个非常好的主意。上述答案完全准确,但我不相信如果您的群组在库存文件中分开,您将无法遵循该方法,我认为您的问题意味着它们。
根据您的平台(AWS模式),您可以轻松地按环境对所有计算机进行分组,并且无论哪个库存或库存都可以选择它们。 我只想添加一个环境组变量文件。
如果group_vars
是您试图明确避免的内容,请进行修改。如果是这种情况,那么适当或创建自己的库存脚本(向 ec2 添加一个常量变量非常容易)。