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 в результате. Обратите внимание, что это не собирает конфигурацию со сетевого устройства, поэтому это состояние может быть использовано автономно.

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

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

- 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

Модули ресурсов сети возвращают следующую информацию:

  • Состояние до - существующая конфигурация ресурса до выполнения задачи.
  • Состояние после - новая конфигурация ресурса, которая существует на сетевом устройстве после выполнения задачи.
  • Команды - любые команды, настроенные на устройстве.
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. Обновления этой конфигурации и ее применения к сетевому устройству.

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

  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–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/network/user_guide/network_resource_modules.html

Spec-Zone.ru

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