Ansible Требуется справка по Regex: невозможно получить вывод и назначить переменную set_fact - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь захватить счетчик «CR C Input Error» и присвоить его переменной «crc_count», однако значение этой переменной отображается в виде пустой строки вместо ("crc_count": ""). Чего мне здесь не хватает?

Код:

- name: Checking CRC Errors on the Interfaces
  nxos_command:
      commands:
              - show interface ethernet 1/1 counters detailed all
  register: crc_output
- debug: var=crc_output.stdout_lines[0][50]
- set_fact: crc_count= "{{ crc_output.stdout_lines[0][50] | regex_search('(\d{0,20}$)') }}"

- debug:
        msg: "{{ crc_count }}"

Вывод строки, для которого я хочу запустить регулярное выражение:

"crc_output.stdout_lines[0][50]": "  10.                  Input CRC Errors: = 4272"

Вывод, который я хочу получить:

crc_count = "4272"

Подробный вывод Playbook:

TASK [debug] **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
task path: /ansible/saurasar/nxos.crc.check.yml:19
ok: [ord12-pob-c1u1-dci-1.uspp1.oraclecloud.com] => {
    "crc_output.stdout_lines[0][50]": "  10.                  Input CRC Errors: = 4272"
}

TASK [set_fact] ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
task path: /ansible/xxxx/nxos.crc.check.yml:20
ok: [cisco.nexus.switch] => {"ansible_facts": {"_raw_params": "\"4272\"", "crc_count": ""}, "changed": false}

TASK [debug] **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
task path: /ansible/xxxxx/nxos.crc.check.yml:22
ok: [cisco.nexus.switch] => {
    "msg": ""
}
META: ran handlers
META: ran handlers

PLAY RECAP ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
<cisco.nexus.switch> : ok=5    changed=0    unreachable=0    failed=0

1 Ответ

0 голосов
/ 09 марта 2020

Попробуйте, как показано ниже

 - set_fact:
     crc_count: "{{ result.stdout | regex_replace('^.*Input CRC Errors: = (.*)$', '\\1') }}"

Я попытался с вашим примером и получил, как показано ниже

ok: [localhost] => {"ansible_facts": {"crc_count": "4272"}, "изменено": false}

...