2013-01-06 47 views
5

如果我們有廚師的菜譜如下代碼:Vagrant - 如何打印廚師的命令輸出到標準輸出?

if !File.exists?('/vagrant/project/target/project/WEB-INF") || node[:compile_project] 
    bash "build project" do 
    user "vagrant" 
    cwd "/vagrant/project" 
    code <<-EOH 
     mvn clean 
     mvn db-migration:migrate 
     mvn package 
    EOH 
    end 
end 

當運行vagrant up我們可以看到,「建設項目」僅執行的簡要信息。

但是,我們從終端運行'mvn package'命令,我們可以看到完整的命令輸出。 如何告訴Vagrant/Chef顯示完整的輸出?

編輯:

我已經試過,但沒有在輸出發生了改變。

config.vm.provision :chef_solo do |chef| 
    chef.log_level = :debug 
+0

好時加入選項--force-formatter顯示輸出,我認爲答案是否定的。如果腳本正常工作,輸出將保持隱藏狀態。然而,一個(非常)詭計多端的方法可能會增加'returns 2'和'ignore_failure'屬性,每次都會失敗。失敗時你會得到完整的輸出。但是,我只會使用這種技術進行調試。並提交功能請求到opscode。 – quandrum

+0

您是否嘗試過使用bash資源的「標誌」選項來傳遞'-x'? – agross

回答

2

它打印的bash /腳本/執行資源執行輸出到標準輸出,只有當:

  • 你需要TTY爲您的遠程廚師獨奏/廚師-client命令。
  • 在守護進程模式不運行廚師客戶
  • 廚師日誌級別設置爲:debug

code chef/Mixin/ShellOut, line 36

當使用vagrant up,似乎沒有選擇的SSH會話提供了一個TTY,因此該解決方案是一種走走您爲廚師:debug日誌級別後:

  1. 運行$ vagrant up
  2. 運行$ vagrant ssh -- -t - 這意味着它將-t傳遞給ssh命令,以便ssh會話有一個tty。
  3. 運行chef-solo手動運行廚師,那麼你會得到輸出的標準輸出。
3

我對流浪者一無所知,但我認爲這可能與您的問題有關......如果證明無關緊要,很高興刪除此答案!

--force-formatter

指示格式化器輸出將被用來代替記錄器輸出。

所以我發現,如果solo.rblog_location定義通過rundeck運行廚師或遠程執行ssh [email protected] "chef-solo --force-formatter"

+2

感謝您在這裏的提示,我設法讓流浪漢與主廚一起輸出完整的廚師跑輸出。參數=' - force-formatter'在流浪文件的廚師部分! – jedifans

相關問題