eos-mlag

Роль MLAG для EOS

Роль arista.eos-mlag создает абстракцию для общей конфигурации MLAG. Это означает, что вам не нужно писать какие-либо задачи Ansible. Просто создайте объект, который соответствует приведенным ниже требованиям, и эта роль воспримет этот объект и выполнит необходимую конфигурацию.

Установка

ansible-galaxy install arista.eos-mlag

Требования

Требуется SSH-соединение для подключения к вашему устройству Arista. Вы можете использовать любые из встроенных переменных подключения eos или удобный словарь provider.

Переменные роли

Словарь mlag включает в себя следующие ключи:

Ключ Тип Примечания
mlag_domain_id строка Имя MLAG-домена
mlag_trunk_group строка Группа магистрали, назначенная VLAN
mlag_shutdown булевый: true, false* Включить или отключить конфигурацию MLAG
local_if_vlan строка (обязательно) VLAN для соединения с пиром, напр. Vlan1024
local_if_vlan_description строка Описание для local_if_vlan
local_if_ip_address строка (обязательно) IP-адрес для local_if_vlan
local_if_disable_spanning_tree булевый: true*, false Включить или отключить STP на пире VLAN
peer_address строка (обязательно) IP-адрес для MLAG-пира
peer_link_if строка (обязательно) Порт-канал, используемый для соединения с пиром
peer_link_mode выбор: trunk*, access Режим порта для соединения с пиром
peer_link_lacp_mode выбор: active*, passive, disabled Режим LACP для каждого члена порт-канала.
peer_link_enable булевый: true*, false Включить или отключить интерфейсы членов пировой цепи
peer_link_members (Список) Список интерфейсов, составляющих пировую цепь.
state булевый: present*, absent Добавить или удалить всю конфигурацию, связанную с MLAG. Когда установлено в absent, будет удалена вся конфигурация, включая local_if_vlan и peer_link_if, и блок конфигурации mlag будет возвращен к значениям по умолчанию. Интерфейсы в peer_link_members будут сброшены к значениям настроек по умолчанию.
Примечание: Звездочка (*) указывает на значение по умолчанию, если не указано

Переменные конфигурации

Ключ Выборы Описание
eos_save_running_config true*, false Указывает, следует ли записывать изменения в текущую конфигурацию, возникающую в результате выполнения роли, в память, копируя конфигурацию в стартовую конфигурацию.
Примечание: Звездочка (*) указывает на значение по умолчанию, если не указано

Переменные соединения

Роли Ansible EOS требуют следующей информации о соединении для установления связи с узлами в вашем инвентаре. Эта информация может быть в каталогах group_vars или host_vars, или в самом плейбуке.

Ключ Обязательно Выборы Описание
host да Указывает DNS-имя хоста или адрес для подключения к удаленному устройству через указанный transport. Значение host используется как адрес назначения для транспорта.
port нет Указывает порт, который будет использоваться при построении соединения с удаленным устройством. Это значение применяется к любому допустимому значению transport. Значение порта по умолчанию будет равно соответствующему общему порту для транспорта, если в задаче не указано иное (cli=22, http=80, https=443).
username нет Настраивает имя пользователя для аутентификации соединения с удаленным устройством. Значение username используется для аутентификации либо входа в CLI, либо eAPI, в зависимости от используемого transport. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_USERNAME.
password нет Указывает пароль для аутентификации соединения с удаленным устройством. Это общий аргумент, используемый для любого допустимого значения transport. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_PASSWORD.
ssh_keyfile нет Указывает файл SSH-ключа для аутентификации соединения с удаленным устройством. Этот аргумент используется только при transport=cli. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_SSH_KEYFILE.
authorize нет да, нет* Указывает модулю войти в привилегированный режим на удаленном устройстве перед отправкой любых команд. Если не указано, устройство попытается выполнить все команды в непривилегированном режиме. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_AUTHORIZE.
auth_pass нет Указывает пароль, который необходимо использовать, если требуется войти в привилегированный режим на удаленном устройстве. Если authorize=no, то этот аргумент не имеет значения. Если значение не указано в задаче, будет использовано значение переменной окружения ANSIBLE_NET_AUTH_PASS.
transport да cli*, eapi Настраивает транспортное соединение для подключения к удаленному устройству. Аргумент transport поддерживает подключение к устройству через cli (ssh) или eapi.
use_ssl нет да*, нет Настраивает транспорт для использования SSL, если установлено в true при transport=eapi. Если transport=cli, это значение игнорируется.
provider нет Удобный метод, позволяющий передать все вышеуказанные аргументы соединения в виде словарного объекта. Все ограничения (обязательно, выбор и т.д.) должны быть соблюдены либо индивидуальными аргументами, либо значениями в этом словаре.
Примечание: Звездочка (*) указывает на значение по умолчанию, если не указано

Переменные Ansible

Ключ Выборы Описание
no_log true, false* Предотвращает запись аргументов модуля и вывода во время выполнения плейбука. По умолчанию значение no_log установлено в true для задач, которые собирают и сохраняют информацию о конфигурации EOS, чтобы уменьшить размер вывода. Установите в true, чтобы предотвратить весь вывод, кроме результатов задач.
Примечание: Звездочка (*) указывает на значение по умолчанию, если не указано

Зависимости

Роль eos-bridging построена на модулях, включенных в основную кодовую базу Ansible. Эти модули были добавлены в версии Ansible 2.1.

  • Ansible 2.1.0

Пример плейбука

Следующий пример использует роль arista.eos-mlag для полной настройки MLAG на двух свичах без написания каких-либо задач. Мы создадим файл hosts с нашими двумя свичами, затем соответствующий файл host_vars для каждого свича, а затем простой плейбук, который лишь ссылается на роль mlag. Включив роль, мы автоматически получаем доступ ко всем задачам для конфигурации MLAG. Приятно то, что если у вас есть узел без конфигурации MLAG, задачи будут пропущены без каких-либо проблем.

Пример файла hosts:

[leafs]
leaf1.example.com
leaf2.example.com

Пример host_vars/leaf1.example.com:

provider:
  host: "{{ inventory_hostname }}"
  username: admin
  password: admin
  use_ssl: no
  authorize: yes
  transport: cli

mlag:
  mlag_domain_id: mlag1
  mlag_trunk_group: mlagpeer
  mlag_shutdown: false
  local_if_vlan: Vlan1024
  local_if_vlan_description: Peer MLAG Link
  local_if_ip_address: 10.0.0.1/30
  local_if_disable_spanning_tree: true
  peer_address: 10.0.0.2
  peer_link_if: Port-Channel10
  peer_link_mode: trunk
  peer_link_lacp_mode: active
  peer_link_enable: true
  peer_link_members:
    - Ethernet3
    - Ethernet4

Пример host_vars/leaf2.example.com:

host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli

no_log: true

mlag:
  mlag_domain_id: mlag1
  mlag_trunk_group: mlagpeer
  mlag_shutdown: false
  local_if_vlan: Vlan1024
  local_if_ip_address: 10.0.0.2/30
  local_if_disable_spanning_tree: true
  peer_address: 10.0.0.1
  peer_link_if: Port-Channel10
  peer_link_mode: trunk
  peer_link_lacp_mode: active
  peer_link_enable: true
  peer_link_members:
    - Ethernet3
    - Ethernet4

Простой плейбук для включения MLAG на ваших свичах, leaf.yml:

- hosts: leafs
  roles:
     - arista.eos-mlag

Затем выполните:

ansible-playbook -i hosts leaf.yml

Информация для разработчиков

Мы приветствуем вклады в разработку. Пожалуйста, смотрите Arista Roles for Ansible - Development Guidelines (test/arista-ansible-role-test/README) для получения дополнительной информации, включая то, как разрабатывать и запускать тестовые случаи для разработки роли.

Лицензия

Copyright (c) 2015, Arista Networks EOS+ Все права защищены.

Перераспределение и использование в исходной и двоичной формах, с или без модификаций, разрешены при соблюдении следующих условий:

  • Перераспределение исходного кода должно сохранять вышеуказанное уведомление об авторских правах, этот перечень условий и следующий отказ от ответственности.

  • Перераспределение в двоичной форме должно воспроизводить вышеуказанное уведомление об авторских правах, этот перечень условий и следующий отказ от ответственности в документации и/или других материалах, предоставленных с дистрибутивом.

  • Ни название Arista, ни имена его соавторов не могут использоваться для одобрения или продвижения продуктов, производных от этого программного обеспечения, без предварительного письменного разрешения.

ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ДЕРЖАТЕЛЯМИ АВТОРСКИХ ПРАВ И СОАВТОРАМИ "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯ МУСПРАВЫ, ПРИГОДНОСТИ ДЛЯ ПРОДАЖИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ ОТРИЦАЮТСЯ. НИ В КОЕМ СЛУЧАЕ АВТОР ПРАВО ИЛИ СОАВТЕРЫ НЕ НОСЯТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ПРИМЕРНЫЕ ИЛИ ПОСЛЕДУЮЩИЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЯ, Приобретением заменяющих товаров или услуг; Убыток использования, данных или прибыли; Или перерыв бизнеса) любым образом вызванные И НА ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, будь то в результате договорных обязательств, строгой ответственности, ИЛИ деликта (включая небрежность ИЛИ ИНОЕ) ВОЗНИКШАЯ В ЛЮБОЙ СПОСОБ ИЗ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, даже если было предупреждено о возможности такого ущерба.

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

Пожалуйста, задавайте любые вопросы, используя наш репозиторий на GitHub или пишите нам на ansible-dev@arista.com

О проекте

Role for managing MLAG configuration

Установить
ansible-galaxy install arista-eosplus/ansible-eos-mlag
Лицензия
bsd-3-clause
Загрузки
11975
Владелец
Applications developed and supported by Arista EOS+