Chef и git sync - как уведомить службу runit о перезагрузке при наличии обновления? - PullRequest
4 голосов
/ 03 апреля 2012

Я использую приведенное ниже для синхронизации моего репозитория github в моем рецепте от шеф-повара.

branch_name = "master"
git "/home/ubuntu/workspace/repo" do                            
    repository "git@github.com:me/repo.git"
    revision branch_name                                  
    action :sync                                     
    user "root"                                                                  
end

В репозитории находится мой скрипт python web.py, который запускает мое приложение spawn-fcgi. Я использую рецепт runit для запуска своей работы spawn-fcgi.

include_recipe "runit"
runit_service "myservice"

Вопрос заключается в том ... что сценарий index.py был обновлен в репозитории ... как уведомить runit scipt myservice о перезагрузке моего сценария spawn-fcgi?

1 Ответ

7 голосов
/ 03 апреля 2012

Если я правильно понимаю, это должно перезагрузить службу после обновления git:

branch_name = "master"
git "/home/ubuntu/workspace/repo" do                            
    repository "git@github.com:me/repo.git"
    revision branch_name                                  
    action :sync                                     
    user "root"                                                                  
    notifies :restart, "service[myservice]"
end

Перезагрузка будет отложена до конца вашего шеф-повара. Чтобы это произошло немедленно, вы можете изменить последнюю строку на:

notifies :restart, "service[myservice]", :immediately

Определение runit_service не поддерживает: перезагрузка как операция. Обратите внимание, что это будет перезапускать сервис каждый раз, когда изменяется версия git (и, соответственно, обновляется локальное хранилище). Если вы хотите отслеживать только один файл, вам, вероятно, потребуется написать скрипт или что-то еще, чтобы проверить наличие обновленного файла, но я подозреваю, что любое изменение git должно перезапуститься.

...