Ssh 在Ansible中放置组的公共变量的位置

Ssh 在Ansible中放置组的公共变量的位置,ssh,deployment,ansible,Ssh,Deployment,Ansible,我们有一些脚本可以帮助我们在AWS中设置最多6个虚拟机的VPC。现在我想登录到这些机器中的每一台。出于安全原因,我们只能通过SSH访问其中一台,然后通过SSH隧道/代理访问其他机器。因此,在我们的清单中,我们有SSH主机的IP地址,我们称之为红毯,还有一些其他主机,如Elasticsearch、Mongodb和Worker: 现在,我需要告诉每个组,除了Red地毯,使用某些SSH设置。如果这些都适用于所有组,我会将它们放在inventory/group_vars/all.yml中,但现在我必须将

我们有一些脚本可以帮助我们在AWS中设置最多6个虚拟机的VPC。现在我想登录到这些机器中的每一台。出于安全原因,我们只能通过SSH访问其中一台,然后通过SSH隧道/代理访问其他机器。因此,在我们的清单中,我们有SSH主机的IP地址,我们称之为红毯,还有一些其他主机,如Elasticsearch、Mongodb和Worker:

现在,我需要告诉每个组,除了Red地毯,使用某些SSH设置。如果这些都适用于所有组,我会将它们放在inventory/group_vars/all.yml中,但现在我必须将它们放在:

库存/集团变量/服务.yml 库存/组变量/worker.yml 库存/组变量/elasticsearch.yml 库存/集团变量/mongodb.yml
这导致了重复。因此,我想使用include或include_vars从一个公共文件(例如inventory/common.yml)中包含一个或两个变量。然而,当我尝试在上面的任何一个group_var文件中执行此操作时,它不会拾取变量。对于多个组通用的变量,最佳做法是什么?

如果您想使用组变量方法,我建议您添加另一个组,并将依赖组作为子组添加到该组中

#inventory/hosts

[redcarpet]
57.44.113.25

[services]
10.0.1.2

[worker]
10.0.5.77
10.0.1.200

[elasticsearch]
10.0.5.30

[mongodb]
10.0.1.5

[redcarpet_deps:children]
mongodb
elasticsearch
worker
services

现在您可以有一个名为redrupt_deps.yml的组变量文件,他们应该从那里获取变量。

如果您想使用组变量方法,我建议您添加另一个组,并将依赖组作为子组添加到该组中

#inventory/hosts

[redcarpet]
57.44.113.25

[services]
10.0.1.2

[worker]
10.0.5.77
10.0.1.200

[elasticsearch]
10.0.5.30

[mongodb]
10.0.1.5

[redcarpet_deps:children]
mongodb
elasticsearch
worker
services

现在,您可以拥有一个名为redrupt_deps.yml的组VAR文件,他们应该从那里获取VAR。

哦,天哪,这确实是一个非常简单明了的解决方案。我仍然想知道为什么include不起作用,但这当然会解决我眼前的问题。哦,天哪,这确实是一个非常简单明了的解决方案。我仍然想知道为什么include不起作用,但这当然会解决我眼前的问题。