2016-04-28 15 views
0

AWS OpsWorksで実行中のシェフレシピ全体を延期できますか?シェフレシピ全体を遅らせる方法

私は、sleepコマンドを実行しようとしていたが、何の成功:

Chef::Log.info("Delaying chef execution") 
execute 'delay' do 
    command 'sleep 60' 
end 

私が達成したい何が、私は遅れを作り、トップになる可能性がどこに基づき、レシピにすべてのRubyコードを遅らせることはありません真ん中にいる可能性があります。

EDIT:完全なシェフのレシピ:

Chef::Log.info("stopping service rsyslog") 
service 'rsyslog' do 
    action :stop 
end 
Chef::Log.info("configuring private ip addresses for mesos_master templates") 
ruby_block "configuring_mesos_master_templates" do 
    # Do stuff 
end 
Chef::Log.info("starting service rsyslog") 
service 'rsyslog' do 
    action :start 
end 
Chef::Log.info("restarting service zookeeper") 
service 'zookeeper' do 
    action :restart 
end 
Chef::Log.info("restarting service mesos-master") 
service 'mesos-master' do 
    provider Chef::Provider::Service::Upstart 
    action :restart 
end 
Chef::Log.info("starting service marathon") 
service 'marathon' do 
    action :start 
end 

答えて

1

それをやっては結構です、またはあなたがruby_blockリソースとRubyのsleep()メソッドを使用することができます。注文の仕方を覚えていれば、compile-vs-converge splitの概要についてはhttps://coderanger.net/two-pass/を参照してください。

+0

私が書いたコードは実際には機能しませんでした.OpsWorksがこのシェフのレシピを実行すると、すべてが同時に実行されました。 – Casper

+0

収束時のみスリープすることに注意してください。ruby_block以外のRubyコードはコンパイル時に実行されます。あなたがより完全な例を示したなら、それは助けになるかもしれません。 – coderanger

+0

私はあなたの助けを借りて、レシピ全体を追加しました – Casper

関連する問題