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
ansible-galaxy install arista-eosplus/ansible-eos-mlag