我是 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 手册中有关变量的章节,但它并没有给我带来太大的帮助。