我们有一些脚本可以帮助我们在AWS中设置最多6个虚拟机的VPC。现在我想登录这些机器。出于安全原因,我们只能通过SSH访问其中一个,然后通过隧道/代理访问其他计算机。因此,在我们的清单中,我们有SSH主机的IP地址(我们称之为 Redcarpet )和其他一些主机,如 Elasticsearch , Mongodb 和< EM>工人:
#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使用某些SSH设置。如果这些适用于所有群体,我会将它们放在inventory/group_vars/all.yml
中,但现在我必须将它们放入:
inventory/group_vars/services.yml
inventory/group_vars/worker.yml
inventory/group_vars/elasticsearch.yml
inventory/group_vars/mongodb.yml
导致重复。因此,我想使用include
或include_vars
来包含公共文件中的一个或两个变量(例如inventory/common.yml
)。但是,当我尝试在上面的任何group_var文件中执行此操作时,它不会获取变量。使用多个组共有的变量的最佳实践是什么?
答案 0 :(得分:4)
如果您想使用group_vars方法,我建议您添加另一个组,并将依赖组作为子组添加到该组中。
#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
现在你可以拥有一个名为redcarpet_deps.yml
的group_vars文件,他们应该从那里获取变量。