-1

我正在尝试使用 textfsm 解析管理显示平台的数据,因为任何状态为“IOS XR RUN”、“READY”或“OK”的东西都会通过,其他任何东西都会报告失败。我正在使用 selectattr in 选项,但收到以下错误 - “msg”:“任务包含一个带有未定义变量的选项。错误是:'intf_tests_pass'未定义。任何想法为什么这会失败,因为 working_state 变量是定义。

  • 名称:收集管理员显示平台信息 iosxr_command:命令:-管理员显示平台提供程序:“{{ cli }}”注册:platform_result 时间:device_os == 'cisco-ios-xr'

    • 名称:检索要返回的状态 set_fact:working_state:['IOS XR RUN','READY','OK']

    • 名称:解析 platform_result textfsm_parser:文件:templates_textfsm/{{ device_os }}/admin_show_platform.template 内容:“{{ platform_result.stdout.0 }}” 名称:platform_state 何时:

      • platform_result.stdout 已定义
      • platform_result.stdout[0] != 无
      • platform_result.stdout[0] != ""
    • name: 识别通过 set_fact: platform_tests_pass: "{{ ansible_facts.platform_state | selectattr('STATE', 'in', 'working_state') | list }}" when: ansible_facts.platform_state 定义的平台结果

    • 名称:识别失败的平台结果 set_fact:platform_tests_fail:“{{ ansible_facts.platform_state | difference(platform_tests_pass) | list}}” when: ansible_facts.platform_state 已定义

    • 调试:味精:

      • “{{ intf_tests_pass }}”
      • “{{ intf_tests_fail }}”

谢谢,布赖恩

4

1 回答 1

0

根据您发布的输出,您将事实保存到 platform_tests_pass 和 platform_tests_fail,而不是 intf_tests_pass 和 intf_tests_fail,因此这些变量从未真正定义过。

于 2020-04-23T15:58:45.897 回答