如果我们有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
答案 0 :(得分:3)
我对流浪者一无所知,但我认为这可能与你的问题有关......如果被证明无关紧要,很高兴删除这个答案!
表示将使用格式化程序输出而不是记录器输出。
所以我发现如果solo.rb
定义log_location
,则添加选项--force-formatter
会在通过rundeck运行chef或远程执行ssh user@host "chef-solo --force-formatter"
时显示输出
答案 1 :(得分:2)
仅在以下情况下将bash / script / execute资源执行输出打印到stdout:
:debug
请参阅code chef/Mixin/ShellOut
, line 36。
使用vagrant up
时,似乎没有为ssh会话提供TTY的选项,因此在为chef设置:debug
日志级别之后,解决方案有点走动:
$ vagrant up
$ vagrant ssh -- -t
- 这意味着它将-t
传递给ssh命令,以便ssh会话有一个tty。chef-solo
以手动运行chef,然后您将在stdout上获得输出。