如何在厨师食谱中记录错误消息

How to log error messages in chef recipe

如何在食谱中记录错误消息。

对于 EX:我的食谱是

#
# Cookbook:: mkdir
# Recipe:: default
#
# Copyright:: 2018, The Authors, All Rights Reserved.

bash 'extract_module' do
code <<-EOH
mkdir -p /tmp/#{node['main']['directory']}
EOH
Chef::Log.info "Directory Created"
#puts "Directory created"

end

实际创建的日志文件在哪里??? --> Chef::Log.info "Directory Created"

如果

我如何控制我的食谱停止
mkdir -p /tmp/#{node['main']['directory']}

居然失败了??

谢谢

该资源将无法收敛 bash 具有非零退出代码,因此简单的方法是将 set -e 添加到您的脚本中。或者改用目录资源。

我相信这取决于您的操作系统。

对于 windows 机器,您的日志很可能位于目录 C:\chef\log

对于 linux 机器,它应该默认为 /etc/chef/log

您应该找到名称类似于 client-run_20181024124200.log 的日志文件。 此日志文件将包含您的 Chef::Log.info "Directory Created"

我想指出的是,您实际上可以指定要将日志写入的位置。为此,首先在 windows 机器上导航并打开文件 C:\chef\client.rb 或在 linux 机器上打开 /etc/chef/client.rb

您现在可以将行 log_location STDOUT 更改为您自己的目录,如
log_location C:\logs\cheflogs

这是在尝试找出 Chef Workstation 存储日志文件的位置时搜索发现的问题(未能收敛时的错误是无用的 Please examine the log file for a detailed cause of failure 但没有任何指示该文件应该在哪里.

Google 确定答案是 /var/log/opscode,但事实并非如此。

最终,我在 https://docs.chef.io/workstation/config/#location 找到了答案。这显示了如何配置,更重要的是,默认值为 "$USERHOME/.chef-workstation/logs/default.log"