如何从厨师食谱中引用 knife solo 站点食谱文件

How to reference knife solo site-cookbook files from a chef cookbook

我正在写一个 chef cookbook 食谱,旨在将文件放到节点服务器上。

  cookbook_file "/path/to/node/dir/file_name" do
    source "file_name"
    owner "ec2-user"
    group "ec2-user"
  end

我打算允许这本食谱的用户将源文件放在 his/her knife solo 存储库的 "site-cookbooks" 目录中。

问题是此配置在 knife solo cook 部署时抛出 Chef::Exceptions::FileNotFound: Cookbook 'my-cookbook' (0.1.0) does not contain a file at any of these locations: ...

我尝试在 knife solo 存储库的 .chef/knife.rb 文件中指定不同的 cookbook_path 选项,但没有成功。

实现这一目标的正确方法是什么?或者厨师不是这样工作的,如果是这样,首选的替代方法是什么?这是我应该将食谱和 knife solo 存储库合并为一个 knife solo 存储库的标志吗?

cookbookssite-cookbooks(以及 cookbooks_path 的所有其他变体)只是关于从何处加载食谱。 source 资源属性只在食谱中查找内容,而不是直接在其中一个路径中查找。您的资源声明中没有明确的食谱,因此它将在食谱中查找代码所在的食谱。因为它是 cookbook_file,所以它必须在 files/ 食谱中的子文件夹。

没有办法告诉 Chef 或 knife-solo 发送和使用随机的松散文件,就像我认为你建议的那样,它全部基于食谱和其他 Chef 数据类型。您可以使用 remote_file 资源并允许从用户指定的 HTTPS 服务器中提取配方。