Chef infra 流浪汉-如何打印Chef';s命令输出到标准输出?

Chef infra 流浪汉-如何打印Chef';s命令输出到标准输出?,chef-infra,vagrant,cookbook,Chef Infra,Vagrant,Cookbook,如果我们在厨师烹饪手册中有如下代码: 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

如果我们在厨师烹饪手册中有如下代码:

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

只有在以下情况下,它才会将bash/script/execute资源执行输出打印到stdout:

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

使用
vagrant up
时,似乎没有为ssh会话提供TTY的选项,因此在设置
:debug
chef的日志级别后,解决方案是一种漫游:

  • 运行
    $vagrant up
  • 运行
    $vagrant ssh--t
    -这意味着它将
    -t
    传递给ssh命令,以便ssh会话有一个tty
  • 运行
    chef solo
    手动运行chef,然后您将在stdout上获得输出

  • 我对流浪汉一无所知,但我想这可能与你的问题有关。。。如果证明不相关,很高兴删除此答案

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


    因此,我发现如果
    solo.rb
    定义了
    log\u位置
    ,则添加选项
    --force formatter
    可在通过rundeck运行chef或远程执行
    ssh时显示输出user@host“chef solo--force formatter”

    好的,我认为答案是否定的。如果脚本工作,输出将保持隐藏状态。然而,一种(非常)黑客的方法可能是添加属性
    返回2
    忽略失败
    ,每次都会失败。失败时您将获得完整输出。然而,我只会使用这种技术进行调试。并向opscode提交一个功能请求。您是否尝试过使用bash资源的“flags”选项来传递“-x”?感谢这里的提示,我设法让vagrant在vagrant文件的chef部分使用
    chef.arguments='--force formatter'
    输出整个chef运行的输出!
    config.vm.provision :chef_solo do |chef|
      chef.log_level = :debug