无论如何,我可以延迟在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
答案 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/中所述。