5

如果我们在 Chef 食谱中有如下代码:

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
4

2 回答 2

3

我对 vagrant 一无所知,但我认为这可能与您的问题有关...如果证明无关紧要,很高兴删除此答案!

--force-格式化程序

表示将使用格式化程序输出而不是记录器输出。

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

于 2013-11-29T03:49:51.627 回答
2

它仅在以下情况下将 bash/script/execute 资源执行输出打印到标准输出:

  • 您的远程 chef-solo/chef-client 命令需要TTY
  • 不在守护进程模式下运行 chef-client
  • 厨师日志级别设置为:debug

代码chef/Mixin/ShellOut,第 36 行

使用时,似乎没有为 ssh 会话提供 TTY 的选项,因此解决方案是在为厨师设置日志级别vagrant up后四处走动::debug

  1. $ vagrant up
  2. run $ vagrant ssh -- -t- 这意味着它传递-t给 ssh 命令,以便 ssh 会话有一个 tty。
  3. 运行chef-solo手动运行厨师,然后您将在标准输出上获得输出。
于 2013-10-19T14:51:47.043 回答