2013-06-30 258 views
11

我正在爲一個流浪盒子的廚師食譜而苦苦掙扎。我正在使用廚師獨奏。是否有可能從流浪箱調試廚師食譜?

我對Ruby不太習慣(我以前從未使用過),所以如果我必須每次都做vagrant provision,那麼編寫我的食譜的過程非常長。

有沒有辦法調試一個特定的配方?即使從虛擬機外殼。

我已經看到chef-shell存在(http://docs.opscode.com/chef_shell.html),我可以啓動它(它的工作原理)當我在虛擬機內,但我不明白如何加載我的食譜和測試它們。

回答

4

您可以直接從虛擬機內的shell中使用chef-solo,但這需要與您已經擁有的流浪者不同的文件結構。

它看起來有點像什麼做here

  • 你需要你的食譜目錄
  • 你需要一個包含駐留在chef.json所有數據以.json文件在您Vagrantfile
  • 你需要一個像上面這個帖子那樣的包裝器/啓動ruby腳本。

一般來說,嘗試尋找解釋廚師獨奏沒有流浪漢的教程。

+0

它的工作原理。感謝名單! – apelliciari

8

除了上述輸入,這是在調試模式下execllent ;-)

乳寧chef-solo(啓用調試輸出)有一定幫助。

例如

chef-solo -c solo.rb -j node.json -l debug

+0

感謝您的加入 – apelliciari

+0

檢查文件夾/ tmp /應該有流浪者編譯的solo.rb json配置,您可以使用 – ahmy

5

如果您運行的廚師獨奏流浪額外的自定義參數內(用於記錄/調試),可以從Vagrantfile注入這樣的:

Vagrant.configure("2") do |config| 
    # ... 
    config.vm.provision :chef_solo do |chef| 
     chef.arguments = '-l debug' 
     # ... 
    end 
end 
+0

看起來像chef.arguments沒有記錄在v1和v2文檔中。 –

29

正確在當前流浪廚師配置器中啓用調試輸出的方式是使用chef.log_level,而不是使用chef-solo手動或使用chef.arguments:

Vagrant.configure("2") do |config| 
    # ... 
    config.vm.provision :chef_solo do |chef| 
    chef.log_level = :debug 
    # ... 
    end 
end