如何在我的 Ansible-Playbook 中正确使用这个 ansible.builtin.set_fact 命令?

问题描述 投票:0回答:0

我正在构建一个 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 谢谢。

parsing ansible syntax jinja2
© www.soinside.com 2019 - 2024. All rights reserved.