正在发生的事情
我有一个带有以下代码的jinja2模板
nodes:
{% for host in abc_masters %}
- address: "{{ abc_ip_address }}"
port: "22"
role:
- controlplane
- etcd
hostname_override: "{{ inventory_hostname }}"
user: {{ admin_user }}
docker_socket: /var/run/docker.sock
ssh_key_path: {{ ssh_key_path }}
labels: {}
{% endfor %}
问题是什么
当我运行ansible-playbook命令时,出现以下错误。
致命:[abc-worker-3]:失败! => { “已更改”:错误, “ msg”:“ AnsibleUndefinedVariable:'abc_masters'未定义”}
现在,没有在哪里定义“ abc_masters”变量? 此外,在清单文件夹的hosts文件中,已经提到了abc_masters ...
[abc_masters]
abc-master-0 ansible_ssh_user=administrator ansible_host=192.168.160.101 ansible_port=22 abc_ip_address=192.168.160.101
abc-master-1 ansible_ssh_user=administrator ansible_host=192.168.160.102 ansible_port=22 abc_ip_address=192.168.160.102
期望
我的理解是,jinja2模板应该从hosts文件中获取此变量,并在数组上进行迭代以获取每个主机的详细信息……这是正确的吗?
请指出我想念的地方。我是否需要在其他地方定义此变量?那那个位置是什么?
答案 0 :(得分:2)
abc_masters
是组的名称。使用特殊变量 groups
迭代该组中的主机
{% for host in groups['abc_masters'] %}
组:包含清单中所有组的字典/地图,每个组都有属于它的主机列表