Spec-Zone.ru › Ansible 2.11

ansible.netcommon.netconf_config – конфигурация устройства netconf

Примечание

Этот плагин входит в коллекцию ansible.netcommon (версия 1.5.0).

Для его установки используйте: ansible-galaxy collection install ansible.netcommon.

Для использования в плейбуке, укажите: ansible.netcommon.netconf_config.

Добавлено в версии 1.0.0: модуля ansible.netcommon

  • Обзор
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Обзор

  • Netconf — это протокол управления сетями, разработанный и стандартизированный IETF. Он документирован в RFC 6241.
  • Этот модуль позволяет пользователю отправлять файл конфигурации XML на устройство netconf и определяет, были ли изменения в конфигурации.

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • ncclient

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
backup
boolean
    Варианты:
  • нет ←
  • да
Этот аргумент заставит модуль создать полную резервную копию текущего running-config с удаленного устройства перед внесением каких-либо изменений. Если значение backup_options не указано, файл резервной копии записывается в папку backup в корневом каталоге playbook или корневом каталоге роли, если playbook является частью роли ansible. Если каталог не существует, он создается.
backup_options
словарь
Это объект типа dict, содержащий настраиваемые параметры, связанные с путём к файлу резервной копии. Значение этого параметра считывается только когда backup установлено в да, если backup установлено в нет, этот параметр будет проигнорирован.
dir_path
путь
Этот параметр предоставляет путь, заканчивающийся именем каталога, в котором будет храниться файл конфигурации резервной копии. Если каталог не существует, он будет сначала создан, а имя файла — это либо значение filename, либо имя файла по умолчанию, как описано в описании параметров filename. Если значение пути не указано, в текущей рабочей директории будет создан каталог backup, и конфигурация резервной копии будет скопирована в filename в каталоге backup.
filename
строка
Имя файла, используемого для хранения конфигурации резервной копии. Если имя файла не указано, оно будет сгенерировано на основе имени хоста, текущего времени и даты в формате <имя_хоста>_config.<дата>@<время>
commit
boolean
    Варианты:
  • нет
  • да ←
Этот флаг boolean контролирует, должны ли изменения конфигурации быть сохранены или нет после редактирования целевого хранилища данных. Этот параметр поддерживается только в том случае, если удаленный сервер Netconf поддерживает возможность :candidate. Если значение установлено в False, коммит не будет выполнен после операции edit-config, и пользователю необходимо явно выполнить коммит или отменить изменения.
confirm
целое число
Значение по умолчанию:
0
Этот аргумент настраивает значение таймаута для подтверждения коммита, прежде чем он будет автоматически отменён. Если аргумент confirm_commit установлен в False, этот аргумент будет проигнорирован. Если значение этого аргумента установлено в 0, коммит подтверждается немедленно. Удаленный хост ДОЛЖЕН поддерживать возможности :candidate и :confirmed-commit для того, чтобы этот параметр работал.
confirm_commit
boolean
    Варианты:
  • нет ←
  • да
Этот аргумент выполнит операцию коммита на удалённом устройстве. Его можно использовать для подтверждения предыдущего коммита.
content
сырой
Данные конфигурации, определённые моделями данных устройства, значение может быть в формате xml-строки, текстовом формате или представлении python-словаря в формате JSON.
В случае JSON-строки она будет преобразована в соответствующую xml-строку с помощью библиотеки xmltodict перед отправкой на удалённый хост.
В случае значения этого параметра в формате текст формат должен поддерживаться удалённым сервером Netconf.
Если значение параметра content в формате xml, в этом случае значение xml должно иметь config в качестве корневого тега.

алиасы: xml
default_operation
строка
    Варианты:
  • merge
  • replace
  • none
Операция по умолчанию для rpc <edit-config>, допустимые значения — merge, replace и none. Если значение по умолчанию — merge, данные конфигурации в параметре content объединяются на соответствующем уровне в хранилище данных target. Если значение — replace, данные в параметре content полностью заменяют конфигурацию в хранилище данных target. Если значение — none, хранилище данных target не затрагивается конфигурацией в параметре config, если только входящие данные конфигурации не используют операцию operation для запроса другой операции.
delete
boolean
    Варианты:
  • нет ←
  • да
Инструктирует модуль удалить конфигурацию из хранилища данных, указанного в target.
error_option
строка
    Варианты:
  • остановка_при_ошибке ←
  • продолжение_при_ошибке
  • откат_при_ошибке
Этот параметр контролирует действие сервера netconf после возникновения ошибки при редактировании конфигурации.
Если error_option=остановка_при_ошибке, прервать редактирование конфигурации при первой ошибке.
Если error_option=продолжение_при_ошибке, продолжить обработку данных конфигурации при ошибке. Ошибка записывается, и генерируется отрицательный ответ, если какие-либо ошибки возникнут.
Если error_option=откат_при_ошибке, откатиться к исходной конфигурации, если произошла ошибка. Это требует от удалённого сервера Netconf поддержки возможности error_option=откат_при_ошибке.
format
строка
    Варианты:
  • xml
  • текст
  • json
Формат конфигурации, предоставляемый как значение content.
В случае JSON-строки она будет преобразована в соответствующую xml-строку с помощью библиотеки xmltodict перед отправкой на удалённый хост.
В случае формата текст формат должен поддерживаться удалённым сервером Netconf.
Если значение параметра format не указано, то пытается определить формат данных параметра content как один из xml, json или текст.
Если формат данных не определён, он устанавливается по умолчанию в xml.
get_filter
сырой
Этот аргумент указывает XML-строку, которая действует как фильтр, ограничивающий части данных, извлечённых с удалённого устройства при сравнении состояния до и после устройства после вызовов edit_config. Если не указано, возвращаются все данные конфигурации или состояния для сравнения в зависимости от значения параметра source. Значение get_filter может быть либо XML-строкой, либо XPath, либо JSON-строкой, либо собственным python-словарями. Если фильтр в формате XPath, сервер NETCONF на удалённом хосте должен поддерживать возможность xpath, иначе это приведёт к ошибке.
host
строка
Указывает имя хоста DNS или адрес для подключения к удалённому устройству по указанному транспорту. Значение host используется в качестве целевого адреса для транспорта.
hostkey_verify
boolean
    Варианты:
  • нет
  • да ←
Если установлено в yes, ключ хоста ssh устройства должен совпадать с ключом ssh, присутствующим на хосте. Если установлено в no, ключ хоста ssh устройства не проверяется.
lock
строка
    Варианты:
  • никогда
  • всегда ←
  • если_поддерживается
Инструктирует модуль явно заблокировать хранилище данных, указанное как target. Установив значение всегда, он явно заблокирует хранилище данных, указанное в параметре target. Если значение — никогда, хранилище данных target не будет заблокировано. Значение если_поддерживается блокирует хранилище данных target только в том случае, если оно поддерживается удалённым сервером Netconf.
look_for_keys
boolean
    Варианты:
  • нет
  • да ←
Включает поиск ключей ssh в стандартных расположениях (например, :file:`~/.ssh/id_*`)
password
строка
Указывает пароль для аутентификации подключения к удалённому устройству. Это значение используется для аутентификации сеанса SSH. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_PASSWORD.
port
целое число
Значение по умолчанию:
830
Указывает порт для подключения к удалённому устройству. Значение порта по умолчанию — 830.
save
boolean
    Варианты:
  • нет ←
  • да
Аргумент save инструктирует модуль сохранить конфигурацию в хранилище данных target в startup-config, если она была изменена и если сервер Netconf поддерживает возможность :startup.
source_datastore
строка
Имя хранилища данных конфигурации, используемого в качестве источника для копирования конфигурации в хранилище данных, указанное параметром target. Значения могут быть running, candidate, startup или удалённым URL.

алиасы: source
src
путь
Указывает путь к исходному xml-файлу, содержащему конфигурацию или шаблон конфигурации для загрузки. Путь к исходному файлу может быть полным путём на хосте Ansible или относительным путём от корневой директории playbook или роли. Этот аргумент взаимоисключающий с xml.
ssh_keyfile
путь
Указывает SSH-ключ для аутентификации подключения к удалённому устройству. Это путь к ключу, используемому для аутентификации сеанса SSH. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_SSH_KEYFILE.
target
string
    Варианты:
  • auto ←
  • candidate
  • running
Имя конфигурационного хранилища данных для редактирования. - auto, использует candidate и fallback к running - candidate, редактирует хранилище данных <candidate/> и затем производит коммит - running, непосредственно редактирует хранилище данных <running/>

псевдонимы: datastore
timeout
integer
По умолчанию:
10
Устанавливает таймаут в секундах для связи с сетевым устройством при подключении или отправке команд. Если таймаут истекает до завершения операции, модуль выдаст ошибку.
username
string
Настраивает имя пользователя для аутентификации подключения к удалённому устройству. Это значение используется для аутентификации сеанса SSH. Если значение не указано в задаче, будет использовано значение переменной среды ANSIBLE_NET_USERNAME.
validate
boolean
    Варианты:
  • no ←
  • yes
Этот флаг boolean, если установлен, проверяет содержимое хранилища данных, указанного в параметре target. Для работы этого параметра удалённый сервер Netconf должен поддерживать возможность :validate.

Примечания

Примечание

  • Данный модуль требует, чтобы служба netconf была включена на удалённом управляемом устройстве.
  • Этот модуль поддерживает устройства с и без возможностей candidate и confirmed-commit. Он всегда будет использовать более безопасную функцию.
  • Этот модуль поддерживает использование connection=netconf
  • Дополнительную информацию об использовании netconf см. в руководстве Platform Options, использующих Netconf
  • Дополнительную информацию об использовании Ansible для управления сетевыми устройствами см. в Руководстве по сетям Ansible
  • Этот модуль поддерживается на сетевых платформах ansible_network_os. Подробности см. в Параметрах сетевой платформы.

Примеры

- name: use lookup filter to provide xml configuration
  ansible.netcommon.netconf_config:
    content: "{{ lookup('file', './config.xml') }}"

- name: set ntp server in the device
  ansible.netcommon.netconf_config:
    content: |
      <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
          <system xmlns="urn:ietf:params:xml:ns:yang:ietf-system">
              <ntp>
                  <enabled>true</enabled>
                  <server>
                      <name>ntp1</name>
                      <udp><address>127.0.0.1</address></udp>
                  </server>
              </ntp>
          </system>
      </config>

- name: wipe ntp configuration
  ansible.netcommon.netconf_config:
    content: |
      <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
          <system xmlns="urn:ietf:params:xml:ns:yang:ietf-system">
              <ntp>
                  <enabled>false</enabled>
                  <server operation="remove">
                      <name>ntp1</name>
                  </server>
              </ntp>
          </system>
      </config>

- name: configure interface while providing different private key file path (for connection=netconf)
  ansible.netcommon.netconf_config:
    backup: yes
  register: backup_junos_location
  vars:
    ansible_private_key_file: /home/admin/.ssh/newprivatekeyfile

- name: configurable backup path
  ansible.netcommon.netconf_config:
    backup: yes
    backup_options:
      filename: backup.cfg
      dir_path: /home/user

- name: "configure using direct native format configuration (cisco iosxr)"
  ansible.netcommon.netconf_config:
    format: json
    content: {
                "config": {
                    "interface-configurations": {
                        "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg",
                        "interface-configuration": {
                            "active": "act",
                            "description": "test for ansible Loopback999",
                            "interface-name": "Loopback999"
                        }
                    }
                }
            }
    get_filter: {
                  "interface-configurations": {
                      "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg",
                      "interface-configuration": null
                  }
              }

- name: "configure using json string format configuration (cisco iosxr)"
  ansible.netcommon.netconf_config:
    format: json
    content: |
            {
                "config": {
                    "interface-configurations": {
                        "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg",
                        "interface-configuration": {
                            "active": "act",
                            "description": "test for ansible Loopback999",
                            "interface-name": "Loopback999"
                        }
                    }
                }
            }
    get_filter: |
            {
                  "interface-configurations": {
                      "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg",
                      "interface-configuration": null
                  }
              }


# Make a round-trip interface description change, diff the before and after
# this demonstrates the use of the native display format and several utilities
# from the ansible.utils collection

- name: Define the openconfig interface filter
  set_fact:
    filter:
      interfaces:
        "@xmlns": "http://openconfig.net/yang/interfaces"
        interface:
          name: Ethernet2

- name: Get the pre-change config using the filter
  ansible.netcommon.netconf_get:
    source: running
    filter: "{{ filter }}"
    display: native
  register: pre

- name: Update the description
  ansible.utils.update_fact:
    updates:
    - path: pre.output.data.interfaces.interface.config.description
      value: "Configured by ansible {{ 100 | random }}"
  register: updated

- name: Apply the new configuration
  ansible.netcommon.netconf_config:
    content:
      config:
        interfaces: "{{ updated.pre.output.data.interfaces }}"

- name: Get the post-change config using the filter
  ansible.netcommon.netconf_get:
    source: running
    filter: "{{ filter }}"
    display: native
  register: post

- name: Show the differences between the pre and post configurations
  ansible.utils.fact_diff:
    before: "{{ pre.output.data|ansible.utils.to_paths }}"
    after: "{{ post.output.data|ansible.utils.to_paths }}"

# TASK [Show the differences between the pre and post configurations] ********
# --- before
# +++ after
# @@ -1,11 +1,11 @@
#  {
# -    "@time-modified": "2020-10-23T12:27:17.462332477Z",
# +    "@time-modified": "2020-10-23T12:27:21.744541708Z",
#      "@xmlns": "urn:ietf:params:xml:ns:netconf:base:1.0",
#      "interfaces.interface.aggregation.config['fallback-timeout']['#text']": "90",
#      "interfaces.interface.aggregation.config['fallback-timeout']['@xmlns']": "http://arista.com/yang/openconfig/interfaces/augments",
#      "interfaces.interface.aggregation.config['min-links']": "0",
#      "interfaces.interface.aggregation['@xmlns']": "http://openconfig.net/yang/interfaces/aggregate",
# -    "interfaces.interface.config.description": "Configured by ansible 56",
# +    "interfaces.interface.config.description": "Configured by ansible 67",
#      "interfaces.interface.config.enabled": "true",
#      "interfaces.interface.config.mtu": "0",
#      "interfaces.interface.config.name": "Ethernet2",

Возвращаемые значения

Общие возвращаемые значения описаны в этом разделе. Следующие поля уникальны для этого модуля:

Ключ Возвращаемое значение Описание
backup_path
string
при backup = yes
Полный путь к резервной копии файла

Пример:
/playbooks/ansible/backup/config.2016-07-16@22:28:34
diff
dictionary
при включенном diff
Если опция --diff включена во время выполнения, изменения конфигурации до и после возвращаются в качестве ключей before и after.

Пример:
{'after': '<rpc-reply> <data> <configuration> <version>17.3R1.10</version>...<--snip-->', 'before': '<rpc-reply> <data> <configuration> <version>17.3R1.10</version>...<--snip-->'}
server_capabilities
list / elements=string
успешно
список возможностей сервера

Пример:
['urn:ietf:params:netconf:base:1.1', 'urn:ietf:params:netconf:capability:confirmed-commit:1.0', 'urn:ietf:params:netconf:capability:candidate:1.0']


Авторы

  • Leandro Lisboa Penz (@lpenz)
  • Ganesh Nalawade (@ganeshrn)

© 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/ansible/netcommon/netconf_config_module.html

Spec-Zone.ru

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