运行Chef Client时遭遇abc cookbook缺失错误求助
Chef Client运行报错:缺失abc Cookbook的排查与解决
执行命令及错误输出
[root@ip-172-31-12-214 cookbook]# chef-client -z --runlist "recipe[abc::recipe1]" [2023-11-23T06:08:13+00:00] WARN: 未找到配置文件或未在命令行指定,将使用命令行选项替代。 [2023-11-23T06:08:13+00:00] WARN: 当前及上级目录未找到cookbooks目录,假定为/home/ec2-user/cookbook。 启动Chef Infra Client,版本15.0.300 解析运行列表中的cookbook: ["abc::recipe1"] ================================================================================ 解析运行列表中Cookbook时出错: ================================================================================ 缺失的Cookbook: ------------------ 不存在名为abc的cookbook 展开后的运行列表: ------------------ * abc::recipe1 系统信息: ------------ chef_version=15.0.300 platform=amazon platform_version=2023 ruby=ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux] program_name=/usr/bin/chef-client executable=/opt/chef-workstation/bin/chef-client 运行处理程序: [2023-11-23T06:08:15+00:00] ERROR: 运行异常处理程序 处理程序运行完成 [2023-11-23T06:08:15+00:00] ERROR: 异常处理程序运行完成 Chef Infra Client执行失败。0个资源在01秒内更新 [2023-11-23T06:08:15+00:00] FATAL: 堆栈跟踪已转储至/root/.chef/local-mode-cache/cache/chef-stacktrace.out [2023-11-23T06:08:15+00:00] FATAL: 提交bug报告请提供stacktrace.out文件内容 [2023-11-23T06:08:15+00:00] FATAL: Net::HTTPServerException: 412 "Precondition Failed"
错误原因
- Chef Client在本地模式(
-z参数)下,无法在默认推断的cookbook目录(/home/ec2-user/cookbook)中找到名为abc的cookbook - 本地模式下Chef优先从当前/上级目录的
cookbooks文件夹加载资源,当前目录结构不符合预期,或cookbook路径未正确指定
解决方法
方案1:指定正确的Cookbook路径
如果abc cookbook已存在于服务器的某个路径,执行命令时通过--cookbook-path参数明确指定目录:
chef-client -z --cookbook-path /实际的cookbooks目录路径 --runlist "recipe[abc::recipe1]"
或确保当前工作目录下存在cookbooks文件夹,且abc cookbook放置在该文件夹内,再重新执行原命令。
方案2:创建缺失的abc Cookbook
如果abc cookbook尚未创建,使用Chef Workstation的生成命令创建:
chef generate cookbook abc
在生成的abc/recipes/recipe1.rb文件中添加所需的配置逻辑,之后重新执行原chef-client命令。
额外检查项
- 确认cookbook名称拼写正确,Chef对名称大小写敏感
- 若存在本地缓存问题,可清理缓存目录后重试:
rm -rf /root/.chef/local-mode-cache/
内容的提问来源于stack exchange,提问作者Sadeque Khan
相关产品推荐
相关产品推荐

