Модуль cisco.ios.ios_command – Модуль для выполнения команд на удалённых устройствах.
Примечание
Этот модуль входит в коллекцию cisco.ios (версия 8.0.0).
Если вы используете пакет ansible, эта коллекция, возможно, уже установлена. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install cisco.ios.
Для использования в книге задач укажите: cisco.ios.ios_command.
Новая функция в cisco.ios 1.0.0
Обзор
- Отправляет произвольные команды узлу IOS и возвращает результаты, считанные с устройства. Этот модуль включает аргумент, который заставит модуль дождаться выполнения определённого условия перед возвратом или истечения времени ожидания, если условие не выполнено.
- Этот модуль не поддерживает выполнение команд в режиме конфигурации. Пожалуйста, используйте модуль ios_config для настройки устройств IOS.
Псевдонимы: command
Параметры
Параметр | Комментарии |
|---|---|
commands список / элементы=любой / обязательный | Список команд, которые необходимо отправить на удалённое устройство IOS через настроенный поставщик. Результат выполнения команды возвращается. Если указан аргумент wait_for, модуль не возвращается, пока условие не будет выполнено или не истечёт количество попыток. Если команда, отправленная на устройство, требует ответа на приглашение, можно передать словарь, содержащий команда, ответ и приглашение. Общие ответы — ‘y’ или «\r» (возврат каретки, обязательно в двойных кавычках). См. примеры. |
interval целое число | Настраивает интервал в секундах ожидания между попытками повторного выполнения команды. Если команда не удовлетворяет заданным условиям, интервал определяет время ожидания перед повторной попыткой. По умолчанию: |
match строка | Аргумент match используется совместно с аргументом wait_for для указания политики сопоставления. Допустимые значения: Варианты:
|
retries целое число | Устанавливает количество попыток повторного выполнения команды перед тем, как она будет считана неудачной. Команда выполняется на целевом устройстве при каждой попытке и оценивается по условиям wait_for. По умолчанию: |
wait_for псевдонимы: waitfor список / элементы=строка | Список условий, которые необходимо оценить по результатам выполнения команды. Задача будет ожидать выполнения каждого условия перед выполнением последующих действий. Если условие не выполняется в заданном количестве попыток, задача завершается неудачно. См. примеры. |
Примечания
Примечание
- Проверено на Cisco IOSXE версии 17.3 на CML.
- Этот модуль работает с подключением
network_cli. См. https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html - Для получения дополнительной информации об использовании Ansible для управления сетевыми устройствами, см. руководство по сети Ansible :ref:`Ansible Network Guide <network_guide>`
- Для получения дополнительной информации об использовании Ansible для управления устройствами Cisco см. страницу интеграции Cisco `<https://www.ansible.com/integrations/networks/cisco>`_.
Примеры
- name: Run show version on remote devices
cisco.ios.ios_command:
commands: show version
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "show version"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "Cisco IOS XE Software, Version 17.03.04a\nCisco IOS Software [Amsterdam], Virtual XE Software ... register is 0x2102"
# ],
# "stdout_lines": [
# [
# "Cisco IOS XE Software, Version 17.03.04a",
# "Cisco IOS Software [Amsterdam], Virtual XE Software",
# "..."
# "Configuration register is 0x2102"
# ]
# ]
# }
- name: Run show version and check to see if output contains IOS
cisco.ios.ios_command:
commands: show version
wait_for: result[0] contains IOS
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "show version"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": [
# "result[0] contains IOS"
# ]
# }
# },
# "stdout": [
# "Cisco IOS XE Software, Version 17.03.04a\nCisco IOS Software [Amsterdam], Virtual XE Software ... register is 0x2102"
# ],
# "stdout_lines": [
# [
# "Cisco IOS XE Software, Version 17.03.04a",
# "Cisco IOS Software [Amsterdam], Virtual XE Software",
# "..."
# "Configuration register is 0x2102"
# ]
# ]
# }
- name: Run multiple commands on remote nodes
cisco.ios.ios_command:
commands:
- show version
- show interfaces
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "show version",
# "show interfaces"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "Cisco IOS XE Software, Version 17.03.04a\nCisco IOS Software [Amsterdam], Virtual XE Software Configuration register is 0x2102",
# "Loopback999 is up, line protocol is up ...failures, 0 output buffers swapped out"
# ],
# "stdout_lines": [
# [
# "Cisco IOS XE Software, Version 17.03.04a",
# "Cisco IOS Software [Amsterdam], Virtual XE Software",
# "..."
# "Configuration register is 0x2102"
# ],
# [
# "Loopback999 is up, line protocol is up ",
# " Hardware is Loopback",
# " Description: this is a test",
# " MTU 1514 bytes, BW 8000000 Kbit/sec, DLY 5000 usec, ",
# " reliability 255/255, txload 1/255, rxload 1/255",
# " Encapsulation LOOPBACK, loopback not set",
# " Keepalive set (10 sec)",
# " Last input never, output never, output hang never",
# " Last clearing of \"show interface\" counters never",
# " Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0",
# " Queueing strategy: fifo",
# " Output queue: 0/0 (size/max)",
# " 5 minute input rate 0 bits/sec, 0 packets/sec",
# " 5 minute output rate 0 bits/sec, 0 packets/sec",
# " 0 packets input, 0 bytes, 0 no buffer",
# " Received 0 broadcasts (0 IP multicasts)",
# " 0 runts, 0 giants, 0 throttles ",
# " 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort",
# " 0 packets output, 0 bytes, 0 underruns",
# " Output 0 broadcasts (0 IP multicasts)",
# " 0 output errors, 0 collisions, 0 interface resets",
# " 0 unknown protocol drops",
# " 0 output buffer failures, 0 output buffers swapped out"
# ]
# ]
# }
- name: Run multiple commands and evaluate the output
cisco.ios.ios_command:
commands:
- show version
- show interfaces
wait_for:
- result[0] contains IOS
- result[1] contains Loopback0
# output-
# failed play as result[1] contains Loopback0 is false
# fatal: [iosxeappliance]: FAILED! => {
# "changed": false,
# "failed_conditions": [
# "result[1] contains Loopback0"
# ],
# "invocation": {
# "module_args": {
# "commands": [
# "show version",
# "show interfaces"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": [
# "result[0] contains IOS",
# "result[1] contains Loopback0"
# ]
# }
# },
# "msg": "One or more conditional statements have not been satisfied"
# }
- name: Run commands that require answering a prompt
cisco.ios.ios_command:
commands:
- command: "clear counters GigabitEthernet2"
prompt: 'Clear "show interface" counters on this interface \[confirm\]'
answer: "y"
- command: "clear counters GigabitEthernet3"
prompt: "[confirm]"
answer: "\r"
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# {
# "answer": "y",
# "check_all": false,
# "command": "clear counters GigabitEthernet2",
# "newline": true,
# "output": null,
# "prompt": "Clear \"show interface\" counters on this interface \\[confirm\\]",
# "sendonly": false
# },
# {
# "answer": "\r",
# "check_all": false,
# "command": "clear counters GigabitEthernet3",
# "newline": true,
# "output": null,
# "prompt": "[confirm]",
# "sendonly": false
# }
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "Clear \"show interface\" counters on this interface [confirm]y",
# "Clear \"show interface\" counters on this interface [confirm]"
# ],
# "stdout_lines": [
# [
# "Clear \"show interface\" counters on this interface [confirm]y"
# ],
# [
# "Clear \"show interface\" counters on this interface [confirm]"
# ]
# ]
# }
- name: Run commands with complex values like special characters in variables
cisco.ios.ios_command:
commands:
["{{ 'test aaa group TEST ' ~ user ~ ' ' ~ password ~ ' new-code' }}"]
vars:
user: "dummy"
password: "!dummy"
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "test aaa group group test !dummy new-code"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "User was successfully authenticated."
# ],
# "stdout_lines": [
# [
# "User was successfully authenticated."
# ]
# ]
# }
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
failed_conditions список / элементы=строка | Список условий, которые не выполнены Возвращается: неудача Пример: |
stdout список / элементы=строка | Набор ответов от команд Возвращается: всегда, кроме ошибок низкого уровня (таких как плагин действия) Пример: |
stdout_lines список / элементы=строка | Значение stdout, разбитое на список Возвращается: всегда, кроме ошибок низкого уровня (таких как плагин действия) Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/cisco/ios/ios_command_module.html