eos-system

Роль системы для EOS

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

Эта роль в частности позволяет настраивать IP-маршрутизацию, имя хоста и пользователей CLI.

Установка

ansible-galaxy install arista.eos-system

Требования

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

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

Задачи в этой роли зависят от объектов hostname, eos_ip_routing_enabled и eos_users, описанных ниже:

hostname

Ключ Тип Примечания
hostname строка ASCII-строка, используемая для настройки значения имени хоста в текущей конфигурации узла.

eos_ip_routing_enabled

Ключ Тип Примечания
eos_ip_routing_enabled логический: true, false* Настраивает состояние IPv4 'ip routing' на коммутаторе. По умолчанию коммутаторы EOS запускаются с 'no ip routing'

eos_users (список) каждая запись содержит следующие ключи:

Ключ Тип Примечания
name строка (обязательно) Уникальное имя пользователя. Имя пользователя должно соответствовать определённым форматным требованиям. Обладать допустимыми символами: @#$%^&*-_= +;<>,.~ и начинаться с A-Z, a-z или 0-9.
encryption выбор: md5, sha512 Определяет формат шифрования пароля, указанного в соответствующем ключе secret.
secret строка Этот ключ используется вместе с шифрованием. Значение должно быть захешированным паролем, который был сгенерирован ранее.
nopassword логический: true, false* Ключ nopassword используется для создания пользователя без назначенного пароля. Этот атрибут исключает использование secret и encryption.
role строка Конфигурирует роль, назначаемую пользователю.
privilege целое: 0-15 Конфигурирует уровень привилегий для пользователя. Допустимые значения – целые числа от 0 до 15. По умолчанию уровень привилегий EOS равен 1, если этот ключ опущен.
sshkey строка Конфигурирует sshkey для пользователя CLI. Этот sshkey будет находиться в /home/USER/.ssh/authorized_keys.
state выбор: present*, absent Устанавливает состояние для пользователя CLI
Примечание: Знак (*) обозначает значение по умолчанию, если не указано другое

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

Ключ Выборы Описание
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 нет Конфигурирует имя пользователя для аутентификации соединения с удалённым устройством. Значение 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 нет Удобный метод, который позволяет передавать все вышеуказанные аргументы соединения в виде объекта dict. Все ограничения (обязательные, выборы и т.д.) должны быть выполнены либо индивидуальными аргументами, либо значениями в этом словаре.
Примечание: Знак (*) обозначает значение по умолчанию, если не указано другое

Переменные Ansible

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

Зависимости

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

  • Ansible 2.1.0

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

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

Пример файла 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

eos_users:
  - name: superadmin
    encryption: md5
    secret: '$1$J0auuPhz$Pkr5NnHssW.Jqlk17Ylpk0'
    privilege: 15
    role: network-admin
  - name: simplebob
    nopassword: true
    privilege: 0
    role: network-operator

hostname: leaf1

eos_ip_routing_enabled: yes

Простой плейбук для настройки мостиков, leaf.yml:

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

Затем запустите с:

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 EOS global system configuration

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