Планировщик заданий¶
Планировщик заданий — инструмент Портала администратора, предназначенный для автоматического выполнения административных операций в заданное время. Каждое задание определяет операцию и её параметры, а также время и количество запусков.
Для каждого задания, созданного в Портале администратора, в GitLab автоматически создаётся соответствующее расписание (Pipeline Schedule). По умолчанию расписания располагаются в репозитории project_k / services / keystack-scheduler. Просмотреть их можно в разделе .
Планировщик заданий доступен только пользователям с ролью admin.
Типы заданий¶
Набор типов заданий предзадан в системе. Доступны следующие типы:
Запуск внешнего CI (Jenkins) — запуск заранее настроенного пайплайна во внешнем Jenkins. Система отправляет запрос на запуск, но не отслеживает дальнейшее выполнение пайплайна. Результат задания определяется по ответу Jenkins на запрос запуска;
Перевод гипервизора в режим обслуживания — подготовка выбранных гипервизоров к обслуживанию. Размещённые на них ВМ переносятся на другие гипервизоры, после чего исходные гипервизоры переходят в режим обслуживания;
Добавление ВМ в группу(ы) безопасности — назначение указанных групп безопасности сетевым интерфейсам выбранных ВМ. Операция может быть применена ко всем интерфейсам ВМ или только к интерфейсам в выбранных сетях;
Исключение ВМ из групп(ы) безопасности — снятие назначения указанных групп безопасности с сетевых интерфейсов выбранных ВМ. Операция может быть применена ко всем интерфейсам ВМ или только к интерфейсам в выбранных сетях;
Запуск Gitlab stage job — запуск одного из предзаданных заданий пайплайна региона. Автоматическое выполнение может быть настроено для следующих задач:
postconfig— применение конфигурации узлов с помощью задачиhost-configиз стадииpost-configпайплайна региона;client-config— применение клиентской конфигурации. Подробнее см. в разделе Пользовательские Ansible роли;mariadb-backup— резервное копирование базы данных OpenStack. Подробнее см. в разделе Резервное копирование базы данных OpenStack;audit-diff— аудит изменений конфигурации узлов. По результатам выполнения задания формируется отчёт в двух форматах, отражающий различия между конфигурацией в GitLab и на серверах;rotate— ротация сервисных аккаунтов. Подробнее см. в разделе Обновление секретов.
Просмотр заданий¶
Просматривать созданные задания, их состояние, расписание, а также список доступных действий можно на странице Планировщик. Для доступа к ней перейдите в раздел .
Страница Планировщик заданий¶
На странице Планировщик отображается таблица со следующими столбцами:
Описание — назначение задания. Значение в столбце является ссылкой на страницу задания;
Тип — тип выполняемой операции (см. раздел Типы заданий);
Расписание — дата и время однократного запуска или расписание периодического задания;
Статус — текущее состояние задания: «Запланировано», «Приостановлено» или «Завершено»;
Запускался — информация о выполнении задания. До первого запуска отображается
---;Последний запуск — дата и время последнего запуска. До первого запуска отображается
---;Следующий — дата и время следующего запуска. Значение отображается в том числе для приостановленного задания;
Доступные действия над заданием.
Над таблицей доступны поиск по полю Описание и фильтры по типу, статусу задания и статусу последнего запуска. Для фильтра по статусу последнего запуска доступны значения «Выполняется», «Успешно», «Ошибка» и «Отменено». В нижней части таблицы можно переключать страницы и изменять количество отображаемых строк.
Просмотр параметров и истории запусков задания¶
Чтобы открыть страницу задания, нажмите на ссылку в столбце Описание.
На странице задания можно просмотреть его параметры и историю запусков, а также доступные для задания действия.
Страница задания¶
На странице отображаются:
название, тип и текущий статус задания;
ID задачи;
запланированные дата и время запуска;
часовой пояс;
параметры задания;
информация о пользователе, который создал задание;
информация о пользователе, который изменил задание.
Таблица истории запусков содержит следующие столбцы:
Время запуска — дата и время запуска задания;
Время окончания — дата и время завершения задания;
Длительность — продолжительность выполнения задания;
Статус — статус запуска задания;
Журнал — журнал выполнения задания.
Управление заданиями¶
Доступные действия над заданиями¶
Меню доступных действий над заданием открывается при нажатии кнопки в строке этого задания на странице Планировщик.
Действия с заданием¶
В меню доступны следующие действия:
Редактировать — доступно для периодических заданий в конечном статусе и однократных заданий, которые ещё не запускались. Открывает форму редактирования задания (подробнее см. раздел Редактирование задания);
Приостановить — доступно для задания в статусе «Запланировано». Приостанавливает задание, статус изменяется на «Приостановлено», расписание сохраняется;
Возобновить — доступно для задания в статусе «Приостановлено». Возобновляет задание, статус изменяется на «Запланировано»;
Запустить сейчас — запускает задание вне установленного расписания;
Удалить — удаляет задание. Перед удалением необходимо подтвердить действие в открывшемся окне.
На странице задания доступны действия Приостановить, Возобновить, Редактировать и Удалить.
Действие Запустить сейчас доступно только в меню действий конкретного задания на странице Планировщик.
Создание задания¶
Для создания задания:
На странице Планировщик нажмите кнопку Создать задание.
В открывшемся окне укажите параметры создаваемого задания. Поля, отмеченные символом
*, обязательны для заполнения:Описание — назначение задания;
Тип задания — выполняемая операция (см. раздел Типы заданий):
Выбор типа задания¶
Тип расписания — вариант запуска задания:
Однократно — укажите дату и время запуска. Дата и время должны находиться в пределах одного года. Отдельный часовой пояс для однократного задания не выбирается — используется часовой пояс браузера пользователя;
По расписанию (cron) — укажите cron-выражение в поле Расписание и выберите Часовой пояс запуска. Cron-выражение задаётся в следующем формате: минуты, часы, день, месяц, день недели. Например,
0 4 * * *задаёт ежедневный запуск в 04:00.
Настройка задания по расписанию¶
Включите или выключите флажок Активировать. По умолчанию флажок включён: созданное задание будет запущено автоматически в указанное время. При выключенном флажке задание создаётся приостановленным.
Заполните параметры выбранного типа задания:
Запуск внешнего CI (Jenkins) — укажите:
Пользователь — имя предварительно созданного пользователя Jenkins, под учётной записью которого будет выполняться аутентификация;
Путь к токену в Vault — путь к значению пароля пользователя в хранилище
secret_v2Vault. Иерархия каталогов и наименование секрета могут быть произвольными. Например, для путиsecret_v2/jenkins/user1_tokenукажите/jenkins/user1_token, гдеuser1_tokenсоответствует значению поля Key секрета;URL пайплайна — URL пайплайна Jenkins. FQDN из URL должен разрешаться через DNS, а с серверов LCM и Control должен быть настроен сетевой доступ к Jenkins;
Параметры запуска — необязательные аргументы пайплайна в формате
ключ=значение. Каждую пару добавляйте отдельной строкой с помощью кнопки +.
При создании задания система проверяет корректность указанного имени пользователя и значения пароля из секрета. Если необходимые условия не выполнены, создание задания завершается ошибкой. Сертификат Jenkins должен быть подписан тем же центром сертификации, что и сертификаты сервисов платформы. Если сертификат подписан другим центром сертификации, добавьте сертификат этого центра в список доверенных.
Перевод гипервизора в режим обслуживания — выберите один или несколько гипервизоров в поле Гипервизоры. В списке доступен поиск по имени, ID и зоне доступности;
Добавление ВМ в группу(ы) безопасности и Исключение ВМ из групп(ы) безопасности — выберите виртуальные машины и группы безопасности в соответствующих полях. При необходимости укажите сети в поле Сети;
Запуск Gitlab stage job — выберите в поле Выбор задания одно из доступных заданий:
postconfig,client-config,mariadb-backup,audit-diff,rotate.
Выбор задания GitLab¶
Для заданий
postconfig,client-configиaudit-diffдоступны дополнительные необязательные поля:KOLLA ARGS — дополнительные аргументы Kolla-Ansible. Выберите
--tagsили--skip-tagsи укажите значение. Одновременно можно использовать только один тип аргумента. Если аргумент не указан, изменения применяются ко всем компонентам;Группа узлов — узлы, для которых выполняется задание.
Дополнительные параметры задания GitLab¶
Для заданий
mariadb-backupиrotateдополнительные поля не отображаются.
Проверьте указанные параметры и нажмите Создать.
Задание также можно создать со страниц виртуальных машин и гипервизоров:
на странице для нескольких ВМ выберите объекты и в меню групповых действий выберите Создать задание. Для одной ВМ выберите Создать задание в меню действий строки. Выбранные ВМ автоматически передаются в форму создания задания. Доступны типы Добавление ВМ в группу(ы) безопасности и Исключение ВМ из групп(ы) безопасности;
на странице для нескольких гипервизоров выберите объекты и в меню групповых действий выберите Создать задание. Для одного гипервизора выберите Создать задание в меню действий строки. Выбранные гипервизоры автоматически передаются в форму создания задания, тип Перевод гипервизора в режим обслуживания устанавливается автоматически.
Редактирование задания¶
Для редактирования задания:
Откройте меню действий задания на странице Планировщик и выберите Редактировать.
Также редактирование доступно по кнопке Редактировать на странице задания.
Измените необходимые параметры. Поле Тип задания недоступно для изменения после создания задания.
Редактирование задания¶
Нажмите Применить.
Особенности запуска заданий¶
Фактическое время запуска задания может отличаться от запланированного. При отсутствии высокой нагрузки и большого количества заданий в планировщике задержка может составлять от 3 до 13 минут.
Учитывайте следующие особенности:
задания, запланированные на время недоступности GitLab, запускаются после восстановления его работы;
перед плановыми работами в GitLab приостановите задания, запуск которых приходится на период недоступности, чтобы они не запускались после восстановления GitLab вне запланированного времени.
Синхронизация и очистка заданий¶
Портал администратора выполняет синхронизацию заданий с GitLab ежедневно в 00:00 UTC и при запуске контейнера adminui_backend. Источником актуального состояния заданий является его база данных.
Во время синхронизации:
параметры заданий в GitLab сравниваются с данными в базе данных Портала администратора. При расхождениях значения в GitLab обновляются данными из базы;
задания, которые есть в GitLab, но отсутствуют в базе данных Портала администратора, удаляются из GitLab. Если задание выполняется, система сначала пытается остановить его. Если остановить задание не удалось, удаление откладывается до следующей синхронизации;
периодические и ещё не выполнявшиеся однократные задания, которые есть в базе данных Портала администратора, но отсутствуют в GitLab, создаются в GitLab;
завершённые однократные задания, которые есть в базе данных Портала администратора, но отсутствуют в GitLab, удаляются из базы данных Портала администратора;
завершённые однократные задания со статусами
success,failed,canceledилиskippedудаляются из GitLab и базы данных Портала администратора после истечения срока хранения.
По умолчанию завершённые однократные задания хранятся 90 дней с момента последнего запуска.
Данные планировщика резервируются и восстанавливаются вместе с базой данных региона. После восстановления базы данных при запуске Портала администратора выполняется синхронизация, которая согласовывает список заданий в GitLab с данными восстановленной базы данных Портала администратора.
Чтобы изменить срок хранения:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>, а затем откройте файл
REGION.ymlи задайте параметрadminui_scheduler_one_time_job_retention_daysсо значением срока хранения в днях.Для мультирегиональной установки параметр задайте в репозитории первого региона из списка
region_namesфайлаconfig/adminui/adminui-backend-regions.conf.Создайте новый пайплайн: .
В открывшемся окне добавьте переменную
KOLLA_ARGSсо значением-t adminui.Запустите пайплайн New pipeline и дождитесь завершения выполнения задачи setup.
Запустите задачу deploy в созданном пайплайне.
Дождитесь завершения выполнения задачи.