cisco.ios.ios_config – Управление разделами конфигурации Cisco IOS
Примечание
Этот плагин входит в состав коллекции cisco.ios (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install cisco.ios.
Для использования в плейбуке укажите: cisco.ios.ios_config.
Новый в версии 1.0.0: of cisco.ios
Обзор
- Конфигурации Cisco IOS используют простой синтаксис блочного отступа для разделения конфигурации на секции. Этот модуль предоставляет реализацию для работы с секциями конфигурации IOS детерминированным способом.
Примечание
У этого модуля есть соответствующий плагин действий.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| after список / элементы=строка | Упорядоченный набор команд, добавляемых в конец стека команд, если требуется внести изменения. Аналогично параметру before, это позволяет разработчику playbook добавить набор команд, которые будут выполнены после набора команд. | ||
| backup логическое значение |
| Этот аргумент заставит модуль создать полную резервную копию текущей running-config с удаленного устройства перед внесением каких-либо изменений. Если значение backup_options не указано, файл резервной копии записывается в папку backup в корневом каталоге playbook или в корневом каталоге роли, если playbook является частью роли ansible. Если каталог не существует, он создается. | |
| backup_options словарь | Это объект типа dict, содержащий конфигурируемые параметры, связанные с путем к файлу резервной копии. Значение этого параметра считывается только тогда, когда backup установлено в да; если backup установлено в нет, этот параметр будет проигнорирован. | ||
| dir_path путь | Этот параметр задает путь, заканчивающийся именем каталога, в котором будет храниться файл конфигурации резервной копии. Если каталог не существует, он будет сначала создан, а имя файла будет либо значением filename, либо именем файла по умолчанию, как описано в описании параметров filename. Если значение пути не указано, в текущей рабочей директории будет создан каталог backup, и конфигурация резервной копии будет скопирована в filename внутри каталога backup. | ||
| filename строка | Имя файла, используемого для хранения резервной копии конфигурации. Если имя файла не указано, оно будет сгенерировано на основе имени хоста, текущей даты и времени в формате <имя_хоста>_config.<дата>@<время> | ||
| before список / элементы=строка | Упорядоченный набор команд, помещаемых в стек команд, если требуется внести изменения. Это позволяет разработчику playbook выполнить команды конфигурации перед внесением любых изменений без влияния на то, как набор команд сопоставляется с системой. | ||
| defaults логическое значение |
| Этот аргумент указывает, нужно ли собирать все значения по умолчанию при получении конфигурации устройства. При включении модуль получит текущую конфигурацию, выполнив команду show running-config all. | |
| diff_against строка |
| При использовании аргумента командной строки ansible-playbook --diff модуль может генерировать разницы (diffs) по различным источникам.Когда этот параметр настроен как startup, модуль вернёт разницу между текущей конфигурацией (running-config) и конфигурацией по умолчанию (startup-config). Когда этот параметр настроен как intended, модуль вернёт разницу между текущей конфигурацией (running-config) и конфигурацией, предоставленной в аргументе intended_config.Когда этот параметр настроен как running, модуль вернёт разницу между конфигурацией до изменений (before) и после изменений (after) текущей конфигурации (running-config) по отношению к любым изменениям, внесённым в конфигурацию устройства. | |
| diff_ignore_lines список / элементы=строка | Используйте этот аргумент, чтобы указать одну или несколько строк, которые должны быть проигнорированы при сравнении (diff). Это используется для строк в конфигурации, которые автоматически обновляются системой. Этот аргумент принимает список регулярных выражений или точных совпадений строк. | ||
| intended_config строка | intended_config предоставляет основную конфигурацию, к которой должен соответствовать узел, и используется для проверки конечной текущей конфигурации (running-config). Этот аргумент не будет изменять какие-либо настройки на удалённом устройстве и используется исключительно для проверки соответствия текущей конфигурации устройства. При указании этого аргумента задача также должна изменить значение diff_against и установить его в intended. Строки конфигурации для этого значения должны быть похожи на то, как они будут выглядеть, если они присутствуют в текущей конфигурации (running-configuration) устройства, включая отступы для обеспечения правильного сравнения. | ||
| lines список / элементы=строка | Упорядоченный набор команд, которые должны быть настроены в разделе. Команды должны быть точно такими же, как и в текущей конфигурации устройства (running-config), чтобы обеспечить идемпотентность и правильное сравнение. Обратите внимание на синтаксис команд конфигурации, так как некоторые команды автоматически изменяются анализатором конфигурации устройства. псевдонимы: команды | ||
| match строка |
| Указывает модулю способ сопоставления набора команд с текущей конфигурацией устройства. Если match установлено в строка, команды сопоставляются по строкам. Если match установлено в строго, строки команд сопоставляются с учётом позиции. Если match установлено в точно, строки команд должны быть точным совпадением. Наконец, если match установлено в ничего, модуль не будет пытаться сравнить исходную конфигурацию с текущей конфигурацией (running-configuration) на удалённом устройстве. | |
| multiline_delimiter строка | Значение по умолчанию: "@" | Этот аргумент используется при отправке многострочного элемента конфигурации на устройство 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 целое число | Указывает порт, используемый при создании подключения к удалённому устройству. | ||
| ssh_keyfile путь | Указывает SSH-ключ для аутентификации подключения к удалённому устройству. Это значение — путь к ключу, используемому для аутентификации сессии SSH. Если значение не указано в задаче, используется значение переменной среды ANSIBLE_NET_SSH_KEYFILE. | ||
| timeout целое число | Указывает таймаут в секундах для связи с сетевым устройством при подключении или отправке команд. Если таймаут истекает до завершения операции, модуль выдаст ошибку. | ||
| username строка | Устанавливает имя пользователя для аутентификации подключения к удалённому устройству. Это значение используется для аутентификации сессии SSH. Если значение не указано в задаче, используется значение переменной среды ANSIBLE_NET_USERNAME. | ||
| replace строка |
| Указывает модулю способ выполнения конфигурации на устройстве. Если аргумент replace установлен в строка, изменённые строки отправляются устройству в режиме конфигурации. Если аргумент replace установлен в блок, весь блок команд отправляется на устройство в режиме конфигурации, если какая-либо строка не верна. | |
| running_config string | Модуль по умолчанию подключается к удалённому устройству и получает текущую конфигурацию running-config, чтобы использовать её как базу для сравнения с содержимым источника. Бывают ситуации, когда нежелательно, чтобы задача получала текущую конфигурацию running-config для каждой задачи в плейбуке. Аргумент running_config позволяет разработчику передать конфигурацию, которая будет использоваться как базовая конфигурация для сравнения. Строки конфигурации для этого параметра должны быть похожи на то, как они будут отображаться при наличии в running-configuration устройства, включая отступы для обеспечения идемпотентности и корректного diff. псевдонимы: config | ||
| save_when string |
| Когда в конфигурации running-configuration устройства вносятся изменения, эти изменения по умолчанию не копируются в нелетучую память. Использование этого аргумента изменит это до того. Если аргумент установлен в always, то running-config всегда будет скопирована в startup-config, и флаг modified всегда будет установлен в True. Если аргумент установлен в modified, то running-config будет скопирована в startup-config только в том случае, если она изменилась с момента последней сохранения в startup-config. Если аргумент установлен в never, то running-config никогда не будет скопирована в startup-config. Если аргумент установлен в changed, то running-config будет скопирована в startup-config только в том случае, если задача внесла изменения. changed был добавлен в Ansible 2.5. | |
| src string | Указывает путь к файлу-источнику, содержащему конфигурацию или шаблон конфигурации для загрузки. Путь к исходному файлу может быть полным путем на хосте Ansible или относительным путем от корневой директории плейбука или роли. Этот аргумент несовместим с аргументами lines, parents. Строки конфигурации в исходном файле должны быть похожи на то, как они будут отображаться при наличии в running-configuration устройства, включая отступы для обеспечения идемпотентности и корректного diff. | ||
Примечания
Примечание
- Тестировано на IOS 15.6
- Сокращённые команды НЕ идемпотентны, см. L (Справочник по сети, ../network/user_guide/faq.html#why-do-the-config-modules-always-return-changed-true-with-abbreviated-commands).
- Для обеспечения идемпотентности и корректного diff, строки конфигурации в соответствующих параметрах модуля должны быть похожи на то, как они отображаются, если они присутствуют в текущей конфигурации устройства, включая отступы.
- Дополнительную информацию об использовании Ansible для управления сетевыми устройствами можно найти в Руководстве по сети Ansible
- Дополнительную информацию об использовании Ansible для управления устройствами Cisco можно найти на странице интеграции Cisco .
Примеры
- name: configure top level configuration
cisco.ios.ios_config:
lines: hostname {{ inventory_hostname }}
- name: configure interface settings
cisco.ios.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
cisco.ios.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
cisco.ios.ios_config:
lines:
- conform-action transmit
- exceed-action drop
parents:
- policy-map Foo
- class Scavenger
- police cir 64000
- name: load new acl into device
cisco.ios.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
cisco.ios.ios_config:
diff_against: intended
intended_config: "{{ lookup('file', 'master.cfg') }}"
- name: check the startup-config against the running-config
cisco.ios.ios_config:
diff_against: startup
diff_ignore_lines:
- ntp clock .*
- name: save running to startup when modified
cisco.ios.ios_config:
save_when: modified
- name: for idempotency, use full-form commands
cisco.ios.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
cisco.ios.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
cisco.ios.ios_config:
backup: yes
src: ios_template.j2
- name: configurable backup path
cisco.ios.ios_config:
src: ios_template.j2
backup: yes
backup_options:
filename: backup.cfg
dir_path: /home/user
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие являются полями, уникальными для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| backup_path string | при 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 и имя файла не указано в параметрах резервного копирования | Имя файла резервной копии Пример: ios_config.2016-07-16@22:28:34 |
| shortname строка | при backup = yes и имя файла не указано в параметрах резервного копирования | Полный путь к файлу резервной копии без временной метки Пример: /playbooks/ansible/backup/ios_config |
| time строка | при backup = yes | Время, извлеченное из имени файла резервной копии Пример: 22:28:34 |
| updates список / элементы=строка | всегда | Набор команд, которые будут отправлены на удалённое устройство Пример: ['hostname foo', 'router ospf 1', 'router-id 192.0.2.1'] |
Авторы
- Пётр Спрыгада (@privateip)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/cisco/ios/ios_config_module.html