Работа с выводом команд в сетевых модулях
Условные операторы в сетевых модулях
Ansible позволяет использовать условные операторы для управления потоком ваших playbook. Модули команд Ansible для сетевого оборудования используют следующие уникальные условные операторы.
-
eq- Равно -
neq- Не равно -
gt- Больше -
ge- Больше или равно -
lt- Меньше -
le- Меньше или равно -
contains- Объект содержит указанный элемент
Условные операторы оценивают результаты команд, выполняемых удаленно на устройстве. После выполнения набора команд задача может использовать аргумент wait_for для оценки результатов перед возвращением управления playbook Ansible.
Например:
---
- name: wait for interface to be admin enabled
eos_command:
commands:
- show interface Ethernet4 | json
wait_for:
- "result[0].interfaces.Ethernet4.interfaceStatus eq connected"
В приведенном выше примере команда show interface Ethernet4 | json выполняется на удалённом устройстве, и результаты оцениваются. Если путь (result[0].interfaces.Ethernet4.interfaceStatus) не равен “connected”, то команда повторяется. Этот процесс продолжается до тех пор, пока условие не будет выполнено или не истечёт число попыток (по умолчанию, это 10 попыток с интервалом в 1 секунду).
Модуль команд также может оценивать более одного набора результатов команд в интерфейсе. Например:
---
- name: wait for interfaces to be admin enabled
eos_command:
commands:
- show interface Ethernet4 | json
- show interface Ethernet5 | json
wait_for:
- "result[0].interfaces.Ethernet4.interfaceStatus eq connected"
- "result[1].interfaces.Ethernet4.interfaceStatus eq connected"
В приведенном выше примере две команды выполняются на удалённом устройстве, и результаты оцениваются. Указав значение индекса результата (0 или 1), правильный вывод результата проверяется с помощью условного оператора.
Аргумент wait_for всегда должен начинаться с result, а затем с индекса команды в [], где 0 - это первая команда в списке команд, 1 - вторая, 2 - третья и так далее.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/network/user_guide/network_working_with_command_output.html