如何从清单文件访问另一个节点的主机?

时间:2019-05-23 11:44:38

标签: ansible

我有一个清晰的清单文件,其中包含“ 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'] \”未定义

1 个答案:

答案 0 :(得分:2)

  

我尝试了{{hostvars [“ clusternode”]}},但没有帮助。

没有名为“ clusternode”的主机。有一个名为“ clusternode”的,您可以从groups字典中获得组成员的列表,如下所示:

---
- debug:
    msg: "{{ groups.clusternode }}"

这将产生“ clusternode”组中的主机列表(给定清单,这将是IP地址列表)。如果“ clusternode”组中有多个主机,则可以使用loop对其进行迭代。如果只有一个节点,则可以使用groups.clusternode.0获取地址。


  

尝试过{{hostvars.clusternode}}

这与您的第一次尝试相同:variable.keyvariable["key"]在Jinja表达式中都做相同的事情。

  

{{ hostvars["clusternode"]["ipv4"]["address"] }}{{ hostvars.clusternode.ipv4.address }}

由于hostvars["clusternode"]不存在,因此您会期望它们失败。