Рубрики
Uncategorized

Sparky — мощный карманный размер -сервер задач в стиле Crontab

Небольшой, но мощный асинхронный бегун Cron Runner, построенный на системе плагинов Sparrow. Tagged с Docker, Perl6, Linux, DevOps.

Иногда мне нужно запустить некоторое периодическое Задачи и получить Отчеты Анкет Пролив на моей машине. Что -то простое и настраиваемое. И да, иногда я хочу запустить задание удаленно , не только на Localhost, Over ssh или на Docker экземпляры.

Linux обеспечивает старое хорошее Крон для этого. Однако, если задачи не просто небольшие сценарии, Crontab быстро становится неловким решением и трудно поддерживать. Существуют «тяжелые» инструменты, такие как Дженкинс или Team City, но это кажется излишним для цели «одно машины». Мне нужно что-то легкое, быстрое развертывание и взломать.

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

Основные особенности Sparky:

  • Определение времени работы в стиле Crontab
  • Сценарии, определенные как Sparrowdo сценарии
  • Хороший набор предопределенных задач доступны
  • Все хранится в репозитории SCM — легко переносить, поддерживать и отслеживать изменения
  • Задачи запускаются асинхронно В одном из 3 ароматов — 1) на Localhost 2) на удаленных машинах через ssh 3) на Docker экземпляры
  • Хороший веб -интерфейс для чтения отчетов о задачах предоставлен

Заинтересованы? Вперед! (:

Sparky написан на Perl6, поэтому установите как модуль Perl6, мы хотим, чтобы версия GH Lates GH:

$ git clone Sparky https://github.com/melezhik/sparky.git
$ cd sparky
$ zef install .

Sparky хранит свои данные в базе данных, по умолчанию — это SQLite (Mysql/Postgrsql также возможны), нам нужно создать схему:

$ perl6 db-init.pl6

Теперь давайте запустим Sparky Services, первый называется Sparky-Web для приложения пользовательского интерфейса, а второй называется Sparkyd Демон для выполнения задач

Самый простой способ сделать это — использование установщиков Sparrowdo Systemd и поставляется с дистрибуцией:

$ sparrowdo --sparrowfile=utils/install-sparkyd-systemd.pl6 --local_mode
$ sparrowdo --sparrowfile=utils/install-sparky-web-systemd.pl6 --local_mode

Если все в порядке, мы увидим Sparky UI, доступный по адресу http://localhost: 3000 и Daemon Sparkyd считается процессом в списке процессов:

$ ps uax | grep sparkyd
root       9511  3.3 10.0 574440 202988 ?       Ssl  14:38   7:35 /opt/rakudo-pkg/bin/moar --execname=/opt/rakudo-pkg/bin//perl6 --libpath=/opt/rakudo-pkg/share/nqp/lib --libpath=/opt/rakudo-pkg/share/nqp/lib --libpath=/opt/rakudo-pkg/share/perl6/lib --libpath=/opt/rakudo-pkg/share/perl6/runtime /opt/rakudo-pkg/share/perl6/runtime/perl6.moarvm /opt/rakudo-pkg/share/perl6/site/bin/sparkyd --root=/root/projects/devops/sparky

Теперь самая захватывающая часть — настройка первой задачи, запустите ее и увидите результаты!

Как и Sain, Sparky Task — это просто сценарий Sparrowdo, если вы не знакомы с Saprrowdo — Не волнуйтесь, есть много постов об этом инструменте. Но для нас просто удобный DSL Для создания сценариев пользователей:

$ nano project1/sparrowfile

#!perl6

bash "echo Hello! My name is Sparky!";

Это простая задача, готовая запустить Sparky, но сначала нам нужно настроить запись Crontab, это просто, это просто старый старый стиль Crontab:

$ nano project1/sparky.yaml

# what about running every minute? 
crontab: "* * * * *"

Я этого не сказал, но мы должны сохранить 2 файла ( Sparrowfile и Sparky.yaml ) в некоторые каталог, расположенный в $ Sparky_root каталог, который ~/.parky/Projects по умолчанию:

$ ls -d ~/.sparky/projects
project1
project2
project3

Таким образом, Sparkyd читает все подзадачи (глубина 1 уровня), расположенные в $ Sparke_root и выполняет найденные искрученные задачи. $ Sparke_root настраивается через переменную окружающей среды или в качестве параметра командной строки для DAMON TASCER RUNNER DAEMON:

$ sparkyd --root=/path/to/sparky/root/directory

Хорошо, давайте перейдем к веб -интерфейсу, чтобы увидеть результаты для нашей первой задачи:

running sparrow tasks on 127.0.0.1 ... 

target OS is - centos7
push [task] run bash: echo 'Hello! My name is Sparky!' ... OK
SPL file /opt/sparky-sparrowdo/project1/sparrow.list is empty
set up task box file - /home/melezhik/.sparrowdo//opt/sparky-sparrowdo/project1/task-box.json - OK

found ini file: /home/melezhik/sparrowdo.ini
sparrow root: [/opt/sparky-sparrowdo/project1]
/opt/sparky-sparrowdo/project1/sparrow.index updated OK from https://sparrowhub.org
sparrow root: [/opt/sparky-sparrowdo/project1]
public@bash is uptodate (0.1.8)
running task box from /opt/sparky-sparrowdo/project1/sparrow-cache/task-box.json ... 
@ runs bash command
2018-10-19 19:25:01 : [task] run bash: echo Hello! [path] /modules/bash-command/ [params] envvars:
Hello! My name is Sparky!
ok  scenario succeeded
STATUS  SUCCEED

Таким образом, поскольку мы видим, что задание завершено успешным, до сих пор мы выполняем задание на Localhost, но мы не ограничены. Sparkly также способен выполнять задачи удаленно:

Над SSH

$ nano sparky.yaml

sparrowdo:
  host: '192.168.0.1'
  ssh_private_key: /path/to/ssh_private/key.pem
  ssh_user: sparky

На докере

$ nano sparky.yaml

sparrowdo:
  docker: 'black_horse'

Просто выделение этого не было покрыто этим постом

  • Sparky Plugins Чтобы расширить базовые функциональные возможности (отправка электронной почты уведомления по адресу выполнения задач и так далее)

  • Настройка Спечкие задачи

  • Управление старыми отчетами

  • Отключение задач

  • Используя mysql/postgresql Двигатели базы данных

  • Отладка искрывающих задач с использованием Задача бегуна Анкет

  • Docker Image С Sparky, готовым к использованию

Как всегда ваши комментарии и отзывы высоко ценится.

Оригинал: «https://dev.to/melezhik/sparky—powerful-pocket-size-task-runner-server-in-crontab-style-2ed5»