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-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 для использования модулей pyaoscx
    • Смотрите ниже для информации о нашей новой реализации pyaoscx для модулей AOS-CX Ansible, которая станет стандартом в будущем
    • Смотрите ниже для информации о использовании как модулей REST API, так и модулей SSH/CLI на одном узле
  • ansible_httpapi_use_ssl: (требуется только для модулей REST API) Всегда должен быть True, так как AOS-CX использует порт 443 для REST
  • ansible_httpapi_validate_certs: (требуется только для модулей REST API) Установите True или False в зависимости от того, должна ли Ansible пытаться проверять сертификаты
  • ansible_acx_no_proxy: Установите на True или False в зависимости от того, должна ли Ansible обойти прокси-серверы окружения для подключения к AOS-CX
  • ansible_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.

Рекомендуемый подход для успешного использования обоих типов модулей для узла выглядит следующим образом:

  1. Установите переменные узла так, чтобы Ansible подключалась к узлу через REST API, как показано выше.
  2. В плейбуке, в каждом плее, в котором используются модули 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
Лицензия
Unknown
Загрузки
94747
Владелец