3

My question is similar to: How can I display the output of a Opscode Chef bash command in my console?

I want to be able to see console output for my running recipe. In particular, my recipe failed to start JBoss because JAVA_HOME was not being set. It took me an entire day to figure this out because the statement JAVA_HOME is undefined was not being printed to the Chef output. When running chef solo, debugging output can be turned on by appending -l debug to the command, as in: chef-solo -c solo.rb -j node.json -l debug

However, when using Amazon OpsWorks, there is no such option:

sudo opsworks-agent-cli run_command [activity] [date] [/path/to/valid/json.file]

How can I add a log level to run_command?

Community
  • 1
  • 1
Naijaba
  • 1,019
  • 1
  • 13
  • 24
  • Did you find a solution to this problem? It's okay to answer your own question. Please don't forget to mark an answer as correct! :) – sethvargo Jan 03 '14 at 16:28

2 Answers2

9

source: http://docs.aws.amazon.com/opsworks/latest/userguide/troubleshoot.html

Each Chef run produces a log, which provides a detailed description of the run and is a valuable troubleshooting resource. To specify the amount of detail in the log, add a Chef::Log.level statement to a custom recipe that specifies the desired log level. The default value is :info. The following example shows how to set the Chef log level to :debug, which provides the most detailed description of the run.

Chef::Log.level = :debug

In your recipe, add the following

require 'chef/log'
Chef::Log.level = :debug
...

You can also control the log using the custom_json property in stack setting.

{"opsworks":{"chef_log_level":"debug"}}

The above turns on debug for chef and opsworks, but does not yet show the output of the commands you might run using bash or other script.

dminer
  • 1,121
  • 11
  • 9
3

Try running:

cd /opt/aws/opsworks/current
bundle exec chef-solo -l debug -c conf/solo.rb -j /var/lib/aws/opsworks/chef/XXX.json
user1458424
  • 391
  • 4
  • 7