2017-06-02 10 views
0

シェフで始まった初心者の問題を解決するために直面​​しています。 Concretlyシェフ:サービス開始時に何かする

  1. 私はサービスを開始したいと思います。何かを開始した
  2. (、ファイルを作成し、コマンドを実行し...)現在

、私は解決しています、この使用:

service 'mongod' do 
    action :start 
end 

execute "Add Mongo Users" do 
    command "mongo #{host}:#{port} /tmp/mongo.setup.users.js" 
    retries 5 #times 
    retry_delay 10 #seconds 
end 

それはエレガントな方法ではないのですがそれを私が信じるように働かせる。

私の質問です:通知とサブスクリプションを使用して解決する方法はありますか?私はすでにドキュメンテーションを見てきましたが、私はそれをどうやって取得するのかは分かりません。 @coderangerが述べたように、私はjavascriptのではないと、本当に慎重になり、また

subscribes|notify, 'resource_type[resource_name]', :timer 

notifiessubscribesがある。一般に

execute 'foo' do 
    cmd 'bar' 
    subscribes :run, 'service[mongod]', :immediate # or :delayed 
end 

、道:

+0

JSスクリプトは冪等価ですか?私。二度走れば正しいことができますか? – coderanger

答えて

0

同じくらい簡単です(これはここでは、すでに存在していても、この場合ユーザーが何度も作成するという意味です)。

個人的には、これはyour own libraryと書いてあります。MongoDB driver for Rubyは、ユーザー、インデックス、ドキュメントを作成/削除/編集するために使用できます...ルビーのシェフ(私の意見では)「インフラストラクチャとしてのインフラ」のコンセプトに似ています。

+0

ありがとう@Navarro。私はあなたのアプローチを試みました、私はかなり間違ったことをしていると思います。私は投稿を編集しました。私は本当に何か間違っているのですか? – Jordi

+0

私はこのポスト版をstackoverflow [here](https://stackoverflow.com/questions/44365961/chef-mmake-sure-a-service-is-listennig-on-network)の新しい投稿で置き換えました。 – Jordi

関連する問題