Как запустить задачу capistrano на старте сервера?


Я думал об этом и искал это в течение многих веков, ничего не находя, поэтому я собираюсь предположить, что я попал в проблему XY.

Позвольте мне описать мою проблему, это звучит достаточно распространенно.

Мы используем capistrano для развертывания нашего веб-приложения и БД. Важная часть заключается в том, что у нас есть выделенный сервер для отложенных заданий, и мы используем capistrano для развертывания на нем и запуска/перезапуска процессов. Это пользовательское число работников с 2 различными GemfileS и 3 очередями.

То, что я хочу do состоит в том, чтобы запустить их при перезагрузке сервера или, более того, на сервере clone + start.

Я попытался вызвать cap production delayed_job:custom_start с самого сервера.. ничего не вышло. (В этом суть моей проблемы ху отрегулировать вопрос). Не уверен, что это вообще имеет смысл. Но я хочу знать, возможно ли это. custom_start - это задача, с которой начинается наш набор работников.

В качестве альтернативы я думаю абстрагировать код в задачу rake или сценарий или что-то еще и вызвать его из как capistrano , так и где бы то ни было мне нужно было бы добавить его, чтобы начать при запуске. Есть ли в этом больше смысла?

Edit: только что нашел этот пост.. обескураживающий..

Я просто хочу уточнить, что когда я говорю сервер, я имею в виду мой экземпляр Machine/ec2, а не перезапуск моего веб-приложения.
2 2

2 ответа:

Мои задания Jenkins deploy завалены прямыми задачами, которые разработчики могут вызывать, например, Cap dev app:fetch_logs, cap qa sanitize_environment и т. д.

Эта особенность Капистрано проста и проверена.

Я предполагаю, что вы хотите использовать Capistrano для настройки rc.D файлы. Да, вы можете это сделать. Следует ли вам использовать chef / puppet в этот момент? Считать. Scalr/RightScale, позволяющее производить несколько потех вещи посмотреть тоже.

Вы можете добавить сценарий bash в качестве .erb шаблон для всех ваших рабочих переменные, а затем поместите загрузить скрипт в каталог deploy_to. Наконец, вы можете настроить другую задачу (#{sudo}) для внедрения rc.D обертки в rc.d. или вы, а не РК.фантики D для вас баш скрипт, просто вызвать скрипт из RC.д-местный. Вы можете использовать sed для добавления к rc.д-местный.

В итоге я переместил логику, связанную с отложенным заданием, в свой собственный сценарий, который принимает start/stop,и делегировал этому сценарию из capistrano. Это означает, что я могу добавить этот скрипт в свой rc.местный.