Spec-Zone.ru › Ansible 2.10

ansible.netcommon.netconf_config – настройка устройства netconf

Примечание

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

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

Для использования в книге задач укажите: ansible.netcommon.netconf_config.

Введено в версии 1.0.0: of ansible.netcommon

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

Обзор

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

Требования

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

  • ncclient

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
backup
логический тип
    Варианты:
  • нет ←
  • да
Этот аргумент заставит модуль создать полную резервную копию текущего running-config с удаленного устройства перед внесением каких-либо изменений. Если значение backup_options не задано, файл резервной копии записывается в папку backup в корневом каталоге книги задач или в корневом каталоге роли, если книга задач является частью роли ansible. Если каталог не существует, он создается.
backup_options
словарь
Это объект типа dict, содержащий настраиваемые параметры, связанные с путем к файлу резервной копии. Значение этого параметра читается только тогда, когда backup установлено в да, если backup установлено в нет, этот параметр будет проигнорирован.
dir_path
путь
Этот параметр предоставляет путь, заканчивающийся именем каталога, в котором будет храниться файл конфигурации резервной копии. Если каталог не существует, он будет сначала создан, а имя файла — это значение filename или имя файла по умолчанию, как описано в filename описании параметров. Если значение пути не задано, в текущем рабочем каталоге будет создан каталог backup, и конфигурация резервной копии будет скопирована в filename внутри каталога backup.
filename
строка
Имя файла, используемое для хранения резервной копии конфигурации. Если имя файла не задано, оно генерируется на основе имени хоста, текущей даты и времени в формате <имя_хоста>_config.<дата>@<время>
commit
логический тип
    Варианты:
  • нет
  • да ←
Этот флаг логического типа управляет тем, должны ли изменения конфигурации быть сохранены или нет после редактирования кандидатского хранилища данных. Этот параметр поддерживается только в том случае, если удаленный сервер Netconf поддерживает возможность :candidate. Если значение установлено в False, после операции edit-config не будет выполнен commit, и пользователю необходимо явно выполнить commit или discard-changes.
confirm
целое число
Значение по умолчанию:
0
Этот аргумент настраивает значение таймаута для подтверждения commit перед его автоматической откат. Если аргумент confirm_commit установлен в False, этот аргумент будет проигнорирован. Если значение этого аргумента установлено в 0, commit подтверждается немедленно. Для работы этого параметра удаленный хост ДОЛЖЕН поддерживать возможности :candidate и :confirmed-commit.
confirm_commit
логический тип
    Варианты:
  • нет ←
  • да
Этот аргумент выполнит операцию commit на удаленном устройстве. Его можно использовать для подтверждения предыдущего commit.
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
логический тип
    Варианты:
  • нет ←
  • да
Указывает модулю на удаление конфигурации из хранилища данных, упомянутого в target.
error_option
строка
    Варианты:
  • stop-on-error ←
  • continue-on-error
  • rollback-on-error
Этот параметр управляет действиями сервера netconf после возникновения ошибки при редактировании конфигурации.
Если error_option=stop-on-error, прервать редактирование конфигурации при первой ошибке.
Если error_option=continue-on-error, продолжить обработку данных конфигурации при ошибке. Ошибка записывается, и генерируется отрицательный ответ, если произойдут какие-либо ошибки.
Если error_option=rollback-on-error, откатиться к исходной конфигурации при возникновении любой ошибки. Для этого требуется, чтобы удаленный сервер Netconf поддерживал возможность error_option=rollback-on-error.
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
логический тип
    Варианты:
  • нет
  • да ←
Если установлено в yes, ssh-ключ хоста устройства должен соответствовать ssh-ключам, присутствующим на хосте; если установлено в no, ssh-ключ хоста устройства не проверяется.
lock
строка
    Варианты:
  • никогда
  • всегда ←
  • если_поддерживается
Указывает модулю явно заблокировать хранилище данных, указанное как target. Установив значение всегда, он явно заблокирует хранилище данных, упомянутое в параметре target. Если значение — никогда, хранилище данных target не будет заблокировано. Значение если_поддерживается блокирует хранилище данных target только в том случае, если это поддерживается удаленным сервером Netconf.
look_for_keys
логический тип
    Варианты:
  • нет
  • да ←
Включает поиск ssh-ключей в стандартных местах (например, :file:`~/.ssh/id_*`)
password
строка
Указывает пароль для аутентификации подключения к удаленному устройству. Это значение используется для аутентификации сессии SSH. Если значение не указано в задаче, используется значение переменной окружения ANSIBLE_NET_PASSWORD.
port
целое число
Значение по умолчанию:
830
Указывает порт для подключения к удаленному устройству. Порт по умолчанию — 830.
save
логический тип
    Варианты:
  • нет ←
  • да
Аргумент save указывает модулю сохранить конфигурацию в хранилище данных target в startup-config при изменении, если :startup-возможность поддерживается сервером Netconf.
source_datastore
строка
Имя хранилища данных конфигурации, используемого в качестве источника для копирования конфигурации в хранилище данных, указанное параметром target. Допустимые значения — running, candidate, startup или удаленный URL.

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

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

Примечания

Примечание

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

Примеры

- 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:
    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:
    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
строка
при backup = yes
Полный путь к файлу резервной копии

Пример:
/playbooks/ansible/backup/config.2016-07-16@22:28:34
diff
словарь
при включённом 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
список / элементы=строка
успех
список возможностей сервера

Пример:
['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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/ansible/netcommon/netconf_config_module.html

Spec-Zone.ru

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