'ansible variables shared with multiple groups if inventory is only localhost
I use ansible to send jobs / configurations to my k8s cluster via the kubectl command on my local machine. I have my inventory file setup so that each cluster is it's own group and each cluster is basically a connection to localhost .
# Inventory File
#
[east.k.example.com]
localhost ansible_connection=local
[east2.k.example.com]
localhost ansible_connection=local
Then in my group_vars directory I have a different file with the name of my group from my inventory file that holds all the different variables for each cluster.
I limit my runs to target only one cluster with the limit option:
ansible-playbook -vv create.yaml -l east2.k.example.com --tags ingress-generate-only
The problem is that when I attempt to use variables in my templates I get variables from the other groups. I'm thinking because each group includes localhost.
Is there a better way to solve this issue? Can I set a flag so that groups only include the variables from the group_var files?
thanks,
Solution 1:[1]
Refactor your inventory to use distinct names:
# Inventory File
#
[east.k.example.com]
east ansible_connection=local
[east2.k.example.com]
east2 ansible_connection=local
This way Ansible will treat them as different hosts, thus not merging variables from different groups.
Solution 2:[2]
In YAML syntax
all:
children:
east.k.example.com:
hosts:
east:
ansible_connection: local
east2.k.example.com:
hosts:
east2:
ansible_connection: local
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Konstantin Suvorov |
| Solution 2 | β.εηοιτ.βε |
