流浪 - 如何打印厨师的命令输出到标准输出?(Vagrant - how to print Chef

2019-08-05 18:46发布

如果我们有厨师的菜谱如下代码:

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包”命令,我们可以看到完整的命令输出。 如何分辨放浪/厨师到显示完整的输出?

编辑:

我试过,但没有在输出发生了改变。

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

Answer 1:

我一无所知无业游民,但我想,如果被证明是不相关的,这可能涉及到您的问题......幸福来删除这个答案!

--force-格式

表示格式化输出将被用来代替记录器输出。

所以,我发现如果solo.rblog_location定义添加选项--force-formatter运行经由rundeck厨师或远程执行时显示输出ssh user@host "chef-solo --force-formatter"



Answer 2:

它打印的bash /脚本/执行资源执行只输出到标准输出的时候:

  • 您需要TTY为您的远程厨师独奏/厨师-client命令。
  • 不是在守护模式下运行厨师客户端
  • 厨师日志级别设置为:debug

见代码chef/Mixin/ShellOut ,线36 。

当使用vagrant up ,似乎没有选择的SSH会话提供了一个TTY,因此该解决方案是一种走动设置后:debug日志级别的厨师:

  1. 运行$ vagrant up
  2. 运行$ vagrant ssh -- -t -这意味着它传递-t为SSH命令,以便有一个为SSH会话一个tty。
  3. 运行chef-solo手动运行厨师,那么你会在标准输出上得到输出。


文章来源: Vagrant - how to print Chef's command output to stdout?