You need to enable JavaScript to run this app. chef-client执行cookbook_file资源时未生成目标文件反而创建同名文件夹的问题
优惠活动
大模型
产品
解决方案
定价
更多

chef-client执行cookbook_file资源时未生成目标文件反而创建同名文件夹的问题

问题成因

核心故障点:Recipe存放位置完全不符合Chef cookbook规范

  • Chef 只会加载cookbook根目录下recipes/文件夹内的.rb文件作为可执行的runlist recipe。放在files/目录下的所有文件都属于静态资源(仅供cookbook_file、template等资源引用的源内容),不会被识别为可执行代码,也不会在chef-client运行时被加载。
  • 你还出现了路径拼写错误:将recipes错写为resipes,即便放在根目录下,这个拼写错误的目录也不会被Chef识别为合法的recipe目录。
  • 最终chef-client运行时执行的是cookbook根目录下原有recipes/filebeat.rb的旧内容(大概率是之前测试时误写的directory资源,正好指向/etc/filebeat/filebeat.yml路径),因此才会创建出名为filebeat.yml的目录,而非预期的配置文件。

其他需修正的附带问题

  • 配置文件权限设置不合理:0755是可执行文件的权限位,.yml配置文件一般应设置为0644,避免不必要的可执行权限带来的安全风险。
  • ignore_failure true会屏蔽资源执行时的所有错误,不利于排查问题,若非特殊场景建议移除。
修正步骤
  1. 将你编写的cookbook_file资源代码移动到cookbook根目录下的recipes/filebeat.rb文件中,覆盖原有旧内容。
  2. 修正代码中的mode参数为0644,按需移除ignore_failure true。
  3. 重新上传cookbook到Chef Server/本地缓存后,再次执行chef-client即可正常生成文件。

内容的提问来源于stack exchange,提问作者Boris Becker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 03:15:04