cisco.ios.ios_config – Управление разделами конфигурации Cisco IOS
Примечание
Этот плагин входит в коллекцию cisco.ios (версия 1.2.1).
Для его установки используйте: ansible-galaxy collection install cisco.ios.
Для использования в плейбуке укажите: cisco.ios.ios_config.
В версии 1.0.0: модуля cisco.ios
Обзор
- Конфигурации Cisco IOS используют простой синтаксис отступов блоков для разбиения конфигурации на разделы. Этот модуль предоставляет реализацию для работы с разделами конфигурации IOS детерминированным способом.
Примечание
У этого модуля есть соответствующий плагин действия.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| after список / элементы=строка | Упорядоченный набор команд, добавляемых в конец стека команд, если требуется внести изменения. Так же, как и с параметром before, это позволяет разработчику плейбука добавить набор команд для выполнения после набора команд. | ||
| backup логическое значение |
| Этот аргумент заставит модуль создать полную резервную копию текущей running-config с удаленного устройства перед внесением каких-либо изменений. Если значение параметра backup_options не указано, файл резервной копии записывается в папку backup в корневом каталоге плейбука или корневом каталоге роли, если плейбук является частью роли Ansible. Если папка не существует, она создается. | |
| backup_options словарь | Это объект словаря, содержащий настраиваемые параметры, связанные с путём к файлу резервной копии. Значение этого параметра считывается только при условии, что backup установлено в значение да. Если backup установлено в значение нет, этот параметр будет проигнорирован. | ||
| dir_path путь | Этот параметр предоставляет путь, заканчивающийся именем каталога, в котором будет храниться файл конфигурации резервной копии. Если каталога не существует, он будет сначала создан, а имя файла будет либо значением filename, либо именем по умолчанию, как описано в описании параметров filename. Если значение пути не указано, в этом случае будет создан каталог backup в текущей рабочей директории, а конфигурация резервной копии будет скопирована в filename внутри каталога backup. | ||
| filename строка | Имя файла, используемого для хранения резервной копии конфигурации. Если имя файла не указано, оно будет сгенерировано на основе имени хоста, текущего времени и даты в формате <имя_хоста>_config.<дата>@<время> | ||
| before список / элементы=строка | Упорядоченный набор команд, добавляемых в стек команд, если требуется внести изменения. Это позволяет разработчику плейбука выполнить команды конфигурации перед внесением каких-либо изменений, не затрагивая способ сопоставления набора команд с системой. | ||
| defaults логическое значение |
| Этот аргумент указывает, собирать ли все значения по умолчанию при получении конфигурации работающего устройства. При включении модуль получит текущую конфигурацию, выполнив команду show running-config all. | |
| diff_against строка |
| При использовании аргумента командной строки ansible-playbook --diff модуль может генерировать разницы с различными источниками.Когда этот параметр настроен как startup, модуль вернёт разницу между конфигурацией running и startup. Когда этот параметр настроен как intended, модуль вернёт разницу между конфигурацией running и конфигурацией, предоставленной в аргументе intended_config.Когда этот параметр настроен как working, модуль вернёт разницу между конфигурацией running до и после изменений, внесённых в конфигурацию устройства. | |
| diff_ignore_lines список / элементы=строка | Используйте этот аргумент, чтобы указать одну или несколько строк, которые следует игнорировать при сравнении. Это используется для строк в конфигурации, которые автоматически обновляются системой. Этот аргумент принимает список регулярных выражений или точных совпадений строк. | ||
| intended_config строка | Эта intended_config предоставляет основную конфигурацию, к которой должен соответствовать узел, и используется для проверки конечной конфигурации running против неё. Этот аргумент не будет изменять какие-либо настройки на удалённом устройстве и используется исключительно для проверки соответствия текущей конфигурации устройства. При указании этого аргумента, задача должна также изменить значение diff_against и установить его в значение intended. | ||
| lines список / элементы=строка | Упорядоченный набор команд, которые должны быть сконфигурированы в данном разделе. Команды должны быть абсолютно идентичны командам, найденным в конфигурации работающего устройства. Обратите внимание на синтаксис команд конфигурации, так как некоторые команды автоматически изменяются парсером конфигурации устройства. псевдонимы: команды | ||
| match строка |
| Указывает модулю способ сравнения набора команд с текущей конфигурацией устройства. Если match установлено в строка, команды сравниваются построчно. Если match установлено в строго, строки команд сравниваются с учётом позиции. Если match установлено в точно, строки команд должны быть полным совпадением. Наконец, если match установлено в ничего, модуль не будет пытаться сравнить исходную конфигурацию с конфигурацией running на удалённом устройстве. | |
| multiline_delimiter строка | По умолчанию: "@" | Этот аргумент используется при добавлении многострочного элемента конфигурации на устройство IOS. Он указывает символ, используемый в качестве разделителя. Это относится только к действию конфигурации. | |
| parents список / элементы=строка | Упорядоченный набор родительских элементов, уникально идентифицирующих раздел или иерархию, с которыми должны сравниваться команды. Если аргумент parents опущен, команды сравниваются с набором команд верхнего уровня или глобальными командами. | ||
| provider словарь | Устарело Начиная с Ansible 2.5, рекомендуется использовать connection: network_cli.Для получения дополнительной информации см. руководство IOS Platform Options. Объект словаря, содержащий данные подключения. | ||
| 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 строка | Модуль по умолчанию подключается к удалённому устройству и извлекает текущую конфигурацию running, чтобы использовать её в качестве основы для сравнения с содержимым источника. Иногда нежелательно, чтобы задача получала текущую конфигурацию running для каждой задачи в плейбуке. Аргумент running_config позволяет реализатору передавать конфигурацию, которая будет использоваться в качестве базовой конфигурации для сравнения. псевдонимы: конфигурация | ||
| save_when строка |
| Когда в конфигурации устройства выполняются изменения, по умолчанию эти изменения не копируются в энергонезависимую память. Использование этого аргумента изменит это поведение. Если аргумент установлен в always, конфигурация текущей конфигурации всегда будет скопирована в стартовую конфигурацию, и флаг modified всегда будет установлен в True. Если аргумент установлен в modified, конфигурация текущей конфигурации будет скопирована в стартовую конфигурацию только в том случае, если она изменилась с момента последней записи в стартовую конфигурацию. Если аргумент установлен в never, конфигурация текущей конфигурации никогда не будет скопирована в стартовую конфигурацию. Если аргумент установлен в changed, конфигурация текущей конфигурации будет скопирована в стартовую конфигурацию только в том случае, если задачей были внесены изменения. changed был добавлен в Ansible 2.5. | |
| src строка | Указывает путь к файлу, содержащему конфигурацию или шаблон конфигурации для загрузки. Путь к исходному файлу может быть полным путем на хосте управления Ansible или относительным путем от корневого каталога playbook или роли. Этот аргумент взаимоисключающий с lines, parents. | ||
Примечания
Примечание
- Проверено на IOS 15.6
- Сокращенные команды НЕ идемпотентны, см. L (FAQ по сети,../network/user_guide/faq.html#why-do-the-config-modules-always-return-changed-true-with-abbreviated-commands).
- Для получения дополнительной информации об использовании 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 строка | при 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'] |
Авторы
- 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/cisco/ios/ios_config_module.html