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 boolean |
| Устаревший Начиная с Ansible 2.5, рекомендуется использовать connection: network_cli и become: yes. Для получения дополнительной информации см. руководство IOS Platform Options. Инструктирует модуль войти в привилегированный режим на удалённом устройстве перед отправкой любых команд. Если не указано, устройство попытается выполнить все команды в режиме без привилегий. Если значение не указано в задаче, используется значение переменной среды ANSIBLE_NET_AUTHORIZE. | |
| backup boolean added in 2.2 |
| Этот аргумент заставит модуль создать полную резервную копию текущей running-config с удалённого устройства перед внесением каких-либо изменений. Файл резервной копии записывается в папку backup в корневом каталоге playbook или корневом каталоге роли, если playbook является частью роли ansible. Если каталог не существует, он создается. | |
| before - | Упорядоченный набор команд, которые добавляются в стек команд, если необходимо внести изменения. Это позволяет разработчику playbook выполнить команды конфигурации перед внесением каких-либо изменений, не затрагивая способ сопоставления набора команд с системой. | ||
| defaults boolean added in 2.2 |
| Этот аргумент указывает, нужно ли собирать все значения по умолчанию при получении конфигурации работающего устройства. При включении модуль получит текущую конфигурацию, выполнив команду show running-config all. | |
| diff_against - added in 2.4 |
| При использовании аргумента ansible-playbook --diff командной строки модуль может генерировать разницу с различными источниками.Когда этот параметр настроен как startup, модуль вернёт разницу между running-config и startup-config. Когда этот параметр настроен как intended, модуль вернёт разницу между running-config и конфигурацией, предоставленной в аргументе intended_config. Когда этот параметр настроен как running, модуль вернёт разницу до и после running-config по отношению к любым изменениям, внесённым в конфигурацию устройства. | |
| diff_ignore_lines - added in 2.4 | Используйте этот аргумент для указания одной или нескольких строк, которые должны быть проигнорированы во время сравнения. Это используется для строк в конфигурации, которые автоматически обновляются системой. Этот аргумент принимает список регулярных выражений или точных совпадений строк. | ||
| force boolean |
| Аргумент force инструктирует модуль не учитывать текущую конфигурацию running-config устройства. При установке в true, модуль отправит содержимое src на устройство, не проверяя предварительно, настроено ли оно уже. Обратите внимание, что этот аргумент следует считать устаревшим. Для достижения эквивалента установите match=none, который идемпотентен. Этот аргумент будет удален в Ansible 2.6. | |
| intended_config - added in 2.4 | intended_config предоставляет основную конфигурацию, к которой должен соответствовать узел, и используется для проверки окончательной running-config. Этот аргумент не будет изменять какие-либо настройки на удалённом устройстве и используется исключительно для проверки соответствия текущей конфигурации устройства. При указании этого аргумента в задаче также необходимо изменить значение diff_against и установить его в intended. | ||
| lines - | Упорядоченный набор команд, которые должны быть настроены в разделе. Команды должны быть такими же, как и в конфигурации running-config устройства. Обратите внимание на синтаксис команд конфигурации, так как некоторые команды автоматически изменяются парсером конфигурации устройства. псевдонимы: команды | ||
| match - |
| Инструктирует модуль о способе сопоставления набора команд с текущей конфигурацией устройства. Если match установлен на line, команды сопоставляются по строкам. Если match установлен на strict, строки команд сопоставляются относительно позиции. Если match установлен на exact, строки команд должны точно совпадать. Наконец, если match установлен на none, модуль не будет пытаться сравнить исходную конфигурацию с текущей конфигурацией на удалённом устройстве. | |
| multiline_delimiter - added in 2.3 | По умолчанию: "@" | Этот аргумент используется при отправке многострочного элемента конфигурации на устройство IOS. Он указывает символ, который следует использовать в качестве разделителя. Это относится только к действию конфигурации. | |
| parents - | Упорядоченный набор родителей, которые однозначно идентифицируют раздел или иерархию, с которой должны быть проверены команды. Если аргумент parents опущен, команды проверяются по отношению к набору команд верхнего уровня или глобальным командам. | ||
| provider - | Устаревший Начиная с Ansible 2.5, рекомендуется использовать connection: network_cli. Для получения дополнительной информации см. руководство IOS Platform Options. Объект словаря, содержащий детали подключения. | ||
| auth_pass - | Указывает пароль, который необходимо использовать для входа в привилегированный режим на удалённом устройстве. Если authorize равен false, то этот аргумент ничего не делает. Если значение не указано в задаче, используется значение переменной среды ANSIBLE_NET_AUTH_PASS. | ||
| authorize boolean |
| Инструктирует модуль войти в привилегированный режим на удалённом устройстве перед отправкой любых команд. Если не указано, устройство попытается выполнить все команды в режиме без привилегий. Если значение не указано в задаче, используется значение переменной среды 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 установлен в line, изменённые строки передаются устройству в режиме конфигурации. Если аргумент replace установлен в block, весь блок команд передаётся устройству в режиме конфигурации, если какая-либо строка неверна. | |
| running_config - добавлен в 2.4 | Модуль по умолчанию подключается к удалённому устройству и извлекает текущую конфигурацию running-config в качестве основы для сравнения с содержимым источника. Иногда не нужно, чтобы задание получало текущую конфигурацию running-config для каждого задания в playbook. Аргумент running_config позволяет разработчику передать конфигурацию в качестве базовой конфигурации для сравнения. псевдонимы: config | ||
| save boolean добавлен в 2.2 |
| Аргумент save инструктирует модуль сохранить running-config в startup-config по завершении работы модуля. Если задан режим проверки, этот аргумент игнорируется.Этот параметр устарел с Ansible 2.4 и будет удалён в Ansible 2.8. Используйте save_when вместо него. | |
| save_when - добавлен в 2.4 |
| Когда изменения вносятся в текущую конфигурацию устройства (running-configuration), по умолчанию они не копируются в постоянную память (startup-config). Этот аргумент изменяет это поведение. Если аргумент установлен в 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 - добавлен в 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
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| 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'] |
| updates список | всегда | Набор команд, которые будут отправлены на удалённое устройство Пример: ['hostname foo', 'router ospf 1', 'router-id 192.0.2.1'] |
Статус
- Данный модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается командой Ansible по работе с сетями. [сеть]
Поддержка 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.7/modules/ios_config_module.html