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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Ansible中为组添加公共变量的位置相关的知识,希望对你有一定的参考价值。

我们有一些脚本可以帮助我们在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文件中执行此操作时,它不会获取变量。使用多个组共有的变量的最佳实践是什么?

答案

如果您想使用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文件,他们应该从那里获取变量。

以上是关于在Ansible中为组添加公共变量的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有临时表的 SQL 查询中为组添加序列号

如何在 Spring sec 中为组使用属性:hasAnyRole 的授权标签

在ARM模板中为私有nuget feed添加身份验证

为组中的每个案例选择一个非重复控件

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

在另一个模块中为 EC2 添加指定子网 - AWS Terraform -