2016-04-28 10 views
1

を待っている私は、シェフのIRC上coderangerからいくつかの大きな方向性を持って、私はさらにバグに彼を望んでいませんでしたが、ここに私の問題だ:ruby​​_block条件文と再起動

私の目標は、レシピ1を実行することです、それから2、シェフを稼働させたまま再起動し、レシピ3を実行します。私は近くにいると思うが、まだエラーに陥っていると思う。コードブロックであるかWindowsでの動作かはわかりません。

ここに私のコードブロックです:

ruby_block "test" do 
    block do 
    run_context.include_recipe "stuff::reboot" 
     while reboot_pending? == true do 
      run_context.include_recipe "stuff::three" 
    end 
    end 
end 

ブロックが無い問題に実行しますが、ものに迅速に移動しているようだ::マシンがあるので、PowerShellは使用できないため、このエラーが発生し3つのレシピまだ起動中:

==> default: The argument 'c:/tmp/vagrant-elevated-shell.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the -File parameter. 

私は、rebootコマンドが発行されると、数秒後にはもはや保留中の再起動はないと考えています。だから、私と一緒に使っているルビーヘルパーがいますか?それとも、このブロックはちょっと駄目ですか?

答えて

2

私はここでも多くの質問に答えます。しかし、考えをありがとう。

あなたはwhileループの本体にinclude_recipeを入れようとし続けますが、これは私が思っていないものではありません。これは、「リブートが保留中のときに何度もこれを組み込む」と言います。何をしたい

はこれです:

include_recipe 'stuff::reboot' 

ruby_block 'wait for reboot' do 
    block do 
    true while reboot_pending? 
    end 
end 

include_recipe 'stuff::three' 

再起動が保留されている場合は収束を停止2つのレシピからのものの間でコレクションにリソースを置くこと、それ以外の場合は継続します。

+0

私を助けてくれてどうもありがとう。私は上記のコードを試して、同じ動作が存在します。再起動部分が実行されてから実行が続行されて失敗すると、わずかな一時停止が発生します。 – Kryten

+0

ええ、私はそれが分かったと思います。私はWindowsサーバーを再起動するレシピを書きました.Windowsのreboot_handlerを有効にしたので、 "default value" 60 "はリソースwindows_rebootのプロパティタイムアウトには無効です。これはエラーになります:オプションのタイムアウトは[Integer]の種類でなければなりません!あなたは1の場所で "60"を渡しました: "大丈夫です! – Kryten