Как отличается автоматизация сетей
Автоматизация сетей использует основные концепции Ansible, но существуют важные различия в работе модулей сети. Это введение поможет вам понять упражнения в этом руководстве.
- Выполнение на управляющем узле
- Несколько протоколов связи
- Сборки, организованные по платформам сети
-
Масштабирование привилегий: режим
enable,become, иauthorize
Выполнение на управляющем узле
В отличие от большинства модулей Ansible, модули сети не выполняются на управляемых узлах. С точки зрения пользователя, модули сети работают как любые другие модули. Они работают с адхок-командами, плейбуками и ролями. Однако, за кулисами, модули сети используют другую методологию, чем другие модули (Linux/Unix и Windows). Ansible написан и выполняется на Python. Поскольку большинство сетевых устройств не могут запускать Python, модули сети Ansible выполняются на управляющем узле Ansible, где выполняется ansible или ansible-playbook.
Модули сети также используют управляющий узел в качестве места назначения для резервных файлов для тех модулей, которые предлагают опцию backup. В модулях Linux/Unix, где файл конфигурации уже существует на управляемом узле(ах), резервный файл записывается по умолчанию в той же директории, что и новый, измененный файл. Модули сети не обновляют файлы конфигурации на управляемых узлах, потому что сетевая конфигурация не записывается в файлы. Модули сети записывают резервные файлы на управляющий узел, обычно в директории backup в корне плейбука.
Несколько протоколов связи
Поскольку модули сети выполняются на управляющем узле, а не на управляемых узлах, они могут поддерживать несколько протоколов связи. Протокол связи (XML через SSH, CLI через SSH, API через HTTPS), выбранный для каждого модуля сети, зависит от платформы и цели модуля. Некоторые модули сети поддерживают только один протокол; некоторые предлагают выбор. Наиболее распространенным протоколом является CLI через SSH. Вы устанавливаете протокол связи с помощью переменной ansible_connection:
Значение ansible_connection | Протокол | Требуется | Постоянный? |
|---|---|---|---|
ansible.netcommon.network_cli | CLI через SSH | настройка network_os | да |
ansible.netcommon.netconf | XML через SSH | настройка network_os | да |
ansible.netcommon.httpapi | API через HTTP/HTTPS | настройка network_os | да |
local | зависит от поставщика | настройка поставщика | нет |
Примечание
ansible.netcommon.httpapi устарел eos_eapi и nxos_nxapi. Подробности и пример см. в Плагинах Httpapi.
ansible_connection: local устарел. Используйте один из перечисленных выше типов постоянного подключения вместо него. С постоянными подключениями вы можете определить хосты и учетные данные только один раз, а не в каждой задаче. Вам также необходимо установить переменную network_os для конкретной платформы сети, с которой вы общаетесь. Более подробную информацию об использовании каждого типа подключения на различных платформах см. на страницах специфичных для платформы.
Сборки, организованные по платформам сети
Платформа сети — это набор сетевых устройств с общей операционной системой, которые могут управляться с помощью сборки Ansible, например:
- Arista: arista.eos
- Cisco: cisco.ios, cisco.iosxr, cisco.nxos
- Juniper: junipernetworks.junos
- VyOS vyos.vyos
Все модули на одной платформе сети имеют определенные требования. Некоторые платформы имеют специфические различия — см. документацию специфичных для платформы для получения подробностей.
Масштабирование привилегий: режим enable , become, и authorize
Использование become для масштабирования привилегий
Используйте верхнеуровневый параметр Ansible become: yes с become_method: enable, чтобы выполнить задачу, плейбук или плейбуки с повышенными привилегиями на любой сетевой платформе, которая поддерживает масштабирование привилегий. Вы должны использовать либо connection: network_cli, либо connection: httpapi, с become: yes с become_method: enable. Если вы используете network_cli для подключения Ansible к вашим сетевым устройствам, файл group_vars будет выглядеть так:
ansible_connection: ansible.netcommon.network_cli ansible_network_os: cisco.ios.ios ansible_become: yes ansible_become_method: enable
Дополнительную информацию см. в Become и Сети
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/network/getting_started/network_differences.html