Ansible和特定于存货的VAR

Ansible和特定于存货的VAR,ansible,Ansible,是否可以声明库存水平的变量?例如,我有一个用于开发环境的清单,另一个用于生产环境 我有一些模板需要填充特定于任一环境的某些变量 目前看来,我只能在组或主机级别设置这些变量,但我希望它适用于整个库存,以避免重复我定义的每个组或主机 将此留作参考,但请查看我的其他答案,有一种更简单的方法。 我认为这是不可能的。您可以在库存中直接定义变量,但它们仍然必须根据或定义 您可以创建一个从该清单文件的所有其他组继承的组,然后将变量分配给该组 库存文件myInventory: [some_group] som

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

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


目前看来,我只能在组或主机级别设置这些变量,但我希望它适用于整个库存,以避免重复我定义的每个组或主机

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


我认为这是不可能的。您可以在库存中直接定义变量,但它们仍然必须根据或定义

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

库存文件
myInventory

[some_group]
some_host

[another_group]
another_host

[myInventory:children]
some_group
another_group

[myInventory:vars]
some_var=some_value

分开盘点是个好主意。上面的答案完全准确,但我不相信如果你的团队在库存文件中分开,你将无法遵循这种方法,我认为你的问题暗示他们是这样的

根据您的平台(模式为AWS),您可以轻松地按环境对所有机器进行分组,而不管是哪种库存或库存将它们取出来我只想添加一个环境组变量文件。


如果
group\u vars
是您试图明确避免的内容,请进行编辑。如果是这样的话,请选择适当的或创建您自己的清单脚本(将常量变量添加到ec2脚本中非常简单)。

事实证明,我以前的答案并不正确。有一个更简单的解决办法。只需为
all
组定义变量。我本以为没有匹配的组定义,但它是有效的,我只是测试了它:

[some_group]
some_host

[another_group]
another_host

[all:vars]
some_var=some_value


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

这是我目前使用的解决方案。只是对我来说似乎不干净,因为现在我需要记住向这个
儿童组添加任何新组。希望Ansible能在即将发布的版本中解决这个问题。我同意,这很容易出错。我刚刚测试了一些东西,它是有效的。看看我的另一个答案,这是一个更简单的解决办法。谢谢,这正是我想要的。