Spec-Zone.ru › Ansible

Чем отличается автоматизация сетей

Автоматизация сетей использует основные концепции Ansible, но в работе сетевых модулей есть важные отличия. Это введение поможет вам разобраться в упражнениях этого руководства.

  • Выполнение на управляющем узле
  • Несколько протоколов связи
  • Коллекции, упорядоченные по сетевым платформам
  • Повышение привилегий: режим enable, become и authorize

    • Использование become для повышения привилегий

Выполнение на управляющем узле

В отличие от большинства модулей Ansible, сетевые модули выполняются не на управляемых узлах. С точки зрения пользователя сетевые модули работают так же, как и любые другие модули. Их можно использовать в разовых командах, плейбуках и ролях. Однако за кулисами сетевые модули используют методику, отличную от той, что применяют другие модули (для Linux/Unix и Windows). Ansible написан на Python и выполняется на нём. Поскольку большинство сетевых устройств не могут запускать Python, сетевые модули Ansible выполняются на управляющем узле Ansible, где работает ansible или ansible-playbook.

Сетевые модули также используют управляющий узел для хранения резервных файлов — для тех модулей, которые предоставляют параметр backup. В случае модулей для Linux/Unix, когда на управляемом узле (узлах) уже есть файл конфигурации, резервная копия по умолчанию создаётся в том же каталоге, что и новый изменённый файл. Сетевые модули не обновляют файлы конфигурации на управляемых узлах, поскольку конфигурация сети хранится не в файлах. Сетевые модули создают резервные файлы на управляющем узле, обычно в каталоге backup в корневом каталоге плейбука.

При использовании плагинов подключения (например, ansible.netcommon.network_cli) для сетевых модулей модули для Unix/Linux, такие как ansible.builtin.file и ansible.builtin.copy, также выполняются на управляющем узле.

Несколько протоколов связи

Поскольку сетевые модули выполняются на управляющем узле, а не на управляемых узлах, они могут поддерживать несколько протоколов связи. Протокол связи (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

зависит от поставщика

Параметр provider

нет

Примечание

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

Некоторые сетевые платформы поддерживают повышение привилегий, при котором определённые задачи должны выполняться привилегированным пользователем. На сетевых устройствах это называется режимом enable (аналог sudo в администрировании *nix). Сетевые модули Ansible поддерживают повышение привилегий на тех сетевых устройствах, где оно предусмотрено. Сведения о платформах, поддерживающих режим enable, и примеры его использования см. в документации для конкретных платформ.

Использование become для повышения привилегий

Используйте параметр Ansible верхнего уровня become: true вместе с become_method: enable, чтобы выполнять задачу, play или плейбук с повышенными привилегиями на любой сетевой платформе, поддерживающей повышение привилегий. Вместе с become: true необходимо использовать либо connection: network_cli, либо connection: httpapi, указав become_method: enable. Если вы используете network_cli для подключения Ansible к сетевым устройствам, файл group_vars будет выглядеть так:

ansible_connection: ansible.netcommon.network_cli
ansible_network_os: cisco.ios.ios
ansible_become: true
ansible_become_method: enable

Дополнительную информацию см. в разделе Become и сети

© 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/getting_started/network_differences.html

Spec-Zone.ru

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