aruba_central_role
aruba-central-ansible-role
Эта роль Ansible Network предлагает набор модулей и плагинов для управления конфигурацией, зависящих от платформы, специально предназначенных для Aruba Central, облачной системы управления сетью.
Требования
Python 3.5+
Ansible 2.9 или позже
- Ansible 2.10+ требует установки коллекции
ansible.netcommon
- Ansible 2.10+ требует установки коллекции
Минимальная поддерживаемая версия прошивки 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:
- Инвентарь
- Файл хостов, который указывает Ansible необходимый плагин httpapi и содержит некоторые другие данные и токен доступа.
- Конфигурационный файл плагина инвентаря или Источник инвентаря
- Файл источника инвентаря, который используется плагином инвентаря.
- Обычная реализация плагина инвентаря включает в себя скрипт плагина (обычно написан на Python) и источник инвентаря (в данном случае это YAML файл).
- Согласно документации Ansible, источники инвентаря - это входные строки, с которыми работают плагины инвентаря. Источник инвентаря может быть путем к файлу или скрипту, или это могут быть "сырые" данные, которые плагин может интерпретировать для динамического создания переменных инвентаря.
- Только файлы
.yml
с переменными конфигурационного файла плагина инвентаря принимаются в качестве источника инвентаря плагином инвентаря для этой роли.
- Вы можете использовать любой из вышеперечисленных файлов в зависимости от ваших нужд.
- Если вам не нужно автоматическое обновление токенов, используйте простой файл инвентаря
- Или, если вы хотите автоматическое обновление токенов, используйте конфигурационный файл плагина инвентаря для плагина инвентаря.
Инвентарь
Переменные инвентаря
Переменные, которые следует определить в вашем инвентаре для вашей учетной записи Aruba Central:
ansible_host
: Базовый URL для API Gateway Aruba Central в формате FQDN, который можно найти в URL документации API на API Gatewayansible_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