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 строка |
| Операция по умолчанию для rpc <edit-config>, допустимые значения — merge, replace и none. Если значение по умолчанию — merge, данные конфигурации в параметре content объединяются на соответствующем уровне в хранилище данных target. Если значение — replace, данные в параметре content полностью заменяют конфигурацию в хранилище данных target. Если значение — none, хранилище данных target не затрагивается конфигурацией в параметре config, пока и до тех пор, пока входящие данные конфигурации не используют операцию operation для запроса другой операции. | |
| delete логический тип |
| Указывает модулю на удаление конфигурации из хранилища данных, упомянутого в target. | |
| error_option строка |
| Этот параметр управляет действиями сервера netconf после возникновения ошибки при редактировании конфигурации. Если error_option=stop-on-error, прервать редактирование конфигурации при первой ошибке. Если error_option=continue-on-error, продолжить обработку данных конфигурации при ошибке. Ошибка записывается, и генерируется отрицательный ответ, если произойдут какие-либо ошибки. Если error_option=rollback-on-error, откатиться к исходной конфигурации при возникновении любой ошибки. Для этого требуется, чтобы удаленный сервер Netconf поддерживал возможность error_option=rollback-on-error. | |
| format строка |
| Формат конфигурации, предоставляемой в качестве значения 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 и fallback к running - candidate, редактирует хранилище <candidate/> и затем сохраняет изменения - running, редактирует хранилище <running/> непосредственно псевдонимы: хранилище | |
| timeout целое число | Значение по умолчанию: 10 | Указывает таймаут в секундах для связи с сетевым устройством для подключения или отправки команд. Если таймаут истечёт до завершения операции, модуль выдаст ошибку. | |
| username строка | Настраивает имя пользователя для аутентификации подключения к удалённому устройству. Это значение используется для аутентификации сеанса SSH. Если значение не указано в задаче, используется значение переменной среды ANSIBLE_NET_USERNAME. | ||
| validate булево |
| Этот флаг булевого типа, если установлен, проверяет содержимое хранилища данных, указанного в параметре 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