aruba_central_role

aruba-central-ansible-role

Эта роль Ansible Network предлагает набор модулей и плагинов для управления конфигурацией, зависящих от платформы, специально предназначенных для Aruba Central, облачной системы управления сетью.

Требования

  • Python 3.5+

  • Ansible 2.9 или позже

    • Ansible 2.10+ требует установки коллекции ansible.netcommon
  • Минимальная поддерживаемая версия прошивки Aruba Central - 2.5.2

  • Установите все требования Ansible с помощью следующей команды:

    ansible-galaxy install -r requirements.yml
    
  • Установите все зависимости Python с помощью следующей команды:

    pip install -r requirements.txt
    

Установка

Через Galaxy:

ansible-galaxy install arubanetworks.aruba_central_role

Через GitHub, используйте следующую команду. Используйте опцию -f, чтобы перезаписать текущую версию роли:

ansible-galaxy install git+https://github.com/aruba/aruba-central-ansible-role.git

Заметки

  • Модули в этой роли используют REST API Central. Для получения информации о REST API и о том, как получить доступ для его использования, посетите Aruba Developer Hub: Начало работы с REST API
  • Необходимо создать токен API для пользователя на API Gateway Aruba Central и использовать действительный, не истекший access_token. Более подробную информацию о том, как начать работать с API Gateway, можно увидеть в этом видео на YouTube.
  • Действительный токен доступа можно использовать в файле инвентаря, как указано в разделе Инвентарь.
  • Убедитесь, что токен фактически был создан с параметром "Network Operations" в выпадающем меню Приложение при добавлении нового токена на API Gateway.
  • После генерации нового токена будет выдан access_token и refresh_token.
  • Токен доступа действителен в течение 7200 секунд или двух часов. Через два часа он истечет и потребуется создать новый токен. Время истечения токена в данный момент не настраивается.
  • refresh_token вместе с client_id и client_secret используются для продления токена доступа. Эта функция реализована в этой роли через использование плагина инвентаря. Вы можете использовать либо файл инвентаря, либо файл конфигурации плагина инвентаря для использования плагина.
  • Более подробная информация о том, как использовать этот конфигурационный файл плагина с токенами и другими учетными данными для автоматического обновления токенов, указана в разделе Конфигурационный файл плагина инвентаря.

Инвентарь/Файл хостов

Существует два способа использовать файл инвентаря или хостов с ролью Ansible Aruba Central:

  1. Инвентарь
    • Файл хостов, который указывает Ansible необходимый плагин httpapi и содержит некоторые другие данные и токен доступа.
  2. Конфигурационный файл плагина инвентаря или Источник инвентаря
    • Файл источника инвентаря, который используется плагином инвентаря.
    • Обычная реализация плагина инвентаря включает в себя скрипт плагина (обычно написан на Python) и источник инвентаря (в данном случае это YAML файл).
    • Согласно документации Ansible, источники инвентаря - это входные строки, с которыми работают плагины инвентаря. Источник инвентаря может быть путем к файлу или скрипту, или это могут быть "сырые" данные, которые плагин может интерпретировать для динамического создания переменных инвентаря.
    • Только файлы .yml с переменными конфигурационного файла плагина инвентаря принимаются в качестве источника инвентаря плагином инвентаря для этой роли.
  • Вы можете использовать любой из вышеперечисленных файлов в зависимости от ваших нужд.

Инвентарь

Переменные инвентаря

Переменные, которые следует определить в вашем инвентаре для вашей учетной записи Aruba Central:

  • ansible_host: Базовый URL для API Gateway Aruba Central в формате FQDN, который можно найти в URL документации API на API Gateway
  • ansible_connection: Всегда должно быть установлено значение httpapi
  • ansible_network_os: Всегда должно быть установлено значение aruba_central
  • ansible_httpapi_use_ssl: Всегда должно быть установлено значение True
  • ansible_httpapi_central_access_token: Токен доступа API Aruba Central

Пример инвентаря:

YAML
all:
  hosts:
    central:
      ansible_host: apigw-prod2.central.arubanetworks.com
      ansible_connection: httpapi
      ansible_network_os: aruba_central
      ansible_httpapi_use_ssl: True
      ansible_httpapi_central_access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
INI
arubacentral ansible_host=apigw-prod2.central.arubanetworks.com  ansible_connection=httpapi ansible_network_os=aruba_central  ansible_httpapi_use_ssl=True  ansible_httpapi_central_access_token=CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx

Конфигурационный файл плагина инвентаря

  • Это файл источника инвентаря, который используется плагином инвентаря для динамического создания инвентаря со всеми необходимыми параметрами (как показано выше в простом файле инвентаря), требуемыми для подключения HttpAPI.
  • Пользователь должен создать конфигурационный файл, который содержит имя плагина и другие учетные данные для Central.

Предостережения

  • Согласно традиции, плагин инвентаря не может быть включен в роль, так как Ansible выполняет плагин инвентаря перед выполнением плейбука или роли. Дополнительную информацию можно найти в документации Ansible.
    • Поэтому, до тех пор, пока мы не опубликуем коллекцию Ansible для Aruba Central, вам придется использовать следующий обходной путь для использования пользовательского плагина инвентаря для этой роли Ansible Centrale - который будет заботиться об автоматическом обновлении токенов.

Метод 1:

  • Скопируйте файл плагина инвентаря central_inventory.py с GitHub и сохраните его в каталоге inventory_plugins в вашем каталоге плейбуков.
  • Ваш каталог плейбуков должен иметь следующую структуру:
playbooks_dir
+-- playbook1.yml
+-- playbook2.yml
+-- inv_src.yml
+-- inventory_plugins/
|   +-- central_inventory.py
  • Где **inv_src.yml** или любой другой файл **.yml** с другим именем может действовать в качестве конфигурационного файла плагина инвентаря. Пример конфигурационного файла плагина инвентаря и использованные им переменные приведены ниже.
  • Конфигурационный файл плагина инвентаря не должен использоваться с Ansible Vault, так как плагин инвентаря должен записывать обновленные токены в конфигурационный файл плагина.
  • Сначала пользователь должен убедиться, что действительные токены доступа и обновления были введены в конфигурационный файл плагина инвентаря в первый раз. Если оба токена не действительны, плагин инвентаря изменит файл с сообщением <Введите действительный токен доступа/обновления> в конфигурационном файле плагина инвентаря, а выполнение завершится с ошибкой "Unauthorized".
  • refresh_token Central действителен в течение 14 дней. Если он не используется в течение 14 дней, токен будет аннулирован и потребуется создать новый. Срок действия токена обновления в данный момент не настраивается.

Метод 2:

  • После установки роли перейдите в директорию ролей. Используйте следующие команды, чтобы узнать путь, где была установлена роль, и переместите директорию inventory_plugins с файлом плагина.
$ ansible-galaxy role list 

------------------вывод-----------------
# /home/admin/.ansible/roles
- arubanetworks.aruba_central_role, 0.2.1
  • Выберите путь и перейдите в директорию ролей
  • Имя роли может отличаться в зависимости от того, каким образом вы выбрали ее установить
  • После того, как вы узнали путь, переместите директорию плагина инвентаря в каталог ваших плейбуков
$ cd /home/admin/.ansible/roles

$ cd arubanetworks.aruba_central_role
или
$ cd aruba-central-ansible-role

$ mv inventory_plugins/ <path_to_playbooks_directory>

Переменные конфигурации плагина инвентаря

Переменные, которые должны быть определены в вашем конфигурационном файле плагина инвентаря для вашей учетной записи Aruba Central:

  • access_token: Токен доступа к API Aruba Central.
  • api_gateway: Базовый URL для API Gateway Aruba Central в формате FQDN, который можно найти в URL документации API на API Gateway.
  • client_id: Идентификатор клиента API Aruba Central.
  • client_secret: Секрет клиента API Aruba Central.
  • host: Всегда должно быть установлено значение central.
  • plugin: Всегда должно быть установлено значение central_inventory.
  • refresh_token: Токен обновления API Aruba Central.

Пример конфигурационного файла плагина инвентаря:

YAML
access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
api_gateway: apigw-prod2.central.arubanetworks.com
client_id: FOqWxx124ASdfS36HqKIeXXzZ
client_secret: O2RfdKgiS13GhswdrWAIEueMPOxxZxX
host: central
plugin: central_inventory
refresh_token: X12daE6BFhk8QqqzzeifHTYxxZZ12XxX

Примеры плейбуков

Включение роли

Если роль установлена через Galaxy, установите роль на arubanetworks.aruba_central_role:

---
-  hosts: all
   roles:
     - role: arubanetworks.aruba_central_role
   tasks:
   - name: Получить все группы пользовательского интерфейса и шаблонов на Central
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

Если роль установлена через GitHub, установите роль на aruba-central-ansible-role:

---
-  hosts: all
   roles:
     - role: aruba-central-ansible-role
   tasks:
   - name: Получить все группы пользовательского интерфейса и шаблонов на Central
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

Выполнение плейбука

ansible-playbook playbook.yml -i inventory.yml
  • Где inventory.yml может быть либо простым файлом инвентаря, либо конфигурационным файлом плагина инвентаря (источник инвентаря).
  • Убедитесь, что файл central_inventory.py находится в каталоге inventory_plugins/ перед выполнением плейбука с использованием конфигурационного файла плагина инвентаря.

Вклад в проект

В Aruba Networks мы стремимся обеспечить высокое качество наших продуктов, поэтому, если вы обнаружите какие-либо проблемы, пожалуйста, откройте проблему на нашем GitHub, и мы обязательно ответим!

Для получения дополнительных возможностей участия следуйте нашим рекомендациям, изложенным в CONTRIBUTING.md.

Лицензия

MIT

Информация об авторе

  • Jay Pathak (@jayp193)
  • Derek Wang (@derekwangHPEAruba)
О проекте

Ansible modules for automating various monitoring and configuration constructs on Aruba Central, which is used to manage network devices (github repo - https://github.com/aruba/aruba-central-ansible-role)

Установить
ansible-galaxy install aruba/aruba-central-ansible-role
Лицензия
mit
Загрузки
83503
Владелец