Vagrant - 如何将Chef的命令输出打印到stdout?

Woj*_*ski 5 cookbook chef-infra vagrant

如果我们有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
Run Code Online (Sandbox Code Playgroud)

运行时,vagrant up我们只能看到执行"构建项目"的简要信息.

但是,我们从终端运行'mvn package'命令,我们可以看到完整的命令输出.如何告诉Vagrant/Chef显示完整输出?

编辑:

我试过这个,但输出没有任何改变.

config.vm.provision :chef_solo do |chef|
  chef.log_level = :debug
Run Code Online (Sandbox Code Playgroud)

sha*_*zhu 2

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

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

请参阅代码chef/Mixin/ShellOut第 36 行

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

  1. 跑步$ vagrant up
  2. run $ vagrant ssh -- -t- 这意味着它传递-t给 ssh 命令,以便有一个用于 ssh 会话的 tty。
  3. runchef-solo手动运行 Chef,然后您将在 stdout 上得到输出。