arista.eos.eos_command – Выполнение произвольных команд на устройстве Arista EOS
Примечание
Этот плагин входит в коллекцию arista.eos (версия 1.2.0).
Для его установки используйте: ansible-galaxy collection install arista.eos.
Для использования в книге задач укажите: arista.eos.eos_command.
Новое в версии 1.0.0: модуля arista.eos
Описание
- Отправляет произвольный набор команд на узел EOS и возвращает результаты, считанные с устройства. В этом модуле есть аргумент, который заставит модуль ждать выполнения определённого условия перед возвратом или вызовет таймаут, если условие не выполнено.
Примечание
У этого модуля есть соответствующий плагин действий.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| commands список / элементы=сырой / обязательный | Команды, которые нужно отправить на удаленное устройство EOS через настроенный поставщик. Результирующий вывод команды возвращается. Если указан аргумент wait_for, модуль не возвращает значение, пока условие не будет выполнено или не будет превышено количество повторных попыток. Если для отправленной на устройство команды требуется ответ на запрос, можно передать словарь, содержащий команду, ответ и запрос. Общие ответы — 'y' или "\r" (возврат каретки, должен быть в двойных кавычках). Смотрите примеры ниже. | ||
| interval целое число | Значение по умолчанию: 1 | Настраивает интервал в секундах ожидания между повторными попытками выполнения команды. Если команда не удовлетворяет указанному условию, интервал указывает время ожидания перед новой попыткой выполнения команды. | |
| match строка |
| Аргумент match используется совместно с аргументом wait_for для указания политики соответствия. Допустимые значения — all или any. Если значение установлено в all, все условия в wait_for должны быть выполнены. Если значение установлено в any, должно быть выполнено только одно из условий. | |
| provider словарь | Устарело Начиная с Ansible 2.5, рекомендуется использовать connection: network_cli. Начиная с Ansible 2.6, рекомендуется использовать connection: httpapi для eAPI.Этот параметр будет удален в выпуске после 2022-06-01. Дополнительная информация в руководстве EOS Platform Options. Объект словаря, содержащий данные подключения. | ||
| auth_pass строка | Указывает пароль для входа в привилегированный режим на удаленном устройстве, если это необходимо. Если authorize равно false, этот аргумент не влияет. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_AUTH_PASS. | ||
| authorize логическое значение |
| Указывает модулю войти в привилегированный режим на удаленном устройстве перед отправкой каких-либо команд. Если не указано, устройство попытается выполнить все команды в режиме без привилегий. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_AUTHORIZE. | |
| host строка | Указывает имя хоста DNS или адрес для подключения к удаленному устройству через указанный транспорт. Значение хоста используется в качестве адреса назначения для транспорта. | ||
| password строка | Указывает пароль для аутентификации подключения к удаленному устройству. Это общий аргумент, используемый для транспортов cli или eapi. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_PASSWORD. | ||
| port целое число | Значение по умолчанию: 0 | Указывает порт для создания подключения к удаленному устройству. Это значение применимо к транспорту cli или eapi. Значение порта по умолчанию соответствует обычному порту для соответствующего транспорта, если он не указан в задаче (cli=22, http=80, https=443). | |
| ssh_keyfile путь | Указывает файл SSH-ключа для аутентификации подключения к удаленному устройству. Этот аргумент используется только для транспортов cli. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_SSH_KEYFILE. | ||
| timeout целое число | Указывает таймаут в секундах для связи с сетевым устройством для подключения или отправки команд. Если таймаут превышен до завершения операции, модуль выдаст ошибку. | ||
| transport строка |
| Настраивает транспортное соединение для подключения к удаленному устройству. | |
| use_proxy логическое значение |
| Если no, переменные окружения http_proxy и https_proxy будут проигнорированы. | |
| use_ssl логическое значение |
| Настраивает transport для использования SSL, если значение установлено в yes только когда transport=eapi. Если аргумент transport не eapi, это значение игнорируется. | |
| username строка | Настраивает имя пользователя для аутентификации подключения к удаленному устройству. Это значение используется для аутентификации входа в CLI или аутентификации eAPI в зависимости от используемого транспорта. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_USERNAME. | ||
| validate_certs логическое значение |
| Если no, сертификаты SSL не будут проверены. Это следует использовать только на контролируемых сайтах с самозаверяемыми сертификатами. Если аргумент transport не eapi, это значение игнорируется. | |
| retries целое число | Значение по умолчанию: 10 | Указывает количество попыток выполнения команды, прежде чем она будет считаться неудачной. Команда выполняется на целевом устройстве при каждой попытке и оценивается по условиям wait_for. | |
| wait_for список / элементы=строка | Указывает, что следует оценивать из вывода команды и какие условия применять. Этот аргумент заставит задачу подождать выполнения определённого условия перед продолжением. Если условие не выполняется к указанному количеству попыток, задача завершается ошибкой. Примечание — с wait_for значение в result['stdout'] может быть доступно с помощью result, то есть для доступа к result['stdout'][0] используйте result[0]. Смотрите примеры.псевдонимы: waitfor | ||
Примечания
Примечание
- Тестировалось на EOS 4.15
- Для информации об использовании CLI, eAPI и привилегированного режима обратитесь к руководству по параметрам платформы EOS.
- Для получения дополнительной информации об использовании Ansible для управления сетевыми устройствами обратитесь к Руководству по Ansible для сетей
- Для получения дополнительной информации об использовании Ansible для управления устройствами Arista EOS обратитесь к странице интеграции Arista.
Примеры
- name: run show version on remote devices
arista.eos.eos_command:
commands: show version
- name: run show version and check to see if output contains Arista
arista.eos.eos_command:
commands: show version
wait_for: result[0] contains Arista
- name: run multiple commands on remote nodes
arista.eos.eos_command:
commands:
- show version
- show interfaces
- name: run multiple commands and evaluate the output
arista.eos.eos_command:
commands:
- show version
- show interfaces
wait_for:
- result[0] contains Arista
- result[1] contains Loopback0
- name: run commands and specify the output format
arista.eos.eos_command:
commands:
- command: show version
output: json
- name: using cli transport, check whether the switch is in maintenance mode
arista.eos.eos_command:
commands: show maintenance
wait_for: result[0] contains 'Under Maintenance'
- name: using cli transport, check whether the switch is in maintenance mode using
json output
arista.eos.eos_command:
commands: show maintenance | json
wait_for: result[0].units.System.state eq 'underMaintenance'
- name: using eapi transport check whether the switch is in maintenance, with 8 retries
and 2 second interval between retries
arista.eos.eos_command:
commands: show maintenance
wait_for: result[0]['units']['System']['state'] eq 'underMaintenance'
interval: 2
retries: 8
provider:
transport: eapi
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| failed_conditions список / элементы=строка | неудачные | Список условных выражений, которые завершились неудачей Пример: ['...', '...'] |
| stdout список / элементы=строка | всегда, кроме ошибок низкого уровня (например, плагин действия) | Набор ответов от команд Пример: ['...', '...'] |
| stdout_lines список / элементы=строка | всегда, кроме ошибок низкого уровня (например, плагин действия) | Значение stdout, разделенное на список Пример: [['...', '...'], ['...'], ['...']] |
Авторы
- Peter Sprygada (@privateip)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/arista/eos/eos_command_module.html