Иногда мне нужно запустить некоторое периодическое Задачи и получить Отчеты Анкет Пролив на моей машине. Что -то простое и настраиваемое. И да, иногда я хочу запустить задание удаленно , не только на 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»