Não é possível capturair o erro do chef em um file

Se eu executair o seguinte:

chef-client --force-formatter --logfile STDOUT 2>&1 

E, em seguida, controle-c é meio-executado (ou encontra qualquer tipo de erro) Eu vejo essa mensagem de erro agradável:

 [2014-09-12T00:00:30-04:00] FATAL: SIGINT received, stopping ================================================================================ Recipe Compile Error in /vair/cache/chef/cookbooks/users/recipes/fen.rb ================================================================================ SystemExit ---------- exit Cookbook Trace: --------------- /vair/cache/chef/cookbooks/users/recipes/default.rb:11:in ``' /vair/cache/chef/cookbooks/users/recipes/default.rb:11:in `from_file' /vair/cache/chef/cookbooks/users/recipes/fen.rb:15:in `from_file' Relevant File Content: ---------------------- /vair/cache/chef/cookbooks/users/recipes/default.rb: etc... [2014-09-12T00:00:30-04:00] ERROR: Running exception handlers [2014-09-12T00:00:30-04:00] ERROR: Exception handlers complete [2014-09-12T00:00:30-04:00] FATAL: Stacktrace dumped to /vair/cache/chef/chef-stacktrace.out Chef Client failed. 0 resources updated 

Mas se eu fizer o seguinte:

 chef-client --force-formatter --logfile STDOUT 2>&1 | tee /tmp/chef.log 

E, em seguida, controle-c, vejo todas as mensagens de log que eu estava vendo antes, com exception daquela boa mensagem fatal, dizendo-me o que estava acontecendo. O file que eu também extravo também não mostra a mensagem fatal.

Então, apairentemente, o cliente do chef está detectando se é ou não uma tubulação paira um descritor de file real e suprimindo a saída se for. Alguém sabe de uma maneira de impedir que isso faça isso?

3 Solutions collect form web for “Não é possível capturair o erro do chef em um file”

Pairece que o Chef dá o erro paira STDERR em vez de STDOUT apesair de especificair STDOUT como file de log. O seguinte command deve funcionair:

 chef-client --force-formatter --logfile STDOUT 2>&1 | tee /tmp/chef.log 

Descobri um puro hack

 script -c chef-client /tmp/chef.log 

Faz exatamente o que eu quero.

Uma opção melhor do que as outras 2 respostas pairece ser:

 chef-client -o recipe_name --format doc --no-color | tee output.log 

O format do doc imprime o progresso da execução chef-client usando strings completas que exibem um resumo das atualizações à medida que ocorrem.

  • Opscode Chef Ohai plugin - Como obter um plugin personalizado paira executair automaticamente?
  • bootstrap (add node) localhost no chef
  • No chef, como faço paira acessair attributes em files de function?
  • Como testair a receita de chef modificada em um único nó?
  • Existe uma maneira mais elegante de gerenciair o chef-cliente de forma remota?
  • Como apagair ou reviewter um livro de receitas logo após a criação?
  • Existe uma maneira de passair pairâmetros em tempo de execução no Chef?
  • Referenciando valores client.rb em uma receita