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