Spec-Zone.ru › Ansible

Модули сетевых ресурсов

Модули сетевых ресурсов Ansible упрощают и стандартизируют управление различными сетевыми устройствами. Сетевые устройства разделяют конфигурацию на разделы (например, интерфейсы и VLAN), которые применяются к сетевой службе. Модули сетевых ресурсов Ansible используют это, позволяя настраивать подразделы или ресурсы в конфигурации сетевого устройства. Модули сетевых ресурсов обеспечивают единообразие работы с различными сетевыми устройствами.

  • Состояния модулей сетевых ресурсов
  • Использование модулей сетевых ресурсов
  • Пример: проверка отсутствия изменений в конфигурации сетевого устройства
  • Пример: получение и обновление VLAN на сетевом устройстве

Состояния модулей сетевых ресурсов

Чтобы использовать модули сетевых ресурсов, назначьте состояние, определяющее, что должен делать модуль. Модули ресурсов поддерживают следующие состояния:

merged

Ansible объединяет конфигурацию устройства с конфигурацией, указанной в задаче.

replaced

Ansible заменяет подраздел конфигурации устройства подразделом конфигурации, указанным в задаче.

overridden

Ansible переопределяет конфигурацию ресурса на устройстве конфигурацией, указанной в задаче. Используйте это состояние с осторожностью: вы можете потерять доступ к устройству (например, переопределив конфигурацию интерфейса управления).

deleted

Ansible удаляет подраздел конфигурации устройства и восстанавливает настройки по умолчанию.

gathered

Ansible отображает сведения о ресурсе, полученные с сетевого устройства и доступные по ключу gathered в результате.

rendered

Ansible преобразует указанную в задаче конфигурацию в собственный формат устройства (например, Cisco IOS CLI). Ansible возвращает эту преобразованную конфигурацию по ключу rendered в результате. Обратите внимание: в этом состоянии связь с сетевым устройством не устанавливается, поэтому его можно использовать автономно.

parsed

Ansible анализирует конфигурацию из параметра running_config и преобразует её в структурированные данные Ansible, доступные по ключу parsed в результате. Обратите внимание: конфигурация не собирается с сетевого устройства, поэтому это состояние можно использовать автономно.

Использование модулей сетевых ресурсов

В этом примере на устройстве Cisco IOS настраивается ресурс интерфейса L3 с использованием различных параметров состояния.

- name: configure l3 interface
  cisco.ios.ios_l3_interfaces:
    config: "{{ config }}"
    state: <state>

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

Исходная конфигурация ресурса

Конфигурация, заданная в задаче (YAML)

Итоговая конфигурация ресурса на устройстве

interface loopback100
 ip address 10.10.1.100 255.255.255.0
 ipv6 address FC00:100/64
config:
- ipv6:
  - address: fc00::100/64
  - address: fc00::101/64
  name: loopback100
merged
interface loopback100
 ip address 10.10.1.100 255.255.255.0
 ipv6 address FC00:100/64
 ipv6 address FC00:101/64
replaced
interface loopback100
 no ip address
 ipv6 address FC00:100/64
 ipv6 address FC00:101/64
overridden

Неверный вариант использования. В результате с устройства будут удалены все интерфейсы

(включая интерфейс управления), кроме

настроенного loopback100

deleted
interface loopback100
 no ip address

Модули сетевых ресурсов возвращают следующие сведения:

  • Состояние before — существующая конфигурация ресурса до выполнения задачи.
  • Состояние after — новая конфигурация ресурса на сетевом устройстве после выполнения задачи.
  • Команды — все команды, настроенные на устройстве.
ok: [nxos101] =>
  result:
    after:
      contact: IT Support
      location: Room E, Building 6, Seattle, WA 98134
      users:
      - algorithm: md5
        group: network-admin
        localized_key: true
        password: '0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
        privacy_password: '0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
        username: admin
    before:
      contact: IT Support
      location: Room E, Building 5, Seattle HQ
      users:
      - algorithm: md5
        group: network-admin
        localized_key: true
        password: '0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
        privacy_password: '0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
        username: admin
    changed: true
    commands:
    - snmp-server location Room E, Building 6, Seattle, WA 98134
    failed: false

Пример: проверка отсутствия изменений в конфигурации сетевого устройства

В следующем сценарии используется модуль arista.eos.eos_l3_interfaces, чтобы получить часть конфигурации сетевого устройства (только интерфейсы уровня 3) и проверить точность и неизменность полученных данных. Результаты работы модуля arista.eos.eos_facts передаются непосредственно модулю arista.eos.eos_l3_interfaces.

- name: Example of facts being pushed right back to device.
  hosts: arista
  gather_facts: false
  tasks:
    - name: grab arista eos facts
      arista.eos.eos_facts:
        gather_subset: min
        gather_network_resources: l3_interfaces

- name: Ensure that the IP address information is accurate.
  arista.eos.eos_l3_interfaces:
    config: "{{ ansible_network_resources['l3_interfaces'] }}"
    register: result

- name: Ensure config did not change.
  assert:
    that: not result.changed

Пример: получение и обновление VLAN на сетевом устройстве

В этом примере показано, как с помощью модулей ресурсов можно:

  1. Получить текущую конфигурацию сетевого устройства.
  2. Сохранить эту конфигурацию локально.
  3. Обновить эту конфигурацию и применить её к сетевому устройству.

В этом примере для получения и обновления VLAN на устройстве IOS используется модуль ресурса cisco.ios.ios_vlans.

  1. Получите текущую конфигурацию VLAN в IOS:
- name: Gather VLAN information as structured data
  cisco.ios.ios_facts:
     gather_subset:
      - '!all'
      - '!min'
     gather_network_resources:
     - 'vlans'
  1. Сохраните конфигурацию VLAN локально:
- name: Store VLAN facts to host_vars
  copy:
    content: "{{ ansible_network_resources | to_nice_yaml }}"
    dest: "{{ playbook_dir }}/host_vars/{{ inventory_hostname }}"
  1. Измените сохранённый файл, чтобы обновить конфигурацию VLAN локально.
  2. Объедините обновлённую конфигурацию VLAN с существующей конфигурацией на устройстве:
- name: Make VLAN config changes by updating stored facts on the control node.
  cisco.ios.ios_vlans:
    config: "{{ vlans }}"
    state: merged
  tags: update_config

См. также

Сетевые возможности в Ansible 2.9

Вводная статья в блоге о модулях сетевых ресурсов.

Подробный обзор модулей сетевых ресурсов

Подробная презентация о модулях сетевых ресурсов.

© 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/network/user_guide/network_resource_modules.html

Spec-Zone.ru

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