Модули ресурсов сети
Модули ресурсов сети 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 |
|
| ||
| ||
|
Модули ресурсов сети возвращают следующую информацию:
- Состояние до - существующая конфигурация ресурса до выполнения задачи.
- Состояние после - новая конфигурация ресурса, которая существует на сетевом устройстве после выполнения задачи.
- Команды - любые команды, настроенные на устройстве.
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 на сетевом устройстве
Этот пример показывает, как вы можете использовать модули ресурсов для:
- Получения текущей конфигурации на сетевом устройстве.
- Сохранения этой конфигурации локально.
- Обновления этой конфигурации и ее применения к сетевому устройству.
В этом примере используется модуль ресурса cisco.ios.ios_vlans для получения и обновления VLAN на устройстве IOS.
- Получение текущей конфигурации 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–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