Попытка использовать фильтр «selectattr in» с Ansible playbook, но не получается, как показано в playbook ниже - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь использовать textfsm для синтаксического анализа данных для платформы admin show в том, что все с состоянием 'IOS XR RUN', 'READY' или 'OK' пройдет, а что-либо еще сообщит о сбое. Я использую selectattr в опции, но получаю следующую ошибку - «msg»: «Задача включает в себя параметр с неопределенной переменной. Ошибка была:« intf_tests_pass »не определена. Любые идеи, почему это не удается, так как переменная working_state определены.

  • имя: Собрать admin Показать информацию о платформе iosxr_command: команды: - admin Показать провайдера платформы: "{{cli}}" регистр: platform_result когда: device_os == 'cisco- ios -xr '

    • имя: получить возвращаемый статус set_fact: working_state: [' IOS XR RUN ',' READY ',' OK ']

    • name: parse platform_result textfsm_parser: file: templates_textfsm / {{device_os}} / admin_show_platform.template content: "{{platform_result.stdout.0}}" name: platform_state когда:

      • platform_result.stdout определен
      • platform_result.stdout [0]! = Нет
      • platform_result.stdout [0]! = ""
    • name: идентифицируйте platform_result, который передал set_fact: pla tform_tests_pass: "{{ansible_facts.platform_state | selectattr ('STATE', 'in', 'working_state') | список}} "когда: определено ansible_facts.platform_state

    • имя: определить неудавшийся платформенный результат set_fact: platform_tests_fail:" {{ansible_facts.platform_state | разница (платформа_tests_pass) | список}} "когда: определено ansible_facts.platform_state

    • отладка: msg:

      • " {{intf_tests_pass}} "
      • " {{intf_tests_fail}} "

Спасибо, Брайан

1 Ответ

0 голосов
/ 23 апреля 2020

На основании опубликованных вами результатов вы сохранили факты в platform_tests_pass и platform_tests_fail, а не в intf_tests_pass и intf_tests_fail, поэтому эти переменные фактически никогда не определяются.

...