Управление конфигурациями
Группы конфигураций
Группа конфигурации предоставляет простой способ связывания множества классов Puppet с узлом или группой узлов. Обычно это используется для добавления определенного профиля приложения или стека в один шаг.
Чтобы создать группу конфигурации, нужно перейти в раздел "Настройка → Puppet ENC → Группы конфигураций", нажать Создать группу конфигураций, ввести имя и выбрать желаемые классы Puppet. При редактировании узла или группы узлов новую группу конфигурации можно добавить в верхней части вкладки "Puppet ENC".
Пользователю предоставляется возможность одноэтапного метода привязки нескольких классов Puppet к узлу или к группе узлов. Для этого требуется выбрать классы во "Включенные классы" из перечня "Доступных классов", используя пиктограммы (плюс) и (минус). Далее нажимают кнопку Применить для сохранения изменений (рисунок 35).

Рисунок 35 – Создание группы конфигураций
Для привязки группы конфигураций в меню "Узлы Все Узлы" или "Настройка → Группы узлов" в режиме редактирования узла или группы соответственно и на вкладке "Puppet ENC" выбрать группы конфигураций во "Включенные группы конфигураций" из перечня "Доступных групп конфигураций", используя пиктограммы (плюс) и (минус).
Локальные репозитории
Для обеспечения оперативной установки и обновления ПО групп узлов создаются локальные репозитории на базе интернет-репозиториев посредством следующих классов Puppet:
- rcc_srv_repo – для конфигурации сервера локального репозитория;
- rcc_srv_repo_alt_10 – для ОС Альт Рабочая станция 10;
- rcc_srv_repo_astra_17 – для ОС Astra Linux SE 1.7;
- rcc_srv_repo_redos_73 – для ОС РЕД ОС 7.3;
- rcc_srv_repo_rosa_2021_1 – для ОС РОСА версии 2021.1.
Для привязки классов при создании или редактировании групп узлов (п. Создание группы узлов) на вкладке "Puppet ENC" включают класс rcc_srv_repo и один из классов для ОС из списка "Доступные классы" во "Включенные классы" и нажимают кнопку Применить.
Чтобы задать параметры классов для работы с репозиториями, нужно перейти в меню "Настройки → Puppet ENC → Классы", в рабочей области выбрать имя класса и на вкладке "Параметр Smart Class" выбрать для редактирования параметр по маске с постфиксом и внести изменения в раздел "Поведение по умолчанию":
- *_enable – для включения класса установить флажок в поле "Переопределить", задать логическое значение "true" в поле "Значение по умолчанию";
- *_cron_d – для задания периода синхронизации в днях установить флажок в поле "Изменить", задать число дней в поле "Значение по умолчанию" в виде строки;
- *_cron_h – для задания периода синхронизации в часах установить флажок в поле "Изменить", задать число часов в поле "Значение по умолчанию" в виде строки;
- *_cron_m – для задания периода синхронизации в минутах установить флажок в поле "Изменить", задать число дней в поле "Значение по умолчанию" в виде строки.
- Для сохранения нажать кнопку Применить.
Для подключения узлов к локальным репозиториям и работы с ними используются следующие классы Puppet:
- rcc_client_repo_alt_10 – для ОС Альт Рабочая станция 10;
- rcc_ client_repo_astra_17 – для ОС Astra Linux SE 1.7;
- rcc_ client_repo_redos_73 – для ОС РЕД ОС 7.3;
- rcc_ client_repo_rosa_2021_1 – для ОС РОСА версии 2021.1.
Для включения классов необходимо перейти в меню "Настройки → Puppet ENC/Classes", в рабочей области выбрать имя класса и на вкладке "Параметр Smart Class" выбрать для редактирования параметр с постфиксами *_enable или *_url и внести изменения в раздел "Поведение по умолчанию" соответственно:
- *_enable – для включения класса установить флажок в поле "Изменить", задать логическое значение "true" в поле "Значение по умолчанию";
- *_url – для задания адреса локального репозитория установить флажок в поле "Изменить", задать, например, строку "http://repo.rosa.int/alt" в поле "Значение по умолчанию".
- Для сохранения изменений нажать кнопку Применить.
Управление Puppet
В этом разделе рассмотрены различные способы управления и взаимодействия с Puppet. С помощью модуля управления конфигурациями Puppet производится назначение предустановленных классов для узлов, реализуемых через классы Puppet.
Примечание – Перед назначением классов разработанных модулей с использованием веб-интерфейса Комплекса необходимо произвести импорт классов (п. Импорт классов).
Для определения файла с описанием действий, которые нужно выполнить на узле или группе узлов, и его определения для дальнейшего выполнения необходимо воспользоваться меню "Узлы → Все Узлы" или "Настройка → Группы узлов" в режиме редактирования узла или группы соответственно и на вкладке "Puppet ENC" выбрать классы во "Включенные классы" из перечня "Доступных классов", используя пиктограммы (плюс) и (минус) (рисунок 36).
Для сохранения изменений нажать кнопку Применить.

Рисунок 36 – Выбор классов Puppet для группы узлов
Окружения
Для просмотра и редактирования окружений Puppet следует перейти в меню "Настройки → Puppet ENC → Окружения". Для создания нового окружения нажимают кнопку Создать окружение Puppet. Далее в открывшейся рабочей области вводят имя окружения, выбирают из соответствующих вкладок местоположение и организацию и нажимают кнопку Применить для сохранения. Чтобы удалить окружение, в строке списка выбирают действие Удалить и в модальном окне подтверждения действия нажимают кнопку Подтвердить. В этой же рабочей области можно перейти сразу к работе с классами Puppet, описанной в п. Классы настоящего документа.
Назначение окружений для узлов проводится на странице редактирования узла, на вкладке "Узел". Выбор окружения фильтрует видимые классы на вкладке "Puppet ENC" только по классам, принадлежащим выбранному окружению. Также можно массово назначить окружение для группы узлов, для чего нужно отметить нужные узлы в списке узлов, а затем выбрать "Изменить окружение" в раскрывающемся меню "Выберите действие" в верхней части страницы.
Кроме того, можно назначить окружение группе узлов. Это действует как форма значения по умолчанию – при создании нового узла и добавлении его в такую группу узлов окружение группы будет автоматически предложено и введено в соответствующее поле ввода.
Пользователь может изменить или удалить предложенное окружение и не применять его к новому узлу, но в типичной ситуации это экономит несколько действий.
Классы
Для определения классов Puppet требуется перейти в меню "Настройки → Puppet ENC → Классы", выбрать класс из списка, просмотреть и отредактировать его с использованием параметров класса (п. Управление Puppet - Классы). В этой же рабочей области можно привязать класс к группам узлов, используя пиктограммы (плюс) и (минус) (рисунок 37). Для сохранения изменений нажимают кнопку Применить.

Рисунок 37 – Редактирование классов Puppet
Перед применением классов Puppet следует убедиться, что разрешена их активация в настройках группы узлов. Глобальный статус класса Puppet можно отследить на вкладке "Параметр класса" (п. Управление Puppet - Классы). Необходимо установить флажок "Изменить" в разделе "Поведение по умолчанию". Этот параметр отвечает за доступ к настройкам (включению) класса Puppet в рамках группы узлов.
Проверить включение класса Puppet можно в свойствах выбранной группы узлов на закладке "Puppet ENC". В разделе "Параметры класса Puppet" должно быть указано значение True для выбранного класса Puppet.
Импорт классов
Классы Puppet импортируются с Puppet-сервера или могут быть созданы вручную и вручную же связаны с набором окружений (для целей фильтрации).
Для импорта класса нужно перейти в раздел "Настройки Puppet ENC Классы" и нажать кнопку Импорт окружений из … (рисунок 38). В результате будут импортированы только классы из модулей. Файлы манифестов Puppet должны быть валидными, чтобы их можно было разобрать с помощью агента Puppet. Для проверки синтаксиса файлов манифестов Puppet следует использовать команду:
puppet parser validate
при добавлении своих модулей, чтобы убедиться в успешном импорте в Комплекс.
На странице "Настройки Puppet ENC Классы" также есть столбец "Узлы", который показывает количество узлов, которым присвоен данный модуль/класс. Нажатие на это число покажет список узлов.

Рисунок 38 – Импорт классов Puppet
Назначение классов узлам
Чтобы Puppet применял пользовательские классы, нужно назначить их узлам. Это можно сделать несколькими способами – лучший метод может варьироваться в зависимости от количества классов, которые планируется назначить, и от того, нужно ли изменять какие-либо параметры.
При редактировании узла классы Puppet могут быть назначены непосредственно на вкладке "Puppet ENC". Будут отображены все классы окружения Puppet, находящиеся в "выбранном" на вкладке "Узел".
Параметры класса
Параметры класса, привязанные к классам Puppet, переопределяются в меню "Настройки → Puppet ENC → Параметры класса". В рабочей области "Параметры класса" (рисунок 39) вводят требуемые данные о параметрах:
– в поле "Ключ поиска|Описание" – краткое описание параметра;
– в блоке данных "Поведение по умолчанию" – признак переопределения по умолчанию, тип, значение по умолчанию, признак исключения из классификации, признак скрытой переменной;
– при установке флажка "Ключ поиска|переопределить" предоставляется возможность настроить порядок разрешения значений в блоке данных "Приоритет порядка атрибутов", а также указать конкретные сопоставители в блоке с одноименным названием.
– в блоке "Дополнительный валидатор входных данных" – признак обязательности, тип и правило валидатора;
Для сохранения переменной нажимают кнопку Применить.

Рисунок 39 – Параметры класса
Чтобы задать нужное значение для параметра, следует установить флажок, ввести это значение. Однако, это изменяет значение переменной для всех узлов. Чтобы назначить индивидуальные значения для разных узлов, следует использовать сопоставители. Для этого нужно перейти к разделу "Укажите сопоставители" внизу страницы.
Примечание – Раздел "Укажите сопоставители" становится доступен после включения флажка "Ключ поиска|Переопределить" в разделе "Поведение по умолчанию".
Например, если любая машина в окружении Puppet "development" должна использовать значение "dev" вместо "production" для параметра user, нужно добавить "environment" в конец списка сопоставителей, затем нажать кнопку +Добавить и заполнить "Тип атрибута", ожидаемое значение атрибута (например, имя узла) и значение, которое нужно передавать при соответствии атрибута ожидаемому значению.
Если Комплекс управляет значением параметра класса ("override = true"), также можно обновить переопределение значения для конкретного узла непосредственно из настроек самого узла. Для этого нужно открыть страницу редактирования узла, перейти на вкладку "Параметры" и увидеть переменную, область видимости класса и текущее значение. Затем можно переопределить значение для этого узла.
Если значение скрыто, можно нажать пиктограмму (глаз) для временного отображения или (развернуть) для отображения значения при редактировании на всю страницу (свойство скрытия параметра при этом не изменится).
Фактически это другой, более удобный способ назначить сопоставитель. Если вернуться на страницу класса Puppet, то можно убедиться, что Комплекс добавил сопоставитель для этого узла.
Та же кнопка переопределения доступна на вкладке "Параметры" для группы узлов. Для более сложной логики, такой как сопоставление на основе фактов, следует использовать страницу класса Puppet.
Ansible
Интерфейс РОСА Центр управления предоставляет пользователю возможность для настройки следующих основных параметров Ansible:
- Тайм-аут отчета Ansible – временной интервал (в минутах), предназначенный для формирования отчета Ansible с результатами выполнения плейбука. Значение по умолчанию: 30;
- Тип подключения – тип (протокол) подключения Ansible к управляемым узлам для дистанционного запуска плейбуков. Значение по умолчанию: SSH;
- Уровень детализации по умолчанию – уровень детализации записей в журнале о процессе выполнения плейбука Ansible;
- Тайм-аут после подготовки – временной интервал (в секундах) после развертывания нового узла, предназначенный для первичного выполнения заданных ролей Ansible на новом Узле. Значение по умолчанию: 360;
- Путь до приватного ключа – путь к файлу c закрытым ключом SSH.
Значения общих параметров Ansible доступны пользователю для просмотра и редактирования во вкладке "Ansible" в меню "Управление Параметры" панели навигации (рисунок 40).

Рисунок 40 – Общие параметры Ansible
Для редактирования определенного параметра надо нажать соответствующую пиктограмму (плюс), после чего указать необходимое значение.
Импорт ролей и переменных Ansible
Перечень импортированных ролей Ansible отображается в меню "Настройки → Ansible Роли" панели навигации (рисунок 41), а список используемых переменных – в меню "Настройки → Ansible → Переменные".

Рисунок 41 – Роли Ansible
Для импорта дополнительной роли или переменной требуется нажать кнопку Импорт с … на соответствующей странице интерфейса и выбрать необходимый источник.
Примечание – При импорте переменных Ansible дополнительно будут импортированы все роли, связанные с этими переменными и при этом отсутствующие в перечне ранее импортированных ролей.
Присвоение ролей Ansible
Выполняемые роли Ansible могут быть присвоены пользователем как отдельному управляемому узлу, так и группе узлов.
Следует обратить внимание, что роли Ansible, присвоенные группе узлов, также будут автоматически присвоены каждому отдельному узлу в этой группе. При этом изменение группы узла приведет к изменению набора ролей Ansible, ранее присвоенных узлу через группу.
Для присвоения ролей Ansible узлу необходимо перейти в меню "Узлы → Все Узлы" панели навигации и нажать наименование (доменное имя) необходимого узла.
На экране появится интерфейс с подробными параметрами выбранного узла, в котором нужно нажать кнопку Изменить и затем перейти на вкладку "Роли Ansible".
В списке доступных ролей Ansible последовательно нажимают соответствующую пиктограмму для присвоения всех необходимых ролей узлу. При этом добавленные роли отобразятся в списке присвоенных ролей Ansible (рисунок 42).

Рисунок 42 – Присвоение ролей Ansible узлу
Для удаления определенной роли из списка присвоенных ролей Ansible нажимают соответствующую пиктограмму (минус). При этом роли, присвоенные узлу через группу узлов, удалить из этого списка нельзя.
После присвоения всех необходимых ролей Ansible узлу нужно нажать кнопку Применить.
Выполнение ролей Ansible
Выполнение ролей Ansible на управляемых узлах осуществляется путем дистанционного запуска плейбуков на этих узлах.
Плейбук Ansible может запускаться как пользователем Комплекса вручную, так и в автоматическом режиме по заданному расписанию. При этом процесс запуска плейбука может осуществляться на отдельном Узле или одновременно на нескольких узлах, входящих в определенную группу.
Использование Ansible совместно с Комплексом позволяет настроить интеграцию и автоматизацию управления узлами. Вот несколько ключевых шагов и особенностей, о которых следует знать при работе с Ansible в Комплексе:
- Роли могут быть импортированы из Агента, на котором включена функция "Ansible". Можно получить доступ к списку импортированных ролей через меню "Настройки → Ansible → Роли", нажав кнопку Импорт из … и выбрав нужный источник для импорта из выпадающего меню.
- Импорт переменных. Аналогично ролям, переменные внутри ролей можно импортировать таким же способом: перейти в меню "Настройки → Ansible → Переменные", чтобы увидеть список уже импортированных переменных. При запуске нового импорта переменных Ansible, если переменные принадлежат роли, которая еще не была импортирована, она будет автоматически импортирована вместе с переменными Ansible.
- Создание переменных в Комплексе. Можно создавать переменные напрямую в Комплексе: перейти в меню "Настройки → Ansible → Переменные" и нажать кнопку Имя переменной Ansible в верхней части таблицы переменных (рисунок 43). Ключ и роль Ansible являются обязательными атрибутами. Переменные, созданные напрямую в Комплексе, игнорируются при импорте переменных из прокси, и они не будут предлагаться для удаления.

Рисунок 43 – Создание новой переменной Ansible
- Выбор ролей для узла. Роли Ansible могут быть назначены узлу на вкладке "Роли Ansible" на странице редактирования узла. Также возможно наследование ролей Ansible от группы узлов. После развертывания узла и его регистрации (с помощью cc_url('built') в шаблоне) Комплекс выполнит первый запуск Ansible для настройки узла в соответствии с применяемыми ролями. Поскольку неизвестно какое время потребуется, чтобы узел снова стал доступным после установки ОС и перезагрузки, Комплекс устанавливает тайм-аут Ansible на 5 минут. Это можно настроить в меню "Управление → Параметры" на вкладке "Ansible" в параметре "Post-provision timeout (Тайм-аут после развертывания)" или индивидуально для каждого узла, переопределив эту настройку с помощью параметра.
Наследуемые роли автоматически добавляются при изменении группы узлов, и интерфейс выбора отключает прямое удаление таких элементов.
Запуск ролей Ansible
Чтобы запустить плейбук с выбранными ролями нужно перейти в настройки узла, раскрыть выпадающее меню "Запланировать задание", нажать кнопку Run Ansible roles (Запустить роли Ansible) и Комплекс запустит плейбук в фоновом режиме (рисунок 44). Это типовой плейбук, встроенный в РОСА Центр управления, единственная функция которого – вызвать по очереди все роли, назначенные узлу. Роли должны быть составлены в соответствии с философией Ansible Galaxy и быть самодостаточными. В дальнейшем этот плейбук можно будет вызывать через интерфейс "Занести в расписание удаленное задание". Журналы выполнения плейбука можно найти в журнале Комплекса, обычно по пути /var/log/сс/production.log.

Рисунок 44 – Запуск ролей Ansible для узла
Альтернативно можно запустить плейбук для всех ролей Ansible, применимых к узлам в группе узлов, выбрав действие "Run all Ansible roles (Запустить все роли Ansible)" в строке выбранной группы узлов.
Если требуется выполнить произвольный плейбук, необходимо добавить такой плейбук как шаблон Ansible и сохранить, назначив имя.
Чтобы запустить плейбук Ansible (шаблоны заданий), нужно выполнить следующие действия:
- на странице узла в закладке "Ansible → Задания" нажать кнопку Schedule recurring job (Занести в расписание удаленное задание), выбрать шаблон задания и отправить его;
- в списке узлов выбрать несколько узлов, затем нажать кнопки Действия → Запланировать удаленное задание;
- в меню "Узлы → Шаблоны → Шаблоны заданий" найти нужный шаблон задания, нажать кнопку Выполнить, подтвердить настройки задания (кнопка Далее) и нажать кнопку Запустить на выбранных узлах.
Переопределение переменных Ansible в плейбуках
На переменные Ansible в плейбуках и шаблонах можно ссылаться с использованием синтаксиса "". Например:
template: src=foo.cfg.j2 dest={{ remote_install_path }}/foo.cfg
использует переменную remote_install_path. Можно использовать Комплекс для переопределения этих переменных. Переменные будут переопределены только при запуске ролей из РОСА Центр управления, так как РОСА Центр управления отправляет инвентарь со словарем, содержащим имена переменных и их значения при выполнении ролей Ansible.
Есть несколько способов переопределить переменную Ansible:
- импортировать переменную, следуя инструкциям в разделе документации. После импорта переменной можно изменить ее значение по умолчанию;
- задать ее как входной параметр шаблона задания: создать шаблон задания, содержащий плейбук с переменной "";
- при каждом запуске шаблона задания, задав переменную как входной параметр. Это имеет приоритет над параметрами узла.