2016-04-28 2 views
0

В любом случае я могу отложить весь рецепт шеф-повара, работающий в AWS OpsWorks?Как отложить весь рецепт шеф-повара

Я пытался выполнить команду сна, но не успех:

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 ресурс и метод Руби sleep(). Помните, как работает упорядочение, см. https://coderanger.net/two-pass/ для обзора сплита компиляции-сс-сходимости.

+0

На самом деле код, который я написал, не работал, так как OpsWorks выполняет этот рецепт шеф-повара, все просто запускалось одновременно. – Casper

+0

Помните, что будет спать только при сближении, любой код Ruby за пределами ruby_block будет работать во время компиляции. Если вы продемонстрируете более полный пример, это может помочь. – coderanger

+0

Я добавил весь рецепт, спасибо за вашу помощь – Casper

Смежные вопросы