Ansible:主机变量引用混淆

Ansible:主机变量引用混淆

我是 Ansible 的新手,发现它是一个很棒的工具,但我偶然发现了一个令我非常困惑的问题。

我的库存里只有:

主机1 主机2 主机3

host1 和 host2 都有两个网络接口,其中一个连接到充当路由器的 host3。在我的剧本中,我想要在 host3 上执行一项任务,该任务将配置路由并通过 ping 进行测试。为了做到这一点,我想要:

a) 获取 host1 和 host2 连接到 host3 的网络接口的 IP 地址。连接到 host3 的接口的名称通过主机变量“routed_if”设置,其 IP 通过“routed_ip4”设置。

b) 使用这些变量来设置路由并从 host1 向 host2 发送一些 ping 以验证它是否有效。

我决定这样做来调试这些变量:

(...)
- debug:
   var: "{{ hostvars['host1']['routed_ip4'] }}"

我得到的是:

ok: [host3] => {
"192.168.1.1/24": "VARIABLE IS NOT DEFINED!"
}

这很奇怪。IP“192.168.1.1”是通过主机变量设置的正确值(对于 host1),但它被显示为字典中的键。我期望得到的只是“192.168.1.1/24”(字面意思)。

我阅读了 ansible 手册中有关变量的章节,但它并没有给我带来太大的帮助。

答案1

调试,要么使用参数信息

    msg: "{{ hostvars['host1']['routed_ip4'] }}"

或参数变量

    var: hostvars['host1']['routed_ip4']

此外,点符号应该管用

    var: hostvars.host1.routed_ip4

示例的语法是不言自明的。

相关内容