2013-01-06 4 views
5

Если мы имеем в Chef код поваренной как:Vagrant - как напечатать вывод команды шеф-повара в stdout?

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» с терминала, мы можем видеть полный вывод команды. Как рассказать вагранту/шеф-повару, чтобы показать полный выход?

EDIT:

Я попытался это, но ничего не изменилось на выходе.

config.vm.provision :chef_solo do |chef| 
    chef.log_level = :debug 
+0

Хорошо, я думаю, ответ нет. Если скрипт работает, вывод остается скрытым. Однако один (крайне) хакерский способ сделать это может быть добавлением атрибутов 'возвращает 2' и' ignore_failure', которые будут терпеть неудачу каждый раз. Вы получаете полный выход при сбое. Однако я бы использовал эту технику для отладки. И отправьте запрос функции на opscode. – quandrum

+0

Вы пробовали использовать опцию «flags» для ресурса bash для передачи '-x'? – agross

ответ

2

Он печатает Баш/сценарий/выполнить выход выполнения ресурсов на стандартный вывод только тогда, когда:

  • Вам нужно TTY для команды удаленного шеф-соло/шеф-клиента.
  • не работает шеф-клиент в режиме демона
  • уровень журнала повар установлен в :debug

См code chef/Mixin/ShellOut, line 36.

При использовании vagrant up, кажется, не вариант, чтобы обеспечить TTY для SSH сессии, поэтому решение вид ходить после того, как вы установили :debug уровень протоколирования для шеф-повара:

  1. запустить $ vagrant up
  2. пробег $ vagrant ssh -- -t - это означает, что он передает -t команде ssh, так что есть tty для сеанса ssh.
  3. запустите chef-solo, чтобы вручную запустить шеф-повара, после чего вы получите выход на стандартный вывод.
3

Я ничего не знаю о бродяжнике, но я думаю, что это может касаться вашей проблемы ... С удовольствием удаляю этот ответ, если это не имеет значения!

--force-formatter

Указывает, что выход форматировщик будет использоваться вместо выхода регистратора.

Так что я нашел, если solo.rb имеет log_location определен добавлением опции --force-formatter отображает выход при работе повара через Rundeck или удаленно выполнение ssh [email protected] "chef-solo --force-formatter"

+2

Спасибо за подсказку здесь, мне удалось получить бродягу, чтобы вывести полный выход шеф-повара с шеф-поваром.arguments = '--force-formatter'' в разделе шеф-повара Vagrantfile! – jedifans