如何延迟整个厨师食谱

时间:2016-04-28 19:24:07

标签: ruby shell chef

无论如何,我可以延迟在AWS OpsWorks中运行的整个厨师食谱吗?

我试图执行睡眠命令但没有成功:

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

我想要实现的是根据延迟的位置延迟配方中的所有Ruby代码,可以在顶部,可以在中间。

编辑:完成厨师食谱:

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

2 个答案:

答案 0 :(得分:1)

这样做很好,或者您可以使用ruby_block资源和Ruby的sleep()方法。请记住排序是如何工作的,有关compile-vs-converge split的概述,请参阅https://coderanger.net/two-pass/

答案 1 :(得分:0)

与此同时,Chef(在15.5版中)为此引入了一个自己的“ chef_sleep资源”,如https://docs.chef.io/resources/chef_sleep/中所述。