Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ansible中将组的交集指定为组变量文件_Ansible - Fatal编程技术网

在ansible中将组的交集指定为组变量文件

在ansible中将组的交集指定为组变量文件,ansible,Ansible,我有一些特定的变量需要根据ansible中组的交点应用。例如,如果服务器同时处于prod模式且具有网站功能,我可以使用tag\u function\u website:&tag\u mode\u prod在剧本中指定它。这很好,但是如果我需要为具有交叉点特定变量的交叉点创建一个组vars文件(即,我不想对dev和prod使用相同的db,但对于不同函数的框,我也有不同的dbs),我该怎么办呢。我不能在文件名中使用符号AND,那么我如何创建一个group vars文件来指定刚好到达我想要的交叉点的框

我有一些特定的变量需要根据ansible中组的交点应用。例如,如果服务器同时处于prod模式且具有网站功能,我可以使用
tag\u function\u website:&tag\u mode\u prod
在剧本中指定它。这很好,但是如果我需要为具有交叉点特定变量的交叉点创建一个组vars文件(即,我不想对dev和prod使用相同的db,但对于不同函数的框,我也有不同的dbs),我该怎么办呢。我不能在文件名中使用符号AND,那么我如何创建一个group vars文件来指定刚好到达我想要的交叉点的框呢?

也许我不是真的在回答你的问题,而是在与Ansible分享我的一些经验

首先,你应该考虑为不同的环境(你提到DEV和PROD)有单独的库存。我也从单一库存开始,我发现这个建议绝对令人惊讶:


以您所使用的数据库为例,最好使用单独的变量(即hrDb和acctDb)进行引用。

我有一个类似的目标,我能够想出一些似乎有效的方法。这取决于Marcin的观察,但我将充实一些细节。如果您在prod和stg之间拆分库存,那么您可以执行以下操作

在产品清单中,定义以下组:

[prod_website]
#hosts go here...

[website:children]
prod_website
然后在stg清单中,定义类似的组:

[stg_website]
#hosts go here...

[website:children]
stg_website

然后,在您的组变量中,您将在prod\u网站和stg\u网站下创建组交集变量。当您调用ansible并指定要使用的资源清册时,它将拉入您想要的组交叉点变量,但在您的剧本中,您仍然可以引用prod和stg中的通用网站组。

与其只是发布链接,还不如直接在您的答案中包含相关文本。如果这个链接停止工作,你的答案就没那么有用了。我知道,但这都是通过ec2.py完成的,按照Ansible docs的建议,使用ec2中的动态清单。我仍然需要一种在十字路口区分的方法。你有没有找到解决方法?