我有一个清晰的清单文件,其中包含“ nfsserver”和“ clusternode” IP。我正在运行“ nfsserver”角色,并且需要以“ nfsserver”角色访问“ clusternode” ip。我可以使用什么命令?
我尝试了{{ hostvars["clusternode"] }}
,但没有帮助。尝试过{{ hostvars.clusternode }}
,{{ hostvars["clusternode"]["ipv4"]["address"] }}
和{{ hostvars.clusternode.ipv4.address }}
。什么都没有帮助
host_inventory:
[clusternode]
192.168.125.21
[nfsserver]
192.168.125.22
预期:192.168.125.21
实际:错误是:\“ hostvars ['clusternode'] \”未定义
答案 0 :(得分:2)
我尝试了{{hostvars [“ clusternode”]}},但没有帮助。
没有名为“ clusternode”的主机。有一个名为“ clusternode”的组,您可以从groups
字典中获得组成员的列表,如下所示:
---
- debug:
msg: "{{ groups.clusternode }}"
这将产生“ clusternode”组中的主机列表(给定清单,这将是IP地址列表)。如果“ clusternode”组中有多个主机,则可以使用loop
对其进行迭代。如果只有一个节点,则可以使用groups.clusternode.0
获取地址。
尝试过{{hostvars.clusternode}}
这与您的第一次尝试相同:variable.key
和variable["key"]
在Jinja表达式中都做相同的事情。
{{ hostvars["clusternode"]["ipv4"]["address"] }}
和{{ hostvars.clusternode.ipv4.address }}
由于hostvars["clusternode"]
不存在,因此您会期望它们失败。