Модули сетевых ресурсов
В Ansible 2.9 были введены модули сетевых ресурсов для упрощения и стандартизации управления различными сетевыми устройствами.
- Понимание модулей сетевых ресурсов
- Состояния модулей сетевых ресурсов
- Использование модулей сетевых ресурсов
- Пример: Проверка того, что конфигурация сетевого устройства не изменилась
Понимание модулей сетевых ресурсов
Сетевые устройства разделяют конфигурацию на разделы (такие как интерфейсы, VLAN и т. д.), которые применяются к сетевой службе. Модули сетевых ресурсов Ansible используют это, позволяя вам настраивать подразделы или ресурсы в конфигурации сетевого устройства. Модули сетевых ресурсов обеспечивают согласованный опыт работы с различными сетевыми устройствами.
Состояния модулей сетевых ресурсов
Вы используете модули сетевых ресурсов, назначая состояние тому, что вы хотите, чтобы модуль делал. Модули ресурсов поддерживают следующие состояния:
- merged
- Ansible объединяет конфигурацию на устройстве с предоставленной конфигурацией в задаче.
- replaced
- Ansible заменяет подсекцию конфигурации на устройстве на предоставленную подсекцию конфигурации в задаче.
- overridden
- Ansible переопределяет конфигурацию на устройстве для ресурса с предоставленной конфигурацией в задаче. Будьте осторожны с этим состоянием, так как вы можете удалить доступ к устройству (например, путем переопределения конфигурации интерфейса управления).
- deleted
- Ansible удаляет подсекцию конфигурации на устройстве и восстанавливает любые значения по умолчанию.
- gathered
- Ansible отображает подробности ресурса, собранные с сетевого устройства, и доступные с помощью ключа
gatheredв результате. - rendered
- Ansible отображает предоставленную конфигурацию в задаче в формате, родном для устройства (например, Cisco IOS CLI). Ansible возвращает эту отрендеренную конфигурацию в ключе
renderedв результате. Обратите внимание, что это состояние не взаимодействует с сетевым устройством и может использоваться автономно. - parsed
- Ansible анализирует конфигурацию из опции
running_configurationв структурированные данные Ansible в ключеparsedв результате. Обратите внимание, что это не собирает конфигурацию с сетевого устройства, поэтому это состояние может быть использовано автономно.
Использование модулей сетевых ресурсов
В этом примере настраивается ресурс интерфейса L3 на устройстве Cisco IOS на основе различных настроек состояния.
- name: configure l3 interface
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
Пример: Проверка того, что конфигурация сетевого устройства не изменилась
В следующей книге задач используется модуль eos_l3_interfaces для сбора подмножества конфигурации сетевого устройства (только интерфейсы уровня 3) и проверяет, что информация верна и не изменилась. Эта книга задач передает результаты eos_facts непосредственно в модуль eos_l3_interfaces.
- name: Example of facts being pushed right back to device.
hosts: arista
gather_facts: false
tasks:
- name: grab arista eos facts
eos_facts:
gather_subset: min
gather_network_resources: l3_interfaces
- name: Ensure that the IP address information is accurate.
eos_l3_interfaces:
config: "{{ ansible_network_resources['l3_interfaces'] }}"
register: result
- name: Ensure config did not change.
assert:
that: not result.changed
См. также
- Сетевые возможности в Ansible 2.9
- Вводная статья в блоге о модулях сетевых ресурсов.
- Глубокое погружение в модули сетевых ресурсов
- Более глубокий презентация модулей сетевых ресурсов.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/network/user_guide/network_resource_modules.html