Spec-Zone.ru › Ansible

Модуль 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

Этот аргумент заставляет модуль создать полную резервную копию текущей running-config на удалённом устройстве до внесения каких-либо изменений. Если значение backup_options не задано, файл резервной копии записывается в каталог backup в корневом каталоге плейбука или в корневом каталоге роли, если плейбук является частью роли Ansible. Если каталога не существует, он создаётся.

Варианты:

  • false ← (по умолчанию)
  • true

backup_options

dictionary

Это объект dict, содержащий настраиваемые параметры пути к файлу резервной копии. Значение этого параметра считывается только если для backup задано значение yes; если для backup задано значение no, этот параметр будет молча проигнорирован.

dir_path

path

Этот параметр задаёт путь, заканчивающийся именем каталога, в котором будет сохранён файл резервной копии конфигурации. Если каталог не существует, он будет сначала создан. Имя файла задаётся значением filename или используется имя по умолчанию, описанное в описании параметров filename. Если путь не задан, в текущем рабочем каталоге будет создан каталог backup, а резервная копия конфигурации будет скопирована в filename внутри каталога backup.

filename

string

Имя файла для сохранения резервной копии конфигурации. Если имя файла не задано, оно будет сформировано на основе имени узла, текущего времени и даты в формате <hostname>_config.<current-date>@<current-time>

before

list / elements=string

Упорядоченный набор команд, помещаемых в стек команд, если требуется внести изменения. Это позволяет разработчику плейбука выполнить команды конфигурации до отправки любых изменений, не влияя на сопоставление набора команд с системой.

content

string

Содержимое конфигурации для применения к устройству. Здесь должен быть отрендеренный текст конфигурации, а не путь к файлу.

Это рекомендуемый способ передачи шаблонных конфигураций. Используйте lookup ansible.builtin.template для рендеринга шаблона Jinja2 и передайте результат этому параметру.

Этот аргумент несовместим с параметрами src, lines и parents.

Пример: content: "{{ lookup('ansible.builtin.template', 'config.j2' }}”)

defaults

boolean

Этот аргумент указывает, следует ли получать все значения по умолчанию при получении текущей конфигурации работающего удалённого устройства. Если параметр включён, модуль получит текущую конфигурацию, выполнив команду show running-config all.

Варианты:

  • false ← (по умолчанию)
  • true

diff_against

string

При использовании аргумента командной строки ansible-playbook --diff модуль может формировать различия относительно разных источников.

Если для этого параметра задано значение startup, модуль вернёт различия между running-config и startup-config.

Если для этого параметра задано значение intended, модуль вернёт различия между running-config и конфигурацией, переданной в аргументе intended_config.

Если для этого параметра задано значение running, модуль вернёт различия до и после изменений running-config относительно любых изменений конфигурации устройства.

Варианты:

  • "running"
  • "startup"
  • "intended"

diff_ignore_lines

list / elements=string

Используйте этот аргумент, чтобы указать одну или несколько строк, которые следует игнорировать при сравнении различий. Он применяется к строкам конфигурации, которые автоматически обновляются системой. В качестве значения аргумента можно указать список регулярных выражений или точных совпадений строк.

intended_config

string

Параметр intended_config задаёт эталонную конфигурацию, которой должен соответствовать узел, и используется для проверки итогового running-config. Этот аргумент не изменяет настройки удалённого устройства и предназначен исключительно для проверки соответствия текущей конфигурации устройства. При указании этого аргумента задача также должна изменить значение diff_against и задать ему значение intended. Строки конфигурации для этого значения должны соответствовать тому виду, который они имели бы в running-configuration устройства, включая отступы, чтобы обеспечить корректное сравнение различий.

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, модуль не будет пытаться сравнивать исходную конфигурацию с работающей конфигурацией на удалённом устройстве.

Варианты:

  • "line" ← (по умолчанию)
  • "strict"
  • "exact"
  • "none"

multiline_delimiter

string

Этот аргумент используется при отправке на устройство IOS многострочного элемента конфигурации. Он задаёт символ-разделитель. Применяется только к действию конфигурации.

По умолчанию: "@"

parents

list / elements=string

Упорядоченный набор родительских элементов, однозначно определяющих секцию или иерархию, с которой следует сравнивать команды. Если аргумент parents не указан, команды сравниваются с набором команд верхнего уровня или глобальных команд.

replace

string

Указывает модулю способ выполнения конфигурации на устройстве. Если для аргумента replace задано значение line, изменённые строки отправляются на устройство в режиме конфигурации. Если для аргумента replace задано значение block, весь блок команд отправляется на устройство в режиме конфигурации, если хотя бы одна строка неверна.

Варианты:

  • "line" ← (по умолчанию)
  • "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.

Варианты:

  • "always"
  • "never" ← (по умолчанию)
  • "modified"
  • "changed"

src

string

Задаёт путь к файлу, содержащему конфигурацию или шаблон конфигурации для загрузки. Путь к исходному файлу может быть как полным путём на управляющем узле Ansible, так и относительным путём от корневого каталога плейбука или роли. Этот аргумент несовместим с параметрами lines, parents и content. Строки конфигурации в исходном файле должны соответствовать тому виду, который они имели бы в running-configuration устройства, включая отступы, чтобы обеспечить идемпотентность и корректное сравнение различий.

ПРИМЕЧАНИЕ: начиная с января 2028 года параметр src больше не будет обрабатывать шаблоны Jinja2. Чтобы использовать шаблонные конфигурации, отрендерите шаблон с помощью lookup ansible.builtin.template и передайте результат параметру content.

Примечания

Примечание

  • Проверено на 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

Пример: "/playbooks/ansible/backup/ios_config.2016-07-16@22:28:34"

commands

list / elements=string

Набор команд, которые будут отправлены на удалённое устройство

Возвращается: всегда

Пример: ["hostname foo", "router ospf 1", "router-id 192.0.2.1"]

date

string

Дата, извлечённая из имени файла резервной копии

Возвращается: если backup имеет значение yes

Пример: "2016-07-16"

filename

string

Имя файла резервной копии

Возвращается: если backup имеет значение yes и имя файла не указано в параметрах резервного копирования

Пример: "ios_config.2016-07-16@22:28:34"

shortname

string

Полный путь к файлу резервной копии без метки времени

Возвращается: если backup имеет значение yes и имя файла не указано в параметрах резервного копирования

Пример: "/playbooks/ansible/backup/ios_config"

time

string

Время, извлечённое из имени файла резервной копии

Возвращается: если backup имеет значение yes

Пример: "22:28:34"

updates

list / elements=string

Набор команд, которые будут отправлены на удалённое устройство

Возвращается: всегда

Пример: ["hostname foo", "router ospf 1", "router-id 192.0.2.1"]

Авторы

  • Peter Sprygada (@privateip)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API