我正在构建一个 Ansible 剧本来从我的 Cisco 路由器中提取接口信息,然后仅解析名称中带有关键字“Loopback”的接口。这是我的剧本:
---
- name: Check the routers
hosts: myRouters
gather_facts: no
tasks:
- name: pull some router information
cisco.ios.ios_command:
commands: show ip int brief
register: RouterInfo
- name: Parse RouterInfo
ansible.builtin.set_fact:
LoopbackInfo: "{ RouterInfo | select( 'match', 'Loopback' ) | list }"
- name: Print LoopbackInfo
ansible.builtin.debug:
msg: "The value of LoopbackInfo is: {{ LoopbackInfo }}"
剧本运行没有问题,但
Print LoopbackInfo
输出不正确。这只是输出的那一部分:
TASK [Print LoopbackInfo] *******************************************************************************************************
Friday 21 April 2023 18:05:18 +0000 (0:00:00.813) 0:00:03.724 **********
ok: [10.10.10.101] =>
msg: 'The value of LoopbackInfo is: { RouterInfo | select( ''match'', ''Loopback'' ) | list }'
ok: [10.10.10.102] =>
msg: 'The value of LoopbackInfo is: { RouterInfo | select( ''match'', ''Loopback'' ) | list }'
ok: [10.10.10.103] =>
msg: 'The value of LoopbackInfo is: { RouterInfo | select( ''match'', ''Loopback'' ) | list }'
好吧,那可不行。我猜
Parse RouterInfo
块的语法是错误的。 Ansible 没有运行 { RouterInfo | select( 'match', 'Loopback' ) | list }
命令,而是将整个命令 作为字符串 保存在 LoopbackInfo
变量中。但我不确定。有人看到我哪里出错了吗?
仅供参考,我正在运行 Ansible / Ansible-Playbook 版本 2.10.7 谢谢。