我的问题类似于: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
?
答案 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