如果库存仅是本地主机,则与多个组共享的 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
我使用 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