makotan _at_ gmail dot com

サービスの起動&停止方法

アプリのパラメータ変更したとしてもサービスに登録したヤツを止めたり、停止したり、殺したり、動かしたり出来ないと運用できないよなぁ〜
って事で、サービスの起動&停止方法のメモ
Windowsにも対応してる模様(ためしてな〜い)

recipe内で普通にサービスを動かす方法

service "example_service" do
  action :start
end

これ、そのまま何も考えずに動かすと一回動いてるやつだとエラーにならないか?みたいな場合は↓こっちで

service "example_service" do
  action :restart
end

recipe内で普通にサービスを止める方法

service "example_service" do
  action :stop
end

こっちは止めるので動いてなければ大丈夫な・・・はず

recipeの途中でサービスを再起動する予約をする方法

実はこれの方が使うんじゃ無いか?って気がする
ファイルの更新があったときだけサービスを再起動したりする場合

template "authorized_ip" do
  path "#{node['nginx']['dir']}/authorized_ip"
  source "modules/authorized_ip.erb"
  owner "root"
  group "root"
  mode 00644
  variables(
    :remote_ip_var => node['nginx']['remote_ip_var'],
    :authorized_ips => node['nginx']['authorized_ips']
  )

  notifies :reload, resources(:service => "nginx")
end

最後の方にある:reloadを:restartにするとOK
これで常にreloadされるんじゃ無くて必要なときだけ実行される。
一個のrecipeの中に複数個のnotifies :reload, resources(:service => "nginx")があったとしても一回だけ実行される
これを見てるとちゃんとサービスに登録した方がメリット大きいよなぁ〜って思った。

参考

全部ここに載ってるので、詳しくはそちらで
http://docs.opscode.com/resource_service.html

感想

OS毎の違いとかが結構ある部分なのにそれを吸収してるのが良いなぁ〜
自作アプリをサービスにしないとこのメリットが受けれないのはちょっと残念だけど仕方の無いところかな