如何在Amazon OpsWorks上设置Chef的日志输出级别?

时间:2013-09-03 18:16:28

标签: chef aws-opsworks

我的问题类似于:How can I display the output of a Opscode Chef bash command in my console?

我希望能够看到我正在运行的食谱的控制台输出。特别是,我的配方无法启动JBoss,因为没有设置JAVA_HOME。我花了整整一天的时间才弄清楚这一点,因为声明JAVA_HOME is undefined没有打印到Chef输出。在运行Chef solo时,可以通过在命令中附加-l debug来打开调试输出,如:chef-solo -c solo.rb -j node.json -l debug

但是,在使用Amazon OpsWorks时,没有这样的选择:

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

如何将日志级别添加到run_command

2 个答案:

答案 0 :(得分:8)

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

每个Chef运行生成一个日志,该日志提供运行的详细描述,是一个有价值的故障排除资源。要指定日志中的详细信息量,请将Chef :: Log.level语句添加到指定所需日志级别的自定义配方中。默认值为:info。以下示例显示如何将Chef日志级别设置为:debug,它提供了最详细的运行描述。

Chef::Log.level = :debug

在您的食谱中,添加以下

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

您还可以使用堆栈设置中的custom_json属性来控制日志。

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

上面打开了chef和opsworks的debug,但是还没有显示你可能使用bash或其他脚本运行的命令的输出。

答案 1 :(得分:3)

尝试跑步:

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