Skitflow

Запланированные задачи

Узнайте, как автоматизировать задачи с помощью функции запланированных задач Skitflow

Запланированные задачи в Skitflow позволяют создавать и управлять автоматизированными задачами, которые выполняются по заданному расписанию с использованием cron-выражений. Каждое выполнение задачи создаёт запись в логе, где вы можете отслеживать вывод и статус выполнения.

Типы задач

Skitflow поддерживает четыре типа запланированных задач:

  1. Задачи приложений: Выполнение команд внутри конкретных контейнеров приложений
  2. Задачи Compose: Выполнение команд в сервисах Docker Compose
  3. Задачи сервера: Выполнение скриптов на удалённых серверах
  4. Задачи сервера Skitflow: Выполнение задач на самом сервере Skitflow

Контейнерные задачи (Application и Compose)

Для задач приложений и Compose вы можете выполнять отдельные команды внутри целевого контейнера. Skitflow внутренне использует Docker exec для запуска этих команд:

docker exec -it <container_id> <command>

Пример

Предположим, у вас есть контейнер nginx и вы хотите проверить версию nginx:

  1. Создайте новую запланированную задачу
  2. Установите команду: nginx -v
  3. Настройте желаемое расписание, используя синтаксис cron
  4. Сохраните и отслеживайте логи выполнения

Целевой контейнер должен быть запущен для успешного выполнения задачи.

Для задач Docker Compose не рекомендуется изменять переменную окружения COMPOSE_PROJECT_NAME, так как она используется для идентификации проекта.

Серверные задачи (Server и Skitflow Server)

Для удалённых серверов и сервера Skitflow вы можете писать bash-скрипты для выполнения различных задач. Эти скрипты могут использовать любую команду или инструмент, доступный в целевой системе.

Убедитесь, что все необходимые зависимости установлены на целевом сервере перед использованием в ваших скриптах.

Пример 1: Автоматическая очистка Docker

Этот скрипт очищает неиспользуемые контейнеры Docker. Вы можете запланировать его выполнение каждые 15 минут, используя cron-выражение */15 * * * *:

#!/bin/bash
docker system prune --force

Пример 2: Пользовательское резервное копирование базы данных

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

#!/bin/bash
# Backup script for custom database
backup_date=$(date +%Y%m%d_%H%M%S)
backup_file="database_${backup_date}.backup"

# search the container name
container_name=$(docker ps --filter "name=clickhouse" --format "{{.Names}}")

# Add your backup commands here
docker exec -it $container_name clickhouse-client --query "BACKUP DATABASE mydb TO '/backups/$backup_file'"

# Upload to S3 (if needed)
# aws s3 cp /backups/$backup_file s3://your-bucket/backups/

Опции задачи

Помимо команды или скрипта, каждая задача поддерживает:

  • Cron-выражение — расписание в стандартном cron-синтаксисе.
  • Таймзона — вычислять расписание в конкретной таймзоне.
  • Shell — запускать скрипты через bash или sh.
  • Enabled — включать и выключать задачу без удаления.
  • Запустить сейчас — вручную запустить задачу для проверки, вне расписания.

Лучшие практики

  1. Всегда тестируйте команды или скрипты вручную перед планированием
  2. Используйте надлежащую обработку ошибок в ваших скриптах
  3. Учитывайте влияние запланированных задач на системные ресурсы

On this page