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会话有一个ttychef 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