Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Комментарий: Reverted from v. 1

...

Подсказка

Шаблоны представляют собой последовательность CLI-команд для внесения изменений в конфигурацию оборудования. Эти команды будут применяться к оборудованию в том виде и в той последовательности, в которой они записаны в шаблоне.
Для оборудования линеек ESR и MES перед выполнением шаблона автоматически выполняется переход в режим конфигурирования, с последующим сохранением и подтверждением конфигурации.
Для оборудования линейки MES (ISS, ROS и FP) автоматический переход в режим конфигурирования не выполняется.
При этом повторное применение одного и того же шаблона к оборудованию может внести нежелательные изменения в конфигурацию.

В шаблонах имеется поддержка шаблонизатора Jinja2 с возможностью использования системных и пользовательских переменных и различных конструкций шаблонизатора (операторы ветвления, циклы, фильтры и т.д.).

Интерфейс для создания и редактирования шаблонов конфигурации включает в себя список шаблонов конфигураций (1) и область редактирования шаблона (2).

Image Removed

Создание шаблона

Для создания шаблона укажите его название в соответствующем поле:

...

После указания имени новый пустой шаблон появится в списке шаблонов. В области редактирования справа задайте его содержимое:

Image Removed

После этого сохраните изменения, нажав на кнопку "Сохранить".

Шаблонизатор

Переменные

В шаблонах имеется поддержка шаблонизатора Jinja2. В тексте шаблона можно использовать ряд предустановленных системных переменных, а также определять кастомные пользовательские переменные, значения для которых можно будет задавать вручную перед каждым запуском задачи группового конфигурирования с данным шаблоном.

Синтаксис определения пользовательской переменной в тексте шаблона следующий:

Блок кода
{{ variable }}
Примечание
Название переменной может содержать только буквы латинского алфавита, цифры и знаки подчёркивания. Название переменной обязательно должно начинаться с буквы. Также имя переменной регистрозависимое, поэтому variable и VARIable - это разные переменные.
Подсказка

Следует отличать синтаксис задания/использования пользовательской переменной {{ variable }} от синтаксиса статического присвоения переменной {% set variable = "123" %}.

В первом случае, внутри шаблона переменная не имеет никакого значения, и поэтому будет проинтерпретирована как пользовательская, и для неё нужно будет задать значение из интерфейса ЕССМ перед применением шаблона на группу устройств.

Во втором случае, значение переменной статически задаётся прямо внутри шаблона и не может быть изменено извне, поэтому такая переменная не будет считаться пользовательской, и для неё нельзя будет задать значение из интерфейса ЕССМ.

Переменные в шаблоне могут быть как отдельностоящими (как в примере выше), так и вложенными в другие переменные.

Блок кода
{{ device.ip }}

В данном примере переменная ip вложена в переменную device, и в таком случае device является scope-переменной, или просто скоупом. Скоуп device не содержит собственное значение, а только аггрегирует в себе другие переменные, а также аналогичные вложенные скоупы.

Все пользовательские переменные находятся в корневом скоупе, который не имеет имени, и поэтому доступ к переменным внутри него осуществляется без указания скоупа.

Также внутри шаблона доступен ряд предопределённых системных переменных. Значения для системных переменных подставятся при рендеринге шаблона автоматически. Все они находятся в специальных аггрегирующих скоупах:

  • eccm — содержит переменные с различной системной информацией
    • eccm.user — имя пользователя, который запустил задачу на групповое конфигурирование
    • eccm.time — время запуска задачи на групповое конфигурирование (серверное время)
    • eccm.ip_address — IP адрес сервера ECCM (management интерфейс)
  • global — содержит глобальные общесистемные параметры и настройки
    • global.snmp_communities — список SNMP communities, задаваемый глобально в системных настройках ЕССМ. (warning) Так как данная переменная содержит список значений, то доступ к ней осуществляется либо по индексу: {{ 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 устройства, заданный в настройках доступа для данного устройства. (warning) Содержит список значений, по аналогии с global.snmp_communities.
Информация

Таким образом, переменные из скоупа group и device внутри шаблона будут принимать разные значения в зависимости от конкретного устройства, на которое применяется данный шаблон.

Типы пользовательских переменных

Шаблонизатор ЕССМ предлагает возможность гибко настраивать значения для пользовательских переменных.

В связи с тем, что при групповом конфигурировании большого количества устройств может возникнуть потребность динамически генерировать значения для определённых переменных, шаблонизатор ЕССМ предоставляет возможность настраивать для пользовательских переменных генерируемые последовательности. Такие переменные имеют явно задаваемый тип 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 из последовательности осталось не использованным, так как длина последовательности больше, чем кол-во конфигурируемых устройств, и в ней остаются лишние значения.

(warning) Следует обратить внимание, что задаваемый диапазон последовательности должен покрывать выбранное количество устройств. В противном случае, если генерируемая последовательность короче, чем количество устройств, то не всем устройствам достанется своё уникальное значение из данной последовательности, и операция завершится с ошибкой. 

Управляющие конструкции

Шаблонизатор 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 шагов:

  1. Выбор устройств
  2. Выбор шаблона
  3. Установка расписания
  4. Применить

Scroll Pagebreak

Выбор устройств

На этом шаге необходимо выбрать, к каким устройствам будет применен шаблон конфигурации. При выборе устройств можно перемещаться между страницами таблицы, и при этом выбор устройств на других таблицах будет сохранёнИнтерфейс содержит две таблицы: в верхней отображаются все доступные для управления устройства, в нижней показаны выбранные устройства для создания задачи.

Image Removed

Выбор шаблона

При нажатии на кнопку "Конфигурировать" откроется степпер группового конфигурирования. На первом шаге необходимо выбрать нужный шаблон конфигурации.

Раздел для выбора шаблона конфигурации. В левой части отображается таблица существующих в системе шаблонов (1), в правой части отображается содержимое выбранного шаблона (2).

Image Removed

Если в выбранном шаблоне присутствуют кастомные пользовательские переменные, как в приведённом примере – syslog_max_files и syslog_file_size – то в степпере открывается второй динамический шаг по настройке переменных шаблона.

Если в шаблоне нет пользовательских переменных, то шаг настройки шаблона будет скрыт, и вторым шагом окажется установка расписания.

Заполнение переменных

На шаге заполнения переменных будет представлена форма, в которой необходимо указать значение для каждой найденной в шаблоне пользовательской переменной (1) (3). Также для переменной можно выбрать тип STATIC/SEQUENCE (2) (4), по умолчанию все переменные STATIC.

Image Removed

Image Removed

Когда все переменные заполнены, разблокируется вкладка "Рендер" (5), при переходе на которую можно увидеть пример отрендеренной по шаблону конфигурации для первого устройства в выборке.

Scroll Pagebreak

Установка расписания

Позволяет настроить время начала и завершения выполнения задачи.

...

Последовательно — обновление по порядку, с использованием одного обработчика.


Image Removed

Scroll Pagebreak

Применить

В интерфейсе резюмируются ранее настроенные параметры расписания, отображаются выбранный шаблон и список устройств.

  1. Image RemovedРезюме по настроенной задаче.
  2. Список выбранных для конфигурирования устройств. Клик по устройству в таблице откроет на вкладке "Рендер" (4) вариант конфигурации, который будет применён к данному устройству.
  3. Текст шаблона.
  4. Вкладка с отрендеренным для выбранного устройства шаблоном.

Инициализация устройств

Раздел для автоматического обновления и конфигурирования устройств (ZTP – Zero Touch Provisioning).

...

  1. Настройки DHCP — для настройки DHCP-сервера.
  2. Привязки — для создания привязки инициализации – сущности, в которой хранится информация о параметрах ожидаемого устройства.
  3. Состояние инициализации — текущее состояние инициализации устройства в системе и журнал предыдущих состояний.

Scroll Pagebreak

Настройки DHCP

На данной вкладке располагаются настройки для конфигурирования DHCP-сервера. 

...

  1. В левой части экрана отображается таблица с привязками и их текущими статусами.
  2. По клику на привязку из п.1 в правой части экрана открывается журнал с логами по данной привязке, в котором можно поэтапно отследить процесс инициализации соответствующего устройства.

Scroll Pagebreak

Задачи


В разделе отображается таблица с задачами, выполняемыми в системе от имени пользователя. Периодические системные задачи, такие как синхронизация устройств, по умолчанию скрыты. Их можно отобразить, нажав "Показать" в последнем столбце таблицы.

...

  • Статус — текущий статус выполнения задачи.
  • Тип — суть задачи.
  • Описание — параметры, с которыми задача была запущена.
  • Дата создания — дата и время создания задачи.
  • Дата запуска — дата и время запуска задачи в активную работу. Может не совпадать с датой создания, т.к. задача может находиться в очереди обработчика.
  • Дата завершения — дата и время завершения работы над задачей. При этом задача может завершиться успешно или не успешно.
  • Лог — открыть журнал выполнения задачи из Ansible.
  • Подзадачи — задачи для работы над каждым отдельным устройством. При отображении таблицы задач все подзадачи скрыты, и отображается только родительская задача с интегральным статусом. Эта кнопка используется для отображения всех подзадач для групповой операции.

Scroll Pagebreak

События

Отображает список событий, произошедших в системе. Важные события, сообщающие о проблемах, выделяются красным цветом, информационные — зеленым.

...

  1. Доступ
  2. Пользователи
  3. Роли
  4. Лицензия
  5. Резервное копирование
  6. Определение статусов устройств

Scroll Pagebreak

Доступ

Интерфейс для настройки параметров по умолчанию для доступа к устройствам. 

...

  1. SSH и SFTP — используются для управления устройствами и передачи файлов на устройства.  Для настройки доступны логин и пароль.
  2. SNMP — используется для мониторинга устройств и получения инвентарных данных. Для настройки доступно read community.
  3. network — настройки определения сетевой доступности устройства. Проверка может выполняться по протоколу ICMP ("обычный пинг") и проверкой установки TCP-соединения (более быстрый способ). Во втором случае дополнительно необходимо указать, на какой порт будет устанавливаться соединение.
  4. SNMP COMMUNITY-RO — определение community для сбора метрик с устройств по SNMP. Для этого используется отдельный механизм опроса, настройки которого возможны только глобально для всей системы.

Scroll Pagebreak

Пользователи

Раздел для управления учетными записями пользователей системы.

...

  1. Кнопки для добавления и удаления ролей.
  2. Таблица ролей.

Scroll Pagebreak

Предустановленный набор ролей

...