如果菜谱中不存在,则删除厨师 cookbook_file

remove chef cookbook_file if not exist in cookbook

我在 cookbook 下的文件很少 (blah-cookbook/files/default/file01*.xml)

当我 运行 chef-client 时,它会填充到目标目录 (/etc/app/file01*.xml) - 到目前为止还不错。

cookbook_file "/tmp/file01.xml" do
  source "file01"
  owner "root"
  group "root"
  mode 00600
  action :create
end

假设我从 cookbook 文件中删除了几个文件,我如何让它反映在目标目录中?我希望在目标目录 (/etc/app/file) 和食谱文件 (blah-cookbook/files/default/file01.xml) 上有相同的文件。不多也不少

您必须明确删除它们(至少在一个厨师客户 运行 期间):

file "/etc/foo" do
  action :delete
end

remote_file 资源还提供了一个 :delete 操作,您可以根据需要使用。

您可能希望为此使用 remote_directory 资源,但更有可能您应该使用其他类型的文件 packaging/distribution 系统,因为 Chef 的内部工具非常少。共享 git 存储库(具有 git 资源)或 deb/RPM 包(具有 package 资源)都是流行的选择。