Перейти к основному содержимому

Расписания

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

После внесения изменений обязательно перезапустите службу Semaphore, чтобы они вступили в силу.

Настройка часового пояса

По умолчанию функция расписаний работает в часовом поясе UTC. Однако его можно изменить в соответствии с вашим локальным часовым поясом или конкретными требованиями.

Часовой пояс можно изменить, обновив файл конфигурации или задав переменную окружения:

  1. С помощью файла конфигурации:
    Добавьте или обновите поле timezone в файле конфигурации Semaphore:

    {
    "schedule": {
    "timezone": "America/New_York"
    }
    }
  2. С помощью переменной окружения:
    Задайте переменную окружения SEMAPHORE_SCHEDULE_TIMEZONE:

    export SEMAPHORE_SCHEDULE_TIMEZONE="America/New_York"

Список допустимых значений часовых поясов приведён в базе данных часовых поясов IANA.

Доступ к функции расписаний

  1. Войдите в веб-интерфейс Semaphore
  2. Перейдите на вкладку «Schedule» в главном меню навигации
  3. Нажмите кнопку «New Schedule» в правом верхнем углу, чтобы создать новое расписание

Создание нового расписания

При создании нового расписания необходимо настроить следующие параметры:

ПолеОписание
NameПонятное название запланированной задачи
TemplateШаблон задачи, который нужно выполнить
TimingЛибо в формате cron для большей гибкости, либо с помощью встроенных вариантов для распространённых интервалов

Синтаксис формата cron

Расписание использует стандартный синтаксис cron с пятью полями:

┌─────── minute (0-59)
│ ┌────── hour (0-23)
│ │ ┌───── day of month (1-31)
│ │ │ ┌───── month (1-12)
│ │ │ │ ┌───── day of week (0-6) (Sunday=0)
│ │ │ │ │
│ │ │ │ │
* * * * *

Примеры:

  • */15 * * * * - запуск каждые 15 минут
  • 0 2 * * * - запуск каждый день в 2:00
  • 0 0 * * 0 - запуск в полночь по воскресеньям
  • 0 9 1 * * - запуск в 9:00 первого числа каждого месяца

Очень полезный генератор cron-выражений: https://crontab.guru/

Сценарии использования

Обслуживание систем

# Example playbook for system updates
---
- hosts: all
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes

- name: Upgrade all packages
apt:
upgrade: yes

- name: Remove dependencies that are no longer required
apt:
autoremove: yes

Запланируйте еженедельный запуск этого playbook в нерабочее время, чтобы системы всегда оставались актуальными.

Резервное копирование

Создайте расписания резервного копирования баз данных с разной периодичностью:

  • Ежедневные резервные копии, которые хранятся одну неделю
  • Еженедельные резервные копии, которые хранятся один месяц
  • Ежемесячные резервные копии, которые хранятся один год

Проверки соответствия требованиям

Запланируйте регулярные проверки соответствия, чтобы убедиться, что системы отвечают требованиям безопасности:

# Example compliance check playbook
---
- hosts: all
tasks:
- name: Run compliance checks
script: /path/to/compliance_script.sh

- name: Collect compliance reports
fetch:
src: /var/log/compliance-report.log
dest: reports/{{ inventory_hostname }}/
flat: yes

Развёртывание и очистка окружений

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

Рекомендации

  • Используйте для расписаний понятные названия, отражающие и назначение, и время запуска (например, «Weekly-Backup-Sunday-2AM»)
  • Избегайте одновременного планирования слишком большого числа ресурсоёмких задач
  • Учитывайте влияние длительных запланированных задач на другие расписания
  • Тестируйте расписания с короткими интервалами, прежде чем настраивать production-расписания с более длинными интервалами
  • Документируйте назначение и ожидаемые результаты запланированных задач

Параметры задач

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