Ansible和库存特定的变量

时间:2015-02-11 06:59:13

标签: ansible

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

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

目前我似乎只能在组或主机级别设置这些变量,但是我希望它能够申请整个库存,以避免为我定义的每个组或主机重复自己!

3 个答案:

答案 0 :(得分:9)

事实证明,我之前的回答并不是那么正确。有一个更简单的解决方案。只需定义all组的变量即可。我本来期望ansible抱怨没有匹配的组定义,但是它有效,我只是测试了它:

[some_group]
some_host

[another_group]
another_host

[all:vars]
some_var=some_value

但在这种情况下,你真的被迫在库存文件中定义了,而不能在group_vars/all中定义,但这应该是显而易见的。

答案 1 :(得分:2)

请留待此处参考,但请查看我的其他答案,有一种更简单的方法。


我认为这不是直接可能的。您可以直接在 清单中定义变量,但仍需按hostgroup定义。

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

广告资源文件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 添加一个常量变量非常容易)。