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

问题描述 投票:1回答:1

我们有一些脚本可以帮助我们在AWS中设置最多6个虚拟机的VPC。现在我想登录这些机器。出于安全原因,我们只能通过SSH访问其中一个,然后通过隧道/代理访问其他计算机。所以在我们的库存中,我们有SSH主机的IP地址(我们称之为Redcarpet)和其他一些主机,如Elasticsearch,Mongodb和Worker:

#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文件中执行此操作时,它不会获取变量。使用多个组共有的变量的最佳实践是什么?

ssh deployment ansible
1个回答
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文件,他们应该从那里获取变量。

© www.soinside.com 2019 - 2024. All rights reserved.