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

ansible variables shared with multiple groups if inventory is only localhost

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

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

[east2.k.example.com]
localhost              ansible_connection=local

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

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

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

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

谢谢,

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

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

[east2.k.example.com]
east2 ansible_connection=local

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

采用 YAML 语法

all:
  children:
    east.k.example.com:
      hosts:
        east:
          ansible_connection: local
    east2.k.example.com:
      hosts:
        east2:
          ansible_connection: local