Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何延迟整个厨师食谱_Ruby_Shell_Chef Infra - Fatal编程技术网

Ruby 如何延迟整个厨师食谱

Ruby 如何延迟整个厨师食谱,ruby,shell,chef-infra,Ruby,Shell,Chef Infra,我是否可以在AWS OpsWorks中延迟整个厨师食谱的运行 我试图执行sleep命令,但没有成功: Chef::Log.info("Delaying chef execution") execute 'delay' do command 'sleep 60' end 我想达到的目的是在配方中延迟所有的红宝石代码,根据我在哪里延迟,可以在顶部,可以在中间。< /P> 编辑:完成厨师配方: Chef::Log.info("stopping service rsyslog") service

我是否可以在AWS OpsWorks中延迟整个厨师食谱的运行

我试图执行sleep命令,但没有成功:

Chef::Log.info("Delaying chef execution")
execute 'delay' do
  command 'sleep 60'
end
我想达到的目的是在配方中延迟所有的红宝石代码,根据我在哪里延迟,可以在顶部,可以在中间。< /P> 编辑:完成厨师配方:

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

这样做很好,或者您可以使用
ruby_块
资源和ruby的
sleep()
方法。还记得排序是如何工作的吗,请参阅以获得编译与聚合拆分的概述。

与此同时,Chef(在15.5版中)为中所述的类似内容引入了自己的“Chef_睡眠资源”。

实际上,我编写的代码不起作用,因为OpsWorks执行此Chef配方,所有东西都是同时运行的。记住,只有在收敛时才休眠,Ruby_块之外的任何Ruby代码都会在编译时运行。如果你展示一个更完整的例子,可能会有所帮助。好吧,那你想睡在哪里?我要记录在案的是,Chef是围绕一个趋同的模型/思想构建的,而你的食谱基本上完全是程序性的步骤,更适合bash脚本。此外,你可能会遇到与资源克隆相关的问题。我正试着在一切之上睡觉