Spec-Zone.ru › Ansible 2.11

ansible.netcommon.netconf_get – Получение данных конфигурации/состояния с сетевых устройств, поддерживающих NETCONF.

Примечание

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

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

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

Новое в версии 1.0.0: из ansible.netcommon

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

Описание

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

Требования

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

  • ncclient (>=v0.5.2)
  • jxmlease (для display=json)
  • xmltodict (для display=native)

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
display
строка
    Варианты:
  • json
  • pretty
  • xml
  • native
Схема кодирования, используемая при сериализации выходных данных устройства. Вариант json сериализует вывод как данные JSON. Если значение варианта json, требуется установка jxmlease на управляющем узле. Вариант pretty аналогичен полученному XML-ответу, но использует удобочитаемый формат (пробелы, новые строки). Вариант xml аналогичен полученному XML-ответу, но удаляет все XML-префиксы.
filter
сырой
Этот аргумент задаёт строку, которая используется как фильтр для ограничения частей данных, которые должны быть извлечены с удалённого устройства. Если этот параметр не задан, в результате возвращаются все данные конфигурации или состояния в зависимости от значения параметра source. Значение filter может быть либо XML-строкой, либо XPath-выражением, либо JSON-строкой, либо обычным словарем Python. Если фильтр указан в формате XPath, сервер NETCONF на удалённом узле должен поддерживать XPath, в противном случае произойдёт ошибка. Если фильтр находится в формате JSON, библиотека xmltodict должна быть установлена на управляющем узле для преобразования JSON в XML.
lock
строка
    Варианты:
  • никогда ←
  • всегда
  • если_поддерживается
Инструктирует модуль явно заблокировать хранилище данных, указанное как source. Если не определён параметр source, будет заблокировано хранилище running. Установив значение всегда, модуль будет явно блокировать хранилище данных, указанное в параметре source. Установив значение никогда, модуль не будет блокировать хранилище данных source. Значение если_поддерживается позволяет лучше взаимодействовать с серверами NETCONF, которые не поддерживают операции (раз)блокировки для всех поддерживаемых хранилищ данных.
source
строка
    Варианты:
  • running
  • candidate
  • startup
Этот аргумент задаёт хранилище данных, из которого должны извлекаться данные конфигурации. Допустимые значения — running, candidate и startup. Если значение source не задано, в ответе возвращаются конфигурационная и системная информация из хранилища running.

Примечания

Примечание

  • Этот модуль требует, чтобы служба NETCONF была включена на удалённом управляемом устройстве.
  • Этот модуль поддерживает использование connection=netconf
  • Этот модуль поддерживается на ansible_network_os сетевых платформах. Подробности см. в разделе Параметры сетевых платформ.

Примеры

- name: Get running configuration and state data
  ansible.netcommon.netconf_get:

- name: Get configuration and state data from startup datastore
  ansible.netcommon.netconf_get:
    source: startup

- name: Get system configuration data from running datastore state (junos)
  ansible.netcommon.netconf_get:
    source: running
    filter: <configuration><system></system></configuration>

- name: Get configuration and state data in JSON format
  ansible.netcommon.netconf_get:
    display: json

- name: get schema list using subtree w/ namespaces
  ansible.netcommon.netconf_get:
    display: json
    filter: <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"><schemas><schema/></schemas></netconf-state>
    lock: never

- name: get schema list using xpath
  ansible.netcommon.netconf_get:
    display: xml
    filter: /netconf-state/schemas/schema

- name: get interface configuration with filter (iosxr)
  ansible.netcommon.netconf_get:
    display: pretty
    filter: <interface-configurations xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg"></interface-configurations>
    lock: if-supported

- name: Get system configuration data from running datastore state (junos)
  ansible.netcommon.netconf_get:
    source: running
    filter: <configuration><system></system></configuration>
    lock: if-supported

- name: Get complete configuration data from running datastore (SROS)
  ansible.netcommon.netconf_get:
    source: running
    filter: <configure xmlns="urn:nokia.com:sros:ns:yang:sr:conf"/>

- name: Get complete state data (SROS)
  ansible.netcommon.netconf_get:
    filter: <state xmlns="urn:nokia.com:sros:ns:yang:sr:state"/>

- name: "get configuration with json filter string and native output (using xmltodict)"
  netconf_get:
    filter: |
              {
                  "interface-configurations": {
                      "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg",
                      "interface-configuration": null
                  }
              }
    display: native

- name: Define the Cisco IOSXR interface filter
  set_fact:
    filter:
      interface-configurations:
        "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg"
        interface-configuration: null

- name: "get configuration with native filter type using set_facts"
  ansible.netcommon.netconf_get:
    filter: "{{ filter }}"
    display: native
  register: result

- name: "get configuration with direct native filter type"
  ansible.netcommon.netconf_get:
    filter: {
            "interface-configurations": {
            "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg",
            "interface-configuration": null
      }
    }
    display: native
  register: result


# 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",

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

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

Ключ Возвращаемое Описание
output
сложное
Если формат вывода выбран как json, он возвращается как словарь типа dict, и преобразование выполняется с помощью библиотеки jxmlease. Если формат вывода выбран как native, он возвращается как словарь типа dict, и преобразование выполняется с помощью библиотеки xmltodict. Если формат вывода xml или pretty, он возвращается как строка, за исключением ошибок низкого уровня (например, ошибки плагина действия).
В зависимости от значения параметра display возвращается либо набор преобразованных XML-данных в формате JSON (тип dict) из ответа RPC, либо красивый XML-строковый ответ (удобный для чтения) либо ответ с удалёнными XML-префиксами.

formatted_output
строка
успех
Содержит отформатированный ответ, полученный от удалённого узла в соответствии со значением параметра формата вывода.

stdout
строка
всегда, кроме ошибок низкого уровня (таких как плагин действия)
Необработанная XML-строка, содержащая данные конфигурации или состояния, полученные из библиотеки ncclient.

Пример:
...
stdout_lines
список / элементы=строка
всегда, кроме ошибок низкого уровня (таких как плагин действия)
Значение stdout, разделённое на список

Пример:
['...', '...']


Авторы

  • Ganesh Nalawade (@ganeshrn)
  • Sven Wisotzky (@wisotzky)

© 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_get_module.html

Spec-Zone.ru

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