ios_config – Управление разделами конфигурации Cisco IOS
Новая в версии 2.1.
Обзор
- Конфигурации Cisco IOS используют простой синтаксис отступов блоков для сегментации конфигурации на разделы. Этот модуль предоставляет реализацию для работы с разделами конфигурации IOS детерминированным способом.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| after - | Упорядоченный набор команд, которые добавляются в конец стека команд, если необходимо внести изменения. Как и в случае с before, это позволяет разработчику playbook добавить набор команд для выполнения после исходного набора команд. | ||
| auth_pass строка | Устарело Начиная с Ansible 2.5, рекомендуется использовать connection: network_cli и become: yes с become_pass. Дополнительную информацию можно найти в руководстве IOS Platform Options. Указывает пароль для входа в привилегированный режим на удалённом устройстве, если это необходимо. Если authorize равно false, то этот аргумент ничего не делает. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_AUTH_PASS. | ||
| authorize логическое значение |
| Устарело Начиная с Ansible 2.5, рекомендуется использовать connection: network_cli и become: yes. Дополнительную информацию можно найти в руководстве IOS Platform Options. Инструктирует модуль войти в привилегированный режим на удалённом устройстве перед отправкой любых команд. Если не указано, устройство попытается выполнить все команды в режиме без привилегий. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_AUTHORIZE вместо. | |
| backup логическое значение добавлен в 2.2 |
| Этот аргумент заставит модуль создать полную резервную копию текущего running-config с удалённого устройства перед внесением каких-либо изменений. Если значение backup_options не задано, файл резервной копии записывается в папку backup в корневом каталоге playbook или корневом каталоге роли, если playbook является частью роли ansible. Если каталог не существует, он создаётся. | |
| backup_options словарь добавлен в 2.8 | Это объект dict, содержащий настраиваемые параметры, связанные с путём к файлу резервной копии. Значение этого параметра считывается только когда backup установлено в yes. Если backup установлено в no, этот параметр будет проигнорирован. | ||
| dir_path путь | Этот параметр предоставляет путь, заканчивающийся именем каталога, в котором будет храниться конфигурационный файл резервной копии. Если каталог не существует, он будет сначала создан, а имя файла будет либо значением filename, либо именем файла по умолчанию, как описано в описании параметров filename. Если значение пути не задано, в текущем рабочем каталоге будет создан каталог backup, и конфигурация резервной копии будет скопирована в filename в каталоге backup. | ||
| filename - | Имя файла, которое будет использоваться для хранения конфигурации резервной копии. Если имя файла не указано, оно будет сгенерировано на основе имени хоста, текущего времени и даты в формате <имя_хоста>_config.<дата>@<время>. | ||
| before - | Упорядоченный набор команд, которые добавляются в стек команд, если необходимо внести изменения. Это позволяет разработчику playbook выполнить конфигурационные команды до внесения каких-либо изменений, не влияя на то, как набор команд сопоставляется с системой. | ||
| defaults логическое значение добавлен в 2.2 |
| Этот аргумент указывает, нужно ли собирать все значения по умолчанию при получении конфигурации удалённого устройства. При включении, модуль получит текущую конфигурацию, выполнив команду show running-config all. | |
| diff_against - добавлен в 2.4 |
| При использовании аргумента командной строки ansible-playbook --diff, модуль может генерировать разницы относительно различных источников.Если этот параметр настроен как startup, модуль вернёт разницу между running-config и startup-config. Если этот параметр настроен как intended, модуль вернёт разницу между running-config и конфигурацией, предоставленной в аргументе intended_config. Если этот параметр настроен как running, модуль вернёт разницу до и после running-config по отношению к любым изменениям, внесённым в конфигурацию устройства. | |
| diff_ignore_lines - добавлен в 2.4 | Используйте этот аргумент для указания одной или нескольких строк, которые должны быть проигнорированы во время сравнения. Это используется для строк в конфигурации, которые автоматически обновляются системой. Этот аргумент принимает список регулярных выражений или точных совпадений строк. | ||
| intended_config - добавлен в 2.4 | intended_config предоставляет базовую конфигурацию, которой должен соответствовать узел, и используется для проверки конечной running-config. Этот аргумент не будет изменять какие-либо настройки на удалённом устройстве и строго используется для проверки соответствия текущей конфигурации устройства. При указании этого аргумента, задача также должна изменить значение diff_against и установить его в intended. | ||
| lines - | Упорядоченный набор команд, которые должны быть настроены в разделе. Команды должны быть точно такими же, как и в конфигурации running-config устройства. Обратите внимание на синтаксис команд конфигурации, так как некоторые команды автоматически изменяются анализатором конфигурации устройства. псевдонимы: команды | ||
| match - |
| Инструктирует модуль, как выполнить сопоставление набора команд с текущей конфигурацией устройства. Если match установлен в line, команды сопоставляются построчно. Если match установлен в strict, строки команд сопоставляются относительно позиции. Если match установлен в exact, строки команд должны быть точным совпадением. Наконец, если match установлен в none, модуль не будет пытаться сравнить исходную конфигурацию с текущей конфигурацией на удалённом устройстве. | |
| multiline_delimiter - добавлен в 2.3 | Значение по умолчанию: "@" | Этот аргумент используется при отправке многострочного конфигурационного элемента на устройство IOS. Он указывает символ, который нужно использовать в качестве разделителя. Это относится только к действию конфигурации. | |
| parents - | Упорядоченный набор родителей, которые однозначно идентифицируют раздел или иерархию, с которой должны сравниваться команды. Если аргумент parents опущен, команды сравниваются с набором команд верхнего уровня или глобальных команд. | ||
| provider словарь | Устарело Начиная с Ansible 2.5, рекомендуется использовать connection: network_cli. Дополнительную информацию можно найти в руководстве IOS Platform Options. Объект dict, содержащий данные подключения. | ||
| auth_pass строка | Указывает пароль для входа в привилегированный режим на удалённом устройстве, если это необходимо. Если authorize равно false, то этот аргумент ничего не делает. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_AUTH_PASS вместо. | ||
| authorize логическое значение |
| Инструктирует модуль войти в привилегированный режим на удалённом устройстве перед отправкой любых команд. Если не указано, устройство попытается выполнить все команды в режиме без привилегий. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_AUTHORIZE вместо. | |
| host строка / обязательно | Указывает имя хоста DNS или адрес для подключения к удалённому устройству по указанному транспорту. Значение host используется в качестве целевого адреса для транспорта. | ||
| password строка | Указывает пароль для аутентификации подключения к удалённому устройству. Это значение используется для аутентификации сессии SSH. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_PASSWORD. | ||
| port целое число | По умолчанию: 22 | Указывает порт для подключения к удалённому устройству. | |
| ssh_keyfile путь | Указывает SSH-ключ для аутентификации подключения к удалённому устройству. Это значение — путь к ключу, используемому для аутентификации сессии SSH. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_SSH_KEYFILE. | ||
| timeout целое число | По умолчанию: 10 | Указывает таймаут в секундах для связи с сетевым устройством при подключении или отправке команд. Если таймаут истечёт до завершения операции, модуль выдаст ошибку. | |
| username строка | Указывает имя пользователя для аутентификации подключения к удалённому устройству. Это значение используется для аутентификации сессии SSH. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_USERNAME. | ||
| replace - |
| Указывает модулю способ выполнения конфигурации на устройстве. Если аргумент replace установлен в строка, то изменённые строки отправляются на устройство в режиме конфигурации. Если аргумент replace установлен в блок, то весь блок команд отправляется на устройство в режиме конфигурации, если какая-либо строка некорректна. | |
| running_config - добавлено в 2.4 | По умолчанию модуль подключается к удалённому устройству и извлекает текущую конфигурацию running-config для сравнения с содержимым источника. Иногда нежелательно, чтобы задача получала текущую running-config для каждой задачи в playbook. Аргумент running_config позволяет реализатору передать конфигурацию для использования в качестве базовой конфигурации для сравнения. алиасы: config | ||
| save_when - добавлено в 2.4 |
| По умолчанию, при внесении изменений в конфигурацию running-устройства, эти изменения не копируются в постоянное хранилище. Этот аргумент изменяет это поведение. Если аргумент установлен в всегда, то running-config всегда копируется в startup-config, и флаг изменено всегда устанавливается в True. Если аргумент установлен в изменено, то running-config копируется в startup-config только в том случае, если он изменился с момента последней записи в startup-config. Если аргумент установлен в никогда, то running-config никогда не копируется в startup-config. Если аргумент установлен в изменилось, то running-config копируется в startup-config только в том случае, если задача внесла изменения. изменилось было добавлено в Ansible 2.5. | |
| src - добавлено в 2.2 | Указывает путь к файлу-источнику, содержащему конфигурацию или шаблон конфигурации для загрузки. Путь к исходному файлу может быть полным путём на хосте Ansible или относительным путём от корневой директории playbook или роли. Этот аргумент взаимно исключается с lines, parents. | ||
Примечания
Примечание
- Тестировано с IOS 15.6
- Сокращённые команды НЕ идемпотентны, см. Вопросы и ответы по сети.
- Дополнительную информацию об использовании Ansible для управления сетевыми устройствами см. в Руководстве по сети Ansible
- Дополнительную информацию об использовании Ansible для управления устройствами Cisco см. на странице интеграции Cisco .
Примеры
- name: configure top level configuration
ios_config:
lines: hostname {{ inventory_hostname }}
- name: configure interface settings
ios_config:
lines:
- description test interface
- ip address 172.31.1.1 255.255.255.0
parents: interface Ethernet1
- name: configure ip helpers on multiple interfaces
ios_config:
lines:
- ip helper-address 172.26.1.10
- ip helper-address 172.26.3.8
parents: "{{ item }}"
with_items:
- interface Ethernet1
- interface Ethernet2
- interface GigabitEthernet1
- name: configure policer in Scavenger class
ios_config:
lines:
- conform-action transmit
- exceed-action drop
parents:
- policy-map Foo
- class Scavenger
- police cir 64000
- name: load new acl into device
ios_config:
lines:
- 10 permit ip host 192.0.2.1 any log
- 20 permit ip host 192.0.2.2 any log
- 30 permit ip host 192.0.2.3 any log
- 40 permit ip host 192.0.2.4 any log
- 50 permit ip host 192.0.2.5 any log
parents: ip access-list extended test
before: no ip access-list extended test
match: exact
- name: check the running-config against master config
ios_config:
diff_against: intended
intended_config: "{{ lookup('file', 'master.cfg') }}"
- name: check the startup-config against the running-config
ios_config:
diff_against: startup
diff_ignore_lines:
- ntp clock .*
- name: save running to startup when modified
ios_config:
save_when: modified
- name: for idempotency, use full-form commands
ios_config:
lines:
# - shut
- shutdown
# parents: int gig1/0/11
parents: interface GigabitEthernet1/0/11
# Set boot image based on comparison to a group_var (version) and the version
# that is returned from the `ios_facts` module
- name: SETTING BOOT IMAGE
ios_config:
lines:
- no boot system
- boot system flash bootflash:{{new_image}}
host: "{{ inventory_hostname }}"
when: ansible_net_version != version
- name: render a Jinja2 template onto an IOS device
ios_config:
backup: yes
src: ios_template.j2
- name: configurable backup path
ios_config:
src: ios_template.j2
backup: yes
backup_options:
filename: backup.cfg
dir_path: /home/user
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращённое | Описание |
|---|---|---|
| backup_path строка | при backup yes | Полный путь к файлу резервной копии Пример: /playbooks/ansible/backup/ios_config.2016-07-16@22:28:34 |
| commands список | всегда | Набор команд, которые будут отправлены на удалённое устройство Пример: ['hostname foo', 'router ospf 1', 'router-id 192.0.2.1'] |
| date строка | при backup yes | Дата, извлечённая из имени файла резервной копии Пример: 2016-07-16 |
| filename строка | при backup yes и filename не указан в опциях резервной копии | Имя файла резервной копии Пример: ios_config.2016-07-16@22:28:34 |
| shortname строка | при backup yes и filename не указан в опциях резервной копии | Полный путь к файлу резервной копии без временной метки Пример: /playbooks/ansible/backup/ios_config |
| time строка | при backup yes | Время, извлечённое из имени файла резервной копии Пример: 22:28:34 |
| updates список | всегда | Набор команд, которые будут отправлены на удалённое устройство Пример: ['hostname foo', 'router ospf 1', 'router-id 192.0.2.1'] |
Статус
- Гарантии обратной совместимости интерфейса этого модуля нет. [превью]
- Этот модуль поддерживается командой Ansible Network. [сеть]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля Red Hat см. в этой статье базы знаний Red Hat: .
Авторы
- 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.8/modules/ios_config_module.html