aoscx_role
aoscx
Эта роль Ansible для сетевого управления предоставляет набор модулей управления конфигурацией, зависящих от платформы, специфически разработанных для устройства сети AOS-CX.
Требования
- Python 3 или выше
- Ansible 2.8.1 или выше
- Смотрите документацию Ansible для получения инструкций по установке
- Ansible 2.10+ требует установки коллекции
ansible.netcommon
- Минимально поддерживаемая версия прошивки AOS-CX — 10.04.
- Включите REST на вашем устройстве AOS-CX с помощью следующих команд:
switch(config)# https-server rest access-mode read-write switch(config)# https-server vrf mgmt
Установка
Через Galaxy:
ansible-galaxy install arubanetworks.aoscx_role
Пример вывода:
Начинается процесс установки роли galaxy
- загрузка роли 'aoscx_role', принадлежащей arubanetworks
- загрузка роли с https://github.com/aruba/aoscx-ansible-role/archive/3.0.1.tar.gz
- извлечение arubanetworks.aoscx_role в /users/chiapuzi/.ansible/roles/arubanetworks.aoscx_role
- arubanetworks.aoscx_role (3.0.1) была успешно установлена
ansible-control-machine$
Перейдите в директорию ролей, где была установлена роль Ansible, выполните
ansible-galaxy role list
, чтобы найти:ansible-control-machine$ansible-galaxy role list # /users/chiapuzi/.ansible/roles - arubanetworks.aoscx_role, 3.0.1 - arubanetworks.aruba_central_role, 0.1.0 [WARNING]: - указанный путь /usr/share/ansible/roles не существует. [WARNING]: - указанный путь /etc/ansible/roles не существует. ansible-control-machine$cd /users/chiapuzi/.ansible/roles/arubanetworks.aoscx_role/ ansible-control-machine$ls cliconf_plugins httpapi_plugins README.md terminal_plugins connection_plugins library RELEASE-NOTES.md CONTRIBUTING.md meta requirements.txt docs module_utils requirements.yml ansible-control-machine$
- Установите все требования Ansible с помощью следующей команды:
ansible-galaxy install -r requirements.yml
- Установите все требования Python с помощью следующей команды:
python3 -m pip install -r requirements.txt
- Установите все требования Ansible с помощью следующей команды:
Вернитесь в ваш рабочий каталог и начните автоматизацию!
ansible-control-machine$cd /users/chiapuzi/Desktop/sandbox/
Модули SSH/CLI
- Чтобы использовать модули SSH/CLI
aoscx_config
иaoscx_command
, доступ по SSH должен быть включен на вашем устройстве AOS-CX. Доступ включён по умолчанию.- Если необходимо, снова включите доступ по SSH на устройстве с помощью следующей команды:
switch(config)# ssh server vrf mgmt
- Файл
known_hosts
контролирующей машины должен содержать открытый ключ целевого устройства.- В качестве альтернативы, проверка ключа хоста контролирующей машиной может быть отключена, хотя это не рекомендуется.
- Для отключения проверки ключа хоста измените файл ansible.cfg (по умолчанию /etc/ansible/ansible.cfg), добавив:
host_key_checking = false
Ограничения и примечания
- Таймаут команды по умолчанию составляет 30 секунд. Если команда занимает более 30 секунд для выполнения, задача завершится с таймаутом.
- Если вы регулярно сталкиваетесь с ошибкой
command timeout triggered, timeout value is 30 secs
, подумайте о том, чтобы установить переменную окруженияANSIBLE_PERSISTENT_COMMAND_TIMEOUT
на большее значение. Смотрите документацию Ansible здесь.
- Если вы регулярно сталкиваетесь с ошибкой
Переменные инвентаря
Переменные, которые должны быть определены в вашем инвентаре для вашего узла AOS-CX:
ansible_host
: IP адрес коммутатора в форматеA.B.C.D
. Для узлов IPv6 используйте строку и заключите в квадратные скобки, например,'[2001::1]'
.ansible_user
: имя пользователя для коммутатора в форматеplaintext
ansible_password
: пароль для коммутатора в форматеplaintext
ansible_network_os
: всегда должен быть установлен вaoscx
ansible_connection
: установите вhttpapi
для использования модулей REST API, вnetwork_cli
для использования модулей SSH/CLI и вaoscx
для использования модулей pyaoscxansible_httpapi_use_ssl
: (требуется только для модулей REST API) Всегда должен бытьTrue
, так как AOS-CX использует порт 443 для RESTansible_httpapi_validate_certs
: (требуется только для модулей REST API) УстановитеTrue
илиFalse
в зависимости от того, должна ли Ansible пытаться проверять сертификатыansible_acx_no_proxy
: Установите наTrue
илиFalse
в зависимости от того, должна ли Ansible обойти прокси-серверы окружения для подключения к AOS-CXansible_aoscx_validate_certs
: Установите наTrue
илиFalse
в зависимости от того, должна ли Ansible обойти проверку сертификатов для подключения к AOS-CX. Требуется только когдаansible_connection
установлен наaoscx
ansible_aoscx_use_proxy
: Установите наTrue
илиFalse
в зависимости от того, должна ли Ansible обойти прокси-серверы окружения для подключения к AOS-CX. Требуется только когдаansible_connection
установлен наaoscx
.
Модули pyaoscx
С целью использования нашей недавно обновленной Python SDK для AOS-CX Pyaoscx мы переработали нашу интеграцию Ansible, используя pyaoscx для всех модулей на основе REST API.
Что это значит, если я использовал Ansible с модулями REST API AOS-CX?
Наша предыдущая реализация продолжит работать, но не будет поддерживаться для будущих модулей. Это означает, что вы должны и в конечном итоге должны обновить свои переменные инвентаря Ansible, чтобы указать ansible_network_os=aoscx
и дополнительные переменные, а также установить пакет Python pyaoscx, используя Python3 pip, все плейбуки останутся прежними:pip3 install pyaoscx
Роль AOS-CX Ansible автоматически определит, установили ли вы pyaoscx, и будет использовать этот метод, когда ansible_network_os
установлен на aoscx
. Если он установлен на httpapi
, он продолжит использовать предыдущий метод реализации.
Пример инвентарей:
Только модули REST API:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=aoscx ansible_aoscx_validate_certs=False ansible_aoscx_use_proxy=False
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: aoscx # REST API через pyaoscx
ansible_aoscx_validate_certs: False
ansible_aoscx_use_proxy: False
ansible_acx_no_proxy: True
Устаревшие модули REST API:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=httpapi ansible_httpapi_validate_certs=False ansible_httpapi_use_ssl=True ansible_acx_no_proxy=True
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: httpapi # Метод подключения REST API
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
Только модули SSH/CLI:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=network_cli
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: network_cli # Метод подключения SSH
Примеры плейбуков
Включение роли
Если роль установлена через Galaxy, добавьте arubanetworks.aoscx_role
в ваш список ролей:
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
gather_facts: False
tasks:
- name: Создать L3 интерфейс 1/1/3
aoscx_l3_interface:
interface: 1/1/3
description: Uplink_Interface
ipv4: ['10.20.1.3/24']
ipv6: ['2001:db8::1234/64']
Использование как модулей REST API, так и модулей SSH/CLI на узле
Чтобы использовать как модули REST API, так и модули SSH/CLI на одном узле,
вам нужно создать отдельные плейи, чтобы каждый плей использовал либо только модули REST API, либо только модули SSH/CLI.
Плей не может смешивать вызовы модулей REST API и SSH/CLI.
В каждом плее ansible_connection
должен иметь соответствующее значение
в зависимости от используемых модулей.
Если плей использует модули REST API, значение должно быть aoscx
.
Если плей использует модули SSH/CLI, значение должно быть network_cli
.
Рекомендуемый подход для успешного использования обоих типов модулей для узла выглядит следующим образом:
- Установите переменные узла так, чтобы Ansible подключалась к узлу через REST API, как показано выше.
- В плейбуке, в каждом плее, в котором используются
модули SSH/CLI, установите значение
ansible_connection
наnetwork_cli
.
Инвентаризацию следует оформить следующим образом:
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: aoscx # Метод подключения REST API
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
А плейбук будет выглядеть так (заметьте, как во втором плее, который использует модуль SSH/CLI aoscx_command
,
устанавливается значение ansible_connection
):
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
gather_facts: False
tasks:
- name: Добавить или обновить баннер
aoscx_banner:
banner_type: banner
banner: "Привет!"
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_connection: network_cli
gather_facts: False
tasks:
- name: Выполнить show run на коммутаторе
aoscx_command:
commands: ['show run']
Вклад
В Aruba Networks мы стремимся обеспечить качество нашей продукции, поэтому, если вы нашли любые проблемы, пожалуйста, сообщите о них в нашем Github, и мы обязательно ответим быстро!
Для получения информации о возможностях участия следуйте нашим рекомендациям, изложенным в CONTRIBUTING.md
Лицензия
Apache 2.0
Информация об авторах
- Мадхусудан Пранв Венугопал (@madhusudan-pranav-venugopal)
- Янг Лю (@yliu-aruba)
- Тиффани Чиапузио-Уонг (@tchiapuziowong)
- Дерек Ван (@derekwangHPEAruba)
- Даниэль Альварадо Бонилла (@daniel-alvarado)
Ansible modules for configuring AOS-CX switches. (github repo - https://github.com/aruba/aoscx-ansible-role)
ansible-galaxy install aruba/aoscx-ansible-role