我是 Ansible 的新手,发现它是一个很棒的工具,但我偶然发现了一个让我感到非常困惑的问题。
在我的库存中,只有:
主机 1 主机 2 主机 3
host1 和 host2 都有两个网络接口,其中一个连接到充当路由器的 host3。在我的剧本中,我想要在 host3 上执行一个任务,该任务将配置路由并通过 ping 对其进行测试。为此,我想:
a) 为 host1 和 host2 获取连接到 host3 的网络接口的 IP 地址。连接到 host3 的接口的名称是通过主机变量“routed_if”设置的,它是通过“routed_ip4”设置的 IP。
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 手册的章节,但它并没有真正帮助我那么多。
在debug中,要么使用参数msg
, 或参数var
此外,点符号应该工作
示例的语法是不言自明的。