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
Лицензия
bsd-3-clause
Загрузки
11951
Владелец
Applications developed and supported by Arista EOS+