2013-01-06 10 views
5

Wenn wir in der Chef-Kochbuch-Code haben wie:Vagrant - wie man Chefs Befehlsausgabe zu stdout druckt?

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 

Wenn vagrant up laufen wir nur kurze Informationen sehen können, dass ‚Build-Projekt‘ ausgeführt wird.

aber wen wir laufen ‚mvn package‘ Befehl vom Terminal können wir volle Befehlsausgabe sehen. Wie sage ich Vagrant/Chef, um die volle Ausgabe zu zeigen?

EDIT:

Ich habe versucht, dies aber nichts hat sich in der Ausgabe geändert.

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

Ordnung ausgeführt wird, ich denke, die Antwort ist nein. Wenn das Skript funktioniert, bleibt die Ausgabe verborgen. Ein (extrem) hacky Weg, dies zu tun, könnte jedoch die Attribute 'returns 2' und 'ignore_failure' sein, die jedes Mal fehlschlagen würden. Sie erhalten die volle Ausgabe bei einem Fehler. Ich würde diese Technik jedoch nur zum Debuggen verwenden. Und senden Sie eine Feature-Anfrage an opscode. – quandrum

+0

Haben Sie versucht, die Option "flags" für die bash-Ressource zu verwenden, um '-x' zu übergeben? – agross

Antwort

2

Er druckt bash/script/execute Ausgaberessource Ausführung nur nach stdout, wenn:

  • Sie TTY benötigen für Remote-Koch-Solo/Koch-Client-Kommando.
  • nicht Koch-Client im Daemon-Modus
  • Koch Protokollebene auf :debug

die code chef/Mixin/ShellOut, line 36 See laufen.

Wenn vagrant up verwenden, scheint es keine Möglichkeit, eine TTY für die SSH-Sitzung zur Verfügung zu stellen, so wird die Lösung Art herumlaufen, nachdem Sie :debug Protokollebene für Koch eingestellt:

  1. Lauf $ vagrant up
  2. Lauf $ vagrant ssh -- -t - das heißt, es geht -t Befehl ssh so, dass es eine tty für die sSH-Sitzung ist.
  3. laufen chef-solo manuell Koch laufen, dann werden Sie die Ausgabe auf stdout bekommen.
3

Ich weiß nichts über Landstreicher, aber ich denke, das kann sich auf Ihr Problem beziehen ... Gerne, diese Antwort zu löschen, wenn sich als irrelevant erweist!

--force-formatter

Zeigt an, dass Formatierer Ausgabe statt Logger Ausgabe verwendet werden.

So fand ich, wenn solo.rb hat log_location die Option definiert das Hinzufügen --force-formatter zeigt die Ausgabe, wenn Koch über Rundeck läuft oder aus der Ferne ssh [email protected] "chef-solo --force-formatter"

+2

Danke für den Tipp hier, ich schaffte es, vagrant zu werden, um die volle Kochdurchlaufausgabe mit 'Chef auszugeben.arguments = '--force-formatter' im Chef-Teil der Vagrantfile! – jedifans