2014-10-05 61 views
1

据我所知,我们可以为特定主机和特定组创建vars,我如何在每个库存文件的基础上按照惯例做同样的事情。库存文件级别的Ansible vars

我有3个库存文件dev/staging/prod。什么是为这些环境设置增值的最佳方式。例如舞台本身,为轨道或API密钥等设置为/etc/environment

此时我每个env有1个主机,所以我可以将它设置为主机变量,但最终我会无法扩展..所以我认为必须有更好的方法?

回答

2

如果我正确理解您的问题,您不确定如何将主机分组并将变量(也可能是任务)应用于组。

看看group_vars and host_vars。这对于重写默认值非常有用。这里有一个例子:

group_vars/all: 
MAX_MEMORY = 16gb 

group_vars/dev 
MAX_MEMORY = 2gb 

或者,你可以把 “group variables” 在您的主机文件(S)。

一般来说,我建议有一个剧本;您在dev/QA/production上运行的配方应尽可能与生产相同。

+0

我可以为不同的库存文件设置不同的组变量吗?我很难理解为什么没有干净的方式来做环境变量。如果我试图遵循最后一行,那么这些envs之间的差异将理想地仅在主机和其他环境变量中,至少在应用程序级别上。也许你最后一点将集团变量放在库存文件中是我正在寻找的。现在我想起它..大多数这样的变量最终成为主机规格..不同的LBs适用于不同的环境等..也许这就是为什么这不是很常见.. – 2014-10-06 06:17:46

+0

设置环境仍然是轨道需要的东西,不确定什么是正确的方式来做到这一点与可能..可能'[all:vars]' – 2014-10-06 06:20:01