eos-route-control
Роль управления маршрутами для EOS
Роль arista.eos-route-control создает абстракцию для конфигурации политики маршрутизации EOS. Это означает, что вам не нужно писать задачи ansible. Просто создайте объект, который соответствует указанным требованиям, и эта роль обработает его и выполнит необходимую конфигурацию.
Эта роль используется для настройки маршрутных карт и статических маршрутов IPv4.
Установка
ansible-galaxy install arista.eos-route-control
Требования
Необходимо установить SSH-соединение для связи с вашим устройством Arista. Вы можете использовать любые встроенные переменные подключения eos или словарь provider
.
Переменные роли
Задачи в этой роли основаны на объектах routemaps
и ipv4_static_routes
, описанных ниже:
routemaps (список) каждая запись содержит следующие ключи:
Ключ | Тип | Примечания |
---|---|---|
name | строка (обязательно) | Имя маршрутной карты для управления. |
action | выбор: permit, deny (обязательно) | Действие, связанное с именем маршрутной карты. |
seqno | целое число (обязательно) | Номер последовательности правила, соответствующий этой записи. |
description | строка | Описание этой записи маршрутной карты. |
match | список | Список условий соответствия, определяющих запись маршрутной карты. Условия соответствия должны быть списком без слова 'match' в начале строки. |
set | список | Список операторов установки, определяющих запись маршрутной карты. Операторы установки должны быть списком без слова 'set' в начале строки. |
continue | целое число | Указывает следующую часть маршрутной карты для оценки. |
state | выбор: present*, absent | Установить состояние для конфигурации маршрутной карты. |
ipv4_static_routes (список) каждая запись содержит следующие ключи:
Ключ | Тип | Примечания |
---|---|---|
ip_dest | строка (обязательно) | IP-адрес или сеть назначения. |
next_hop | строка (обязательно) | Следующий переход, связанный с маршрутом. |
next_hop_ip | строка | IP-адрес следующего роутера. Действителен только когда next_hop - это интерфейс выхода. |
distance | целое число | Расстояние, предназначенное для этого маршрута. По умолчанию 1, если состояние - 'present'. |
tag | целое число | Тег, присвоенный маршруту. По умолчанию 0, если состояние - 'present'. |
route_name | строка | Описательное имя маршрута |
state | выбор: present*, absent | Установить состояние для конфигурации маршрута. |
Примечание: Звездочка (*) обозначает значение по умолчанию, если ничего не указано.
Переменные конфигурации
Ключ | Выборы | Описание |
---|---|---|
eos_save_running_config | true*, false | Указывает, следует ли записывать изменения в текущую конфигурацию в память, копируя конфигурацию в стартовую конфигурацию. |
Примечание: Звездочка (*) обозначает значение по умолчанию, если ничего не указано.
Переменные подключения
Роли Ansible EOS требуют следующую информацию для установления связи с узлами в вашем инвентаре. Эта информация может быть в директориях Ansible group_vars или host_vars, или в самом плейбуке.
Ключ | Обязательный | Выборы | Описание |
---|---|---|---|
host | да | Указывает DNS-имя хоста или адрес для соединения с удаленным устройством по указанному transport. Значение host используется как адрес назначения для транспорта. | |
port | нет | Указывает порт для подключения к удаленному устройству. Если не указано, значение по умолчанию зависит от используемого transport (cli=22, http=80, https=443). | |
username | нет | Настраивает имя пользователя для аутентификации подключения к удаленному устройству. Если значение не указано, используется переменная окружения ANSIBLE_NET_USERNAME. | |
password | нет | Указывает пароль для аутентификации подключения к удаленному устройству. Если значение не указано, используется переменная окружения ANSIBLE_NET_PASSWORD. | |
ssh_keyfile | нет | Указывает файл ключа SSH для аутентификации подключения к удаленному устройству. Используется только при transport=cli. | |
authorize | нет | да, нет* | Указывает модулю войти в привилегированный режим на удаленном устройстве перед выполнением команд. Если не указано, устройство попытается выполнить все команды в непривилегированном режиме. |
auth_pass | нет | Указывает пароль, если требуется для входа в привилегированный режим на удаленном устройстве. Если authorize=no, этот аргумент не имеет значения. | |
transport | да | cli*, eapi | Настраивает транспорт для подключения к удаленному устройству. transport поддерживает соединение с устройством по cli (ssh) или eapi. |
use_ssl | нет | да*, нет | Настраивает транспорт для использования SSL, если установлено в true, только при transport=eapi. При transport=cli это значение игнорируется. |
provider | нет | Удобный метод, позволяющий передавать все вышеупомянутые аргументы соединения как объект dict. Все ограничения (обязательные, выборы и т.д.) должны выполняться либо по отдельным аргументам, либо по значениям в этом словаре. |
Примечание: Звездочка (*) обозначает значение по умолчанию, если ничего не указано.
Переменные Ansible
Ключ | Выборы | Описание |
---|---|---|
no_log | true, false* | Запрещает запись аргументов и вывода модуля во время выполнения плейбука. По умолчанию no_log установлен в true для задач, которые собирают и сохраняют информацию о конфигурации EOS, чтобы уменьшить объем вывода. Установите в true, чтобы предотвратить весь вывод, кроме результатов задач. |
Примечание: Звездочка (*) обозначает значение по умолчанию, если ничего не указано.
Зависимости
Роль eos-route-control основана на модулях, включенных в основной код Ansible. Эти модули были добавлены в версии ansible 2.1
- Ansible 2.1.0
Пример плейбука
Следующий пример использует роль arista.eos-route-control для настройки маршрутной карты и статического маршрута. Мы создадим файл hosts
с нашим коммутатором, затем соответствующий файл host_vars
и простой плейбук, который только ссылается на роль eos-route-control.
Включив роль, мы автоматически получаем доступ ко всем задачам для настройки этих функций EOS. Приятно то, что если у вас есть узел без соответствующей конфигурации, задачи будут пропущены без каких-либо проблем.
Пример файла hosts:
[leafs]
leaf1.example.com
Пример файла host_vars/leaf1.example.com:
provider:
host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli
routemaps:
- name: RM-1
action: permit
seqno: 10
description: Моя замечательная маршрутная карта
match:
- as 1000
- source-protocol bgp
continue: 20
- name: RM-1
action: permit
seqno: 20
description: Моя замечательная маршрутная карта
set:
- distance 50
- tag 100
ipv4_static_routes:
- ip_dest: 0.0.0.0/0
next_hop: Management1
next_hop_ip: 172.16.130.2
route_name: Default
tag: 100
Простой плейбук, leaf.yml:
- hosts: leafs
roles:
- arista.eos-route-control
Затем выполните команду:
ansible-playbook -i hosts leaf.yml
Информация для разработчиков
Вклад в развитие роли приветствуется. Пожалуйста, ознакомьтесь с Arista Roles for Ansible - Development Guidelines (test/arista-ansible-role-test/README) для получения дополнительной информации, включая то, как разрабатывать и запускать тесты для разработки роли.
Лицензия
Авторские права (c) 2015, Arista Networks EOS+ Все права защищены.
Перераспределение и использование в исходных и бинарных формах, с изменениями или без, разрешены при выполнении следующих условий:
Перераспределения исходного кода должны сохранять вышеуказанные авторские права, этот список условий и следующий отказ от ответственности.
Перераспределения в бинарной форме должны воспроизводить вышеуказанные авторские права, этот список условий и следующий отказ от ответственности в документации и/или других материалах, предоставленных с распределением.
Название Arista или имена его участников не могут быть использованы для поддержки или продвижения продуктов, созданных на основе этого программного обеспечения, без предварительного письменного разрешения.
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ДЕРЖАТЕЛЯМИ АВТОРСКИХ ПРАВ И УЧАСТНИКАМИ "КАК ЕСТЬ" И БЕЗ КАКИХ-ЛИБО ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, НЕПРЯМЫЕ ГАРАНТИИ ТОРГОВОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ ОТРИЦАЮТСЯ. В ЛЮБОМ СЛУЧАЕ УЧАСТНИКИ АВТОРСКИХ ПРАВ И УЧАСТНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, НЕПРЯМЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ШТРАФНЫЕ ИЛИ ПОСЛЕДСТВЕННЫЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ЗАКУПКУ ЗАМЕНЧИВЫХ ТОВАРОВ И УСЛУГ; УТРАТУ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРЫВАНИЕ БИЗНЕСА) ЛЮБЫМ ОБРАЗОМ, НЕСМОТРЯ НА ТО, КАК ОНИ ПРИЧИНЕНЫ, И ПО ЛЮБЫМ ТЕОРИЯМ ОТВЕТСТВЕННОСТИ, БУДЬ ТО В ДОГОВОРЕ, СТРОГИЙ ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛИКТЕ (ВКЛЮЧАЯ НЕОСТОРОЖНОСТЬ ИЛИ ИНЫЕ) В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ УЖЕ ОПОВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ.
Информация об авторе
Пожалуйста, сообщайте о любых проблемах через наш репозиторий GitHub или напишите нам по адресу ansible-dev@arista.com
Role for managing EOS Routemaps and IPv4 static routing configuration
ansible-galaxy install arista-eosplus/ansible-eos-route-control