在Ansible中为组添加公共变量的位置

时间:2017-12-19 15:36:11

标签: ssh deployment ansible

我们有一些脚本可以帮助我们在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

导致重复。因此,我想使用includeinclude_vars来包含公共文件中的一个或两个变量(例如inventory/common.yml)。但是,当我尝试在上面的任何group_var文件中执行此操作时,它不会获取变量。使用多个组共有的变量的最佳实践是什么?

1 个答案:

答案 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文件,他们应该从那里获取变量。