如果库存仅为本地主机,则与多个组共享 ansible 变量

iot*_*322 4 ansible kubernetes ansible-inventory

我使用 ansible 通过本地机器上的 kubectl 命令将作业/配置发送到我的 k8s 集群。我有我的清单文件设置,所以每个集群都是它自己的组,每个集群基本上是到 localhost 的连接。

# Inventory File
#
[east.k.example.com]
localhost              ansible_connection=local

[east2.k.example.com]
localhost              ansible_connection=local
Run Code Online (Sandbox Code Playgroud)

然后在我的 group_vars 目录中,我有一个不同的文件,我的组名来自我的清单文件,该文件包含每个集群的所有不同变量。

我使用 limit 选项将运行限制为仅针对一个集群: ansible-playbook -vv create.yaml -l east2.k.example.com --tags ingress-generate-only

问题是,当我尝试在模板中使用变量时,我会从其他组中获取变量。我在想是因为每个组都包含本地主机。

有没有更好的方法来解决这个问题?我可以设置一个标志,以便组只包含 group_var 文件中的变量吗?

谢谢,

Kon*_*rov 6

重构您的库存以使用不同的名称:

# Inventory File
#
[east.k.example.com]
east ansible_connection=local

[east2.k.example.com]
east2 ansible_connection=local
Run Code Online (Sandbox Code Playgroud)

这样 Ansible 会将它们视为不同的主机,因此不会合并来自不同组的变量。