2013-10-08 2 views
2

Я думал об этом и искал это целую вечность, не найдя ничего, поэтому я собираюсь предположить, что попал в проблему XY.Как запустить задачу capistrano при запуске сервера?

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

Мы используем capistrano для развертывания нашего веб-приложения и db. Соответствующая часть состоит в том, что у нас есть выделенный сервер для отложенной работы, и мы используем capistrano для его развертывания и запуска/перезапуска процессов. Это индивидуальное количество работников с двумя разными Gemfile и тремя очередями.

Что я хочу сделать - это запустить их при перезагрузке сервера или, точнее, на сервере clone + start.

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

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

Edit: Просто найти this post .. ..

препятствуя

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

ответ

0

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

0

Мои Дженкинс развернуть работы завалены разработчиков прямые задачи можно назвать такие, как крышка Dev приложение: fetch_logs, крышка Qa sanitize_environment и т.д.

Эта особенность Capistrano легко и проверена.

Что я угадываю, что вы хотите сделать, это использовать Capistrano для установки файлов rc.d. Да, ты можешь это сделать. Должны ли вы использовать шеф-повар/марионетку в этот момент? Рассматривать. Scalr/Rightscale - это забавные вещи, на которые нужно смотреть.

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

+0

Что я пытался сделать, это добавить, возможно, задачу capistrano в rc local, но спасибо –

+0

Добавление задачи capistrano в rc.local, вероятно, будет иметь каждый серверный логин для всех остальных, работающих в роли: приложение и что-то делать. Полагаю, вы можете обернуть его в командах run_locally. Дело в том, что это не инструмент для rc.local. Вы должны были бы убедиться, что поле выделено с помощью rvm, камень capistrano установлен правильно,/etc/profile правильный (rc.local не работает с профилем) и вызывает полные строки из rc.local (/ usr/bin/cap local start_server) или некоторые из них. Путь взломанный, и любой человек типа Операции застрелит вас. – Electrawn

+0

haha ​​достаточно справедливо –

Смежные вопросы