Модули сетевых ресурсов
Модули сетевых ресурсов 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 |
|
| ||
| ||
|
Модули сетевых ресурсов возвращают следующие сведения:
- Состояние 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 на сетевом устройстве
В этом примере показано, как с помощью модулей ресурсов можно:
- Получить текущую конфигурацию сетевого устройства.
- Сохранить эту конфигурацию локально.
- Обновить эту конфигурацию и применить её к сетевому устройству.
В этом примере для получения и обновления VLAN на устройстве IOS используется модуль ресурса cisco.ios.ios_vlans.
- Получите текущую конфигурацию VLAN в IOS:
- name: Gather VLAN information as structured data
cisco.ios.ios_facts:
gather_subset:
- '!all'
- '!min'
gather_network_resources:
- 'vlans'
- Сохраните конфигурацию VLAN локально:
- name: Store VLAN facts to host_vars
copy:
content: "{{ ansible_network_resources | to_nice_yaml }}"
dest: "{{ playbook_dir }}/host_vars/{{ inventory_hostname }}"
- Измените сохранённый файл, чтобы обновить конфигурацию VLAN локально.
- Объедините обновлённую конфигурацию 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