...
Подсказка |
---|
Шаблоны представляют собой последовательность CLI-команд для внесения изменений в конфигурацию оборудования. Эти команды будут применяться к оборудованию в том виде и в той последовательности, в которой они записаны в шаблоне. В шаблонах имеется поддержка шаблонизатора Jinja2 с возможностью использования системных и пользовательских переменных и различных конструкций шаблонизатора (операторы ветвления, циклы, фильтры и т.д.). |
Интерфейс для создания и редактирования шаблонов конфигурации включает в себя список шаблонов конфигураций (1) и область редактирования шаблона (2).
Создание шаблона
Для создания шаблона укажите его название в соответствующем поле:
...
После указания имени новый пустой шаблон появится в списке шаблонов. В области редактирования справа задайте его содержимое:
После этого сохраните изменения, нажав на кнопку "Сохранить".
Шаблонизатор
Переменные
В шаблонах имеется поддержка шаблонизатора Jinja2. В тексте шаблона можно использовать ряд предустановленных системных переменных, а также определять кастомные пользовательские переменные, значения для которых можно будет задавать вручную перед каждым запуском задачи группового конфигурирования с данным шаблоном.
Синтаксис определения пользовательской переменной в тексте шаблона следующий:
Блок кода |
---|
{{ variable }} |
Примечание |
---|
Название переменной может содержать только буквы латинского алфавита, цифры и знаки подчёркивания. Название переменной обязательно должно начинаться с буквы. Также имя переменной регистрозависимое, поэтому variable и VARIable - это разные переменные. |
Подсказка |
---|
Следует отличать синтаксис задания/использования пользовательской переменной В первом случае, внутри шаблона переменная не имеет никакого значения, и поэтому будет проинтерпретирована как пользовательская, и для неё нужно будет задать значение из интерфейса ЕССМ перед применением шаблона на группу устройств. Во втором случае, значение переменной статически задаётся прямо внутри шаблона и не может быть изменено извне, поэтому такая переменная не будет считаться пользовательской, и для неё нельзя будет задать значение из интерфейса ЕССМ. |
Переменные в шаблоне могут быть как отдельностоящими (как в примере выше), так и вложенными в другие переменные.
Блок кода |
---|
{{ device.ip }} |
В данном примере переменная ip вложена в переменную device, и в таком случае device является scope-переменной, или просто скоупом. Скоуп device не содержит собственное значение, а только аггрегирует в себе другие переменные, а также аналогичные вложенные скоупы.
Все пользовательские переменные находятся в корневом скоупе, который не имеет имени, и поэтому доступ к переменным внутри него осуществляется без указания скоупа.
Также внутри шаблона доступен ряд предопределённых системных переменных. Значения для системных переменных подставятся при рендеринге шаблона автоматически. Все они находятся в специальных аггрегирующих скоупах:
eccm
— содержит переменные с различной системной информациейeccm.user
— имя пользователя, который запустил задачу на групповое конфигурированиеeccm.time
— время запуска задачи на групповое конфигурирование (серверное время)eccm.ip_address
— IP адрес сервера ECCM (management интерфейс)
global
— содержит глобальные общесистемные параметры и настройкиglobal.snmp_communities
— список SNMP communities, задаваемый глобально в системных настройках ЕССМ. Так как данная переменная содержит список значений, то доступ к ней осуществляется либо по индексу:{{ global.snmp_communities[0] }}
, либо в цикле:{% for community in global.snmp_communities %} {{ community }} {% endfor %}
group
- содержит переменные, специфичные для группы устройства, на которое применяется данный шаблонgroup.id
— содержит id группыgroup.name
— содержит имя группы
device
- содержит переменные, специфичные для устройства, на которое применяется данный шаблонdevice.id
— содержит id устройстваdevice.ip
— содержит management IP адрес устройстваdevice.mac
— содержит MAC адрес устройстваdevice.sn
— содержит серийный номер устройстваdevice.hostname
— содержит hostname устройстваdevice.model
— содержит название модели устройстваdevice.series
— содержит серию устройстваdevice.snmp_communities
— содержит список SNMP communities устройства, заданный в настройках доступа для данного устройства. Содержит список значений, по аналогии сglobal.snmp_communities
.
Информация |
---|
Таким образом, переменные из скоупа |
Типы пользовательских переменных
Шаблонизатор ЕССМ предлагает возможность гибко настраивать значения для пользовательских переменных.
В связи с тем, что при групповом конфигурировании большого количества устройств может возникнуть потребность динамически генерировать значения для определённых переменных, шаблонизатор ЕССМ предоставляет возможность настраивать для пользовательских переменных генерируемые последовательности. Такие переменные имеют явно задаваемый тип SEQUENCE (последовательность), и значения для них задаются в определённых форматах (будет рассмотрено ниже). Обычные же переменные имеют тип по умолчанию STATIC, и их значения интерпретируются в шаблоне as-is. Задание типа переменных будет рассмотрено в разделе "Заполнение переменных".
...
Принцип работы и использования SEQUENCE переменных
Генерируемая последовательность распределяет значения для переменной между шаблонами, применяемыми на разные устройства в рамках одной задачи на групповое конфигурирование. Переменная, имеющая тип SEQUENCE, в тексте шаблона интерполируется в одно единственное значение, которое однако будет варьироваться для разных устройств в конфигурируемой выборке.
Если для переменной указан тип SEQUENCE, то значение переменной должно быть задано в одном из следующих форматов (тип последовательности определится автоматически исходя из формата):
1. <число> - <число>
– числовая последовательность, задаётся двумя целыми числами, разделёнными дефисом, генерирует последовательность целых чисел в указанном замкнутом диапазоне.
Пример: 1 - 5
Создаст последовательность из чисел 1, 2, 3, 4, 5
2. <item1>, <item2>, ..., <itemN>
– массив-последовательность, задаётся произвольными значениями, разделёнными запятыми, генерирует соответствующую последовательность из перечисленных элементов.
Пример: value1, value2, 3, value4, abc
3. <ip> - <ip>
– последовательность IP адресов, задаётся двумя IP адресами, разделёнными дефисом, генерирует последовательность IP адресов из указанного замкнутого диапазона адресов.
Пример: 192.168.0.1 - 192.168.0.4
Создаст последовательность из адресов 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4
4. <ip/prefix>
или <ip/ip>
– последовательность IP адресов из указанной подсети, задаётся IP адресом и префиксом подсети, либо IP адресом и полным адресом подсети, генерирует последовательность IP адресов из указанной подсети, не включая broadcast и сам адрес подсети. Исключение для подсетей /31 и /32, где в последовательность включаются все адреса.
Пример: 192.168.1.0/24
Создаст последовательность из адресов 192.168.1.1, 192.168.1.2, ..., 192.168.1.254
(итого 254 адреса)
Пример: 192.168.1.10/31
Создаст последовательность из адресов 192.168.1.10, 192.168.1.11
(итого 2 адреса)
...
Пример
В шаблоне используется переменная var
. Перед применением данного шаблона на группу из 10 устройств, переменной var
был указан тип SEQUENCE и задано значение 10 - 20
.
Тогда для 1-го устройства переменная var
примет значение var = 10
, для 2-го устройства – значение var = 11
, для 10-го устройства, соответственно, var = 19.
Значение 20 из последовательности осталось не использованным, так как длина последовательности больше, чем кол-во конфигурируемых устройств, и в ней остаются лишние значения.
Следует обратить внимание, что задаваемый диапазон последовательности должен покрывать выбранное количество устройств. В противном случае, если генерируемая последовательность короче, чем количество устройств, то не всем устройствам достанется своё уникальное значение из данной последовательности, и операция завершится с ошибкой.
Управляющие конструкции
Шаблонизатор Jinja2 поддерживает ряд стандартных управляющих конструкций: операторы ветвлений (if ... else), циклы (for), макросы, неблочные фильтры, функции, присвоения, математические и логические операторы.
• Оператор ветвления if else :
Блок кода |
---|
{% if device.model = "ESR-10" %}
hostname ESR-10
{% endif %} |
• Оператор цикла for :
Блок кода |
---|
{% for snmp_community in device.snmp_communities %}
snmp-server community "{{ snmp_community }}" ro
{% endfor %} |
• Макрос :
Блок кода |
---|
{% macro network(name, ip_prefix) -%}
object-group network {{ name }}
ip prefix {{ ip_prefix }}
exit
{%- endmacro %}
{{ network("LAN", "10.10.99.32/27") }}
|
• Прочие операторы и конструкции :
Блок кода |
---|
Пример задания внутришаблонной переменной:
{% set var = 'example' %}
Пример фильтра upper
{{ var|upper }} -> EXAMPLE
Пример применения фильтра join на массиве:
{{ [1, 2, 3]|join('|') }} -> 1|2|3
Пример форматирования строки при помощи фильтра format:
{{ "%s, %s!"|format("Hello", "World") }} -> Hello, World!
Пример арифметических операций:
{{ (1 + 2) * 10 / 5 }} -> 6.0 |
Более подробно о возможностях и функциях шаблонизатора Jinja2 можно прочитать в официальной документации.
Предупреждение |
---|
В силу технических особенностей реализации шаблонизатора в ЕССМ, некоторые более сложные конструкции, не приведённые в данном Руководстве, но доступные в нативной реализации Jinja2, могут не поддерживаться. |
Групповое конфигурирование
Запуск задачи на групповое конфигурирование устройств осуществляется из раздела "Устройства" кнопкой "Конфигурировать" на панели управления устройствами. Чтобы запустить процедуру настройки задачи, необходимо выбрать одно или несколько устройств и нажать на кнопку "Конфигурировать".
Запуск
Раздел предназначен для создания задачи группового конфигурирования. Представляет собой последовательность из 4 шагов:
- Выбор устройств
- Выбор шаблона
- Установка расписания
- Применить
Scroll Pagebreak |
---|
Выбор устройств
На этом шаге необходимо выбрать, к каким устройствам будет применен шаблон конфигурации. При выборе устройств можно перемещаться между страницами таблицы, и при этом выбор устройств на других таблицах будет сохранёнИнтерфейс содержит две таблицы: в верхней отображаются все доступные для управления устройства, в нижней показаны выбранные устройства для создания задачи.
Выбор шаблона
При нажатии на кнопку "Конфигурировать" откроется степпер группового конфигурирования. На первом шаге необходимо выбрать нужный шаблон конфигурации.
Раздел для выбора шаблона конфигурации. В левой части отображается таблица существующих в системе шаблонов (1), в правой части отображается содержимое выбранного шаблона (2).
Если в выбранном шаблоне присутствуют кастомные пользовательские переменные, как в приведённом примере – syslog_max_files и syslog_file_size – то в степпере открывается второй динамический шаг по настройке переменных шаблона.
Если в шаблоне нет пользовательских переменных, то шаг настройки шаблона будет скрыт, и вторым шагом окажется установка расписания.
Заполнение переменных
На шаге заполнения переменных будет представлена форма, в которой необходимо указать значение для каждой найденной в шаблоне пользовательской переменной (1) (3). Также для переменной можно выбрать тип STATIC/SEQUENCE (2) (4), по умолчанию все переменные STATIC.
Когда все переменные заполнены, разблокируется вкладка "Рендер" (5), при переходе на которую можно увидеть пример отрендеренной по шаблону конфигурации для первого устройства в выборке.
Scroll Pagebreak |
---|
Установка расписания
Позволяет настроить время начала и завершения выполнения задачи.
...
Последовательно — обновление по порядку, с использованием одного обработчика.
Scroll Pagebreak |
---|
Применить
В интерфейсе резюмируются ранее настроенные параметры расписания, отображаются выбранный шаблон и список устройств.
- Резюме по настроенной задаче.
- Список выбранных для конфигурирования устройств. Клик по устройству в таблице откроет на вкладке "Рендер" (4) вариант конфигурации, который будет применён к данному устройству.
- Текст шаблона.
- Вкладка с отрендеренным для выбранного устройства шаблоном.
Инициализация устройств
Раздел для автоматического обновления и конфигурирования устройств (ZTP – Zero Touch Provisioning).
...
- Настройки DHCP — для настройки DHCP-сервера.
- Привязки — для создания привязки инициализации – сущности, в которой хранится информация о параметрах ожидаемого устройства.
- Состояние инициализации — текущее состояние инициализации устройства в системе и журнал предыдущих состояний.
Scroll Pagebreak |
---|
Настройки DHCP
На данной вкладке располагаются настройки для конфигурирования DHCP-сервера.
...
- В левой части экрана отображается таблица с привязками и их текущими статусами.
- По клику на привязку из п.1 в правой части экрана открывается журнал с логами по данной привязке, в котором можно поэтапно отследить процесс инициализации соответствующего устройства.
Scroll Pagebreak |
---|
Задачи
В разделе отображается таблица с задачами, выполняемыми в системе от имени пользователя. Периодические системные задачи, такие как синхронизация устройств, по умолчанию скрыты. Их можно отобразить, нажав "Показать" в последнем столбце таблицы.
...
- Статус — текущий статус выполнения задачи.
- Тип — суть задачи.
- Описание — параметры, с которыми задача была запущена.
- Дата создания — дата и время создания задачи.
- Дата запуска — дата и время запуска задачи в активную работу. Может не совпадать с датой создания, т.к. задача может находиться в очереди обработчика.
- Дата завершения — дата и время завершения работы над задачей. При этом задача может завершиться успешно или не успешно.
- Лог — открыть журнал выполнения задачи из Ansible.
- Подзадачи — задачи для работы над каждым отдельным устройством. При отображении таблицы задач все подзадачи скрыты, и отображается только родительская задача с интегральным статусом. Эта кнопка используется для отображения всех подзадач для групповой операции.
Scroll Pagebreak |
---|
События
Отображает список событий, произошедших в системе. Важные события, сообщающие о проблемах, выделяются красным цветом, информационные — зеленым.
...
- Доступ
- Пользователи
- Роли
- Лицензия
- Резервное копирование
- Определение статусов устройств
Scroll Pagebreak |
---|
Доступ
Интерфейс для настройки параметров по умолчанию для доступа к устройствам.
...
- SSH и SFTP — используются для управления устройствами и передачи файлов на устройства. Для настройки доступны логин и пароль.
- SNMP — используется для мониторинга устройств и получения инвентарных данных. Для настройки доступно read community.
- network — настройки определения сетевой доступности устройства. Проверка может выполняться по протоколу ICMP ("обычный пинг") и проверкой установки TCP-соединения (более быстрый способ). Во втором случае дополнительно необходимо указать, на какой порт будет устанавливаться соединение.
- SNMP COMMUNITY-RO — определение community для сбора метрик с устройств по SNMP. Для этого используется отдельный механизм опроса, настройки которого возможны только глобально для всей системы.
Scroll Pagebreak |
---|
Пользователи
Раздел для управления учетными записями пользователей системы.
...
- Кнопки для добавления и удаления ролей.
- Таблица ролей.
Scroll Pagebreak |
---|
Предустановленный набор ролей
...