Hatena::ブログ(Diary)

(ひ)メモ このページをアンテナに追加 RSSフィード

2014-07-17 (Thu)

daemontoolsなserviceをハンドリングするための Chef::Provider::Service::Daemontools を書いてみました

Chefでdaemontools配下のサービスをハンドリングするときは、コミュニティクックブックの daemontools を使ってる人が多いと思います。

こんな感じで。

daemontools_service "tinydns-internal" do
  directory "/etc/djbdns/tinydns-internal"
  template false
  action [:enable,:start]
end

notification も送れます。

template '...' do
  ...
  notifies :restart, 'daemontools_service[tinydns-internal]'
end

自分もこれを使おうと思ったのですが、いくつか不満点がありました

  • serviceとdaemontools_serviceの両対応のレシピを書く場合、
    • service と daemontools_service とでほぼ同じ記述をしないといけない
    • notifies を送る側でも service か daemontools_service か意識しないといけない
  • action :stop で svc -p (SIGSTOP) している
    • なんで svc -d (SIGTERM) じゃないんでしょうか。。。
  • サービスのハンドリングだけしたいので、daemontools のインストールとかは別に要らない
    • 依存で ucspi-tcp もインストールされるが使ってないので要らない
    • RedHat系だと "daemontools" という名前のパッケージを入れようとするが、(内部のyum reposにある)"daemontools-toaster" を入れたい
      • attribute によるパッケージ名の変更はできない
  • run ファイルの生成機能は別に要らない(あっても使わなければいいだけだけど)

ので、service リソース (http://docs.opscode.com/resource_service.html) の provider として指定可能な Chef::Provider::Service::Daemontools を書いてみました。


パスの通った適切な階層 (どこか/chef/provider/service/daemontools.rb) に置けばこんな感じで使えます。(gem化してgem installした方がいいんでしょうかね?)

require 'chef/provider/service/daemontools'

template '...' do
  ...
  notifies :restart, 'service[oreno-daemon]'
end

service 'oreno-daemon' do
  provider Chef::Provider::Service::Daemontools
  service_dir '/service'
  directory '/usr/oreno/daemon/oreno-daemon'
  supports :restart => true, :reload => true
  action [:enable, :start]
end
  • provider: 「provider Chef::Provider::Service::Daemontools」は必須です
  • service_dir: svscanが監視しているディレクトリです。この下にsymlinkが作られます。デフォルトは /service です
  • directory: symlinkが指すrunファイル等があるディレクトリです。デフォルトは /usr/oreno/daemon/#{service_name} です

notifies でも既存の service と同じように 「service[oreno-daemon]」 と指定できるのがミソです。

Special thanks!

daemontools.rb を書くにあたり、ルビーカの低い自分を @ さんと @ さんに助けていただきました! あざっっっっっっっっっっっっっす!!!

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/hirose31/20140717/1405601526
2003 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 05 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 12 |
2012 | 01 | 02 | 03 | 06 | 08 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 |