Модуль cisco.ios.ios_config — модуль для управления разделами конфигурации.
Примечание
Этот модуль входит в коллекцию cisco.ios (версия 11.4.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в состав ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install cisco.ios.
Чтобы использовать её в плейбуке, укажите: cisco.ios.ios_config.
Добавлено в cisco.ios 1.0.0
Обзор
- В конфигурациях Cisco IOS используется простой синтаксис файлов с блочными отступами для разделения конфигурации на секции. Этот модуль реализует детерминированный способ работы с секциями конфигурации IOS.
Примечание
Этому модулю соответствует плагин действия.
Псевдонимы: config
Параметры
Параметр | Описание |
|---|---|
after list / elements=string | Упорядоченный набор команд, добавляемых в конец стека команд, если требуется внести изменения. Как и параметр before, это позволяет разработчику плейбука добавить набор команд, которые будут выполнены после набора команд. |
backup boolean | Этот аргумент заставляет модуль создать полную резервную копию текущей Варианты:
|
backup_options dictionary | Это объект dict, содержащий настраиваемые параметры пути к файлу резервной копии. Значение этого параметра считывается только если для |
|
dir_path path |
Этот параметр задаёт путь, заканчивающийся именем каталога, в котором будет сохранён файл резервной копии конфигурации. Если каталог не существует, он будет сначала создан. Имя файла задаётся значением |
|
filename string |
Имя файла для сохранения резервной копии конфигурации. Если имя файла не задано, оно будет сформировано на основе имени узла, текущего времени и даты в формате <hostname>_config.<current-date>@<current-time> |
before list / elements=string | Упорядоченный набор команд, помещаемых в стек команд, если требуется внести изменения. Это позволяет разработчику плейбука выполнить команды конфигурации до отправки любых изменений, не влияя на сопоставление набора команд с системой. |
content string | Содержимое конфигурации для применения к устройству. Здесь должен быть отрендеренный текст конфигурации, а не путь к файлу. Это рекомендуемый способ передачи шаблонных конфигураций. Используйте lookup Этот аргумент несовместим с параметрами src, lines и parents. Пример: |
defaults boolean | Этот аргумент указывает, следует ли получать все значения по умолчанию при получении текущей конфигурации работающего удалённого устройства. Если параметр включён, модуль получит текущую конфигурацию, выполнив команду Варианты:
|
diff_against string | При использовании аргумента командной строки Если для этого параметра задано значение startup, модуль вернёт различия между running-config и startup-config. Если для этого параметра задано значение intended, модуль вернёт различия между running-config и конфигурацией, переданной в аргументе Если для этого параметра задано значение running, модуль вернёт различия до и после изменений running-config относительно любых изменений конфигурации устройства. Варианты:
|
diff_ignore_lines list / elements=string | Используйте этот аргумент, чтобы указать одну или несколько строк, которые следует игнорировать при сравнении различий. Он применяется к строкам конфигурации, которые автоматически обновляются системой. В качестве значения аргумента можно указать список регулярных выражений или точных совпадений строк. |
intended_config string | Параметр |
lines псевдонимы: commands list / elements=any | Упорядоченный набор команд, которые следует настроить в секции. Для обеспечения идемпотентности и корректного сравнения различий команды должны в точности совпадать с командами в running-config устройства. Учитывайте синтаксис команд конфигурации, так как некоторые команды автоматически изменяются синтаксическим анализатором конфигурации устройства. |
|
answer string |
ответ для отправки устройству при обработке запроса устройства в режиме конфигурации |
|
config_line string |
используется для указания строк конфигурации, когда требуется объявить параметры; работает так же, как lines |
|
prompt string |
сообщение запроса для обработки при редактировании конфигураций устройства в режиме конфигурации |
match string | Указывает модулю способ сопоставления набора команд с текущей конфигурацией устройства. Если для match задано значение line, команды сопоставляются построчно. Если для match задано значение strict, строки команд сопоставляются с учётом их расположения. Если для match задано значение exact, строки команд должны полностью совпадать. Наконец, если для match задано значение none, модуль не будет пытаться сравнивать исходную конфигурацию с работающей конфигурацией на удалённом устройстве. Варианты:
|
multiline_delimiter string | Этот аргумент используется при отправке на устройство IOS многострочного элемента конфигурации. Он задаёт символ-разделитель. Применяется только к действию конфигурации. По умолчанию: |
parents list / elements=string | Упорядоченный набор родительских элементов, однозначно определяющих секцию или иерархию, с которой следует сравнивать команды. Если аргумент parents не указан, команды сравниваются с набором команд верхнего уровня или глобальных команд. |
replace string | Указывает модулю способ выполнения конфигурации на устройстве. Если для аргумента replace задано значение line, изменённые строки отправляются на устройство в режиме конфигурации. Если для аргумента replace задано значение block, весь блок команд отправляется на устройство в режиме конфигурации, если хотя бы одна строка неверна. Варианты:
|
running_config псевдонимы: config string | По умолчанию модуль подключается к удалённому устройству и получает текущий running-config, чтобы использовать его в качестве основы для сравнения с содержимым source. Иногда нежелательно, чтобы задача получала текущий running-config для каждой задачи в плейбуке. Аргумент running_config позволяет передать конфигурацию, которая будет использоваться в качестве базовой для сравнения. Строки конфигурации для этого параметра должны соответствовать тому виду, который они имели бы в running-configuration устройства, включая отступы, чтобы обеспечить идемпотентность и корректное сравнение различий. |
save_when string | По умолчанию изменения, внесённые в работающую конфигурацию устройства, не копируются в энергонезависимое хранилище. Этот аргумент изменяет такое поведение. Если для аргумента задано значение 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 и content. Строки конфигурации в исходном файле должны соответствовать тому виду, который они имели бы в running-configuration устройства, включая отступы, чтобы обеспечить идемпотентность и корректное сравнение различий. ПРИМЕЧАНИЕ: начиная с января 2028 года параметр src больше не будет обрабатывать шаблоны Jinja2. Чтобы использовать шаблонные конфигурации, отрендерите шаблон с помощью lookup |
Примечания
Примечание
- Проверено на Cisco IOSXE версии 17.3 в CML.
- Сокращённые команды НЕ являются идемпотентными, см. https://docs.ansible.com/ansible/latest/network/user_guide/faq.html#why-do-the-config-modules-always-return-changed-true-with-abbreviated-commands
- Для обеспечения идемпотентности и корректного сравнения различий строки конфигурации в соответствующих параметрах модуля должны соответствовать тому виду, который они имеют в работающей конфигурации устройства, включая отступы.
- Этот модуль работает с подключением
network_cli. См. https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html - Рекомендуемый способ использования шаблонных конфигураций — отрендерить шаблон с помощью lookup
ansible.builtin.templateи передать результат параметру content. Использование src с шаблонами Jinja2 считается устаревшим. - Дополнительную информацию об использовании Ansible для управления сетевыми устройствами см. в :ref:`Руководстве по сетям Ansible <network_guide>`
- Дополнительную информацию об использовании Ansible для управления устройствами Cisco см. на `странице интеграции Cisco <https://www.ansible.com/integrations/networks/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 (DEPRECATED - use content parameter)
cisco.ios.ios_config:
backup: true
src: ios_template.j2
- name: Configurable backup path
cisco.ios.ios_config:
src: ios_template.j2
backup: true
backup_options:
filename: backup.cfg
dir_path: /home/user
- name: Apply templated configuration using content parameter (RECOMMENDED)
cisco.ios.ios_config:
content: "{{ lookup('ansible.builtin.template', 'ios_template.j2') }}"
backup: true
- name: Apply templated configuration with backup options (RECOMMENDED)
cisco.ios.ios_config:
content: "{{ lookup('ansible.builtin.template', 'ios_template.j2') }}"
backup: true
backup_options:
filename: backup.cfg
dir_path: /home/user
- name: Load configuration from pre-rendered template
cisco.ios.ios_config:
content: |
interface GigabitEthernet0/1
description Uplink to Core
ip address 10.1.1.1 255.255.255.0
no shutdown
- name: Configure Access Session Attributes while handlening prompt
cisco.ios.ios_config:
lines:
- config_line: access-session authentication attributes filter-spec include list test_filter
- config_line: access-session accounting attributes filter-spec include list test_filter
prompt: "Do you wish to continue? [yes]:"
answer: "yes"
save_when: "changed"
# Task Output :
# --------
#
# banners: {}
# commands:
# - access-session authentication attributes filter-spec include list mylist
# - access-session accounting attributes filter-spec include list mylist
# invocation:
# module_args:
# after: null
# backup: false
# backup_options: null
# before: null
# defaults: false
# diff_against: null
# diff_ignore_lines: null
# intended_config: null
# lines:
# - config_line: access-session authentication attributes filter-spec include list mylist
# - answer: "yes"
# config_line: access-session accounting attributes filter-spec include list mylist
# prompt: "Do you wish to continue? [yes]:"
# match: line
# multiline_delimiter: '@'
# parents: null
# replace: line
# running_config: null
# save_when: changed
# src: null
# updates:
# - access-session authentication attributes filter-spec include list mylist
# - access-session accounting attributes filter-spec include list mylist
# Example ios_template.j2
# ip access-list extended test
# permit ip host 192.0.2.1 any log
# permit ip host 192.0.2.2 any log
# permit ip host 192.0.2.3 any log
# permit ip host 192.0.2.4 any log
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже приведены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
backup_path string | Полный путь к файлу резервной копии Возвращается: если backup имеет значение yes Пример: |
commands list / elements=string | Набор команд, которые будут отправлены на удалённое устройство Возвращается: всегда Пример: |
date string | Дата, извлечённая из имени файла резервной копии Возвращается: если backup имеет значение yes Пример: |
filename string | Имя файла резервной копии Возвращается: если backup имеет значение yes и имя файла не указано в параметрах резервного копирования Пример: |
shortname string | Полный путь к файлу резервной копии без метки времени Возвращается: если backup имеет значение yes и имя файла не указано в параметрах резервного копирования Пример: |
time string | Время, извлечённое из имени файла резервной копии Возвращается: если backup имеет значение yes Пример: |
updates list / elements=string | Набор команд, которые будут отправлены на удалённое устройство Возвращается: всегда Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/cisco/ios/ios_config_module.html