Chef infra 如何在Chef中使用外部cookbook_文件编写食谱?

Chef infra 如何在Chef中使用外部cookbook_文件编写食谱?,chef-infra,Chef Infra,如何创建一个通用的cookbook,允许用户指定要复制的cookbook\u文件的位置?我认为这个文件是一个可重写的属性 例如:创建一个nginx cookbook,用户可以在其中指定SSL文件的位置,以便将这些文件复制到服务器中的正确目录中。如果您希望通过cookbook\u file资源访问该文件,则该文件应位于该cookbook的子目录中。如果要从其他地方获取文件,需要使用remote\u file。(不要在您的食谱中设置节点[:nginx][:ssl\u文件\u位置]。) 当需要设置ss

如何创建一个通用的cookbook,允许用户指定要复制的cookbook\u文件的位置?我认为这个文件是一个可重写的属性


例如:创建一个nginx cookbook,用户可以在其中指定SSL文件的位置,以便将这些文件复制到服务器中的正确目录中。

如果您希望通过
cookbook\u file
资源访问该文件,则该文件应位于该cookbook的
子目录中。如果要从其他地方获取文件,需要使用
remote\u file
。(不要在您的食谱中设置
节点[:nginx][:ssl\u文件\u位置]
。)

当需要设置ssl_文件_位置时,可以创建attributes.json文件:

{ "nginx": { "ssl_file_location" : "[my location]" } }
并运行chef客户端:

chef-client --json-attributes attributes.json
编辑:

如果ssh_文件实际上位于其他一些cookbook中,则可以使用cookbook_文件,但必须提供如下cookbook属性:

cookbook_file filename do
  [...]
  cookbook 'cookbook_name_where_to_look'
end

远程文件-谢谢!听起来像是钥匙。通常情况下,这会在一个人的烹饪书收藏的某个任意文件夹(包含所有烹饪书并为每个角色调用它们的repo)中吗?我不确定我是否理解你的问题。[my location]可以通过任何URI访问,包括本地路径。因此,您可以将文件存储在任意文件夹中,但必须可以从运行chef-client的位置访问这些文件。太好了,谢谢Draco!是的,你理解我的问题我将尝试它,然后在它工作时接受它。那个厨师给我看。问题似乎是
remote_file
源文件
前面添加了默认位置。您将在链接中看到它在
files/ubuntu//tmp/chef solo/../server.crt
中查找
server.crt
remote_file
是否应仅用于通过http获取文件?如果没有用于复制烹饪书之外的文件的Chef资源,也许我应该使用
bash
资源来执行此操作?只有当uri不是绝对uri时,它才会预先设置默认位置。使用
file:///var/lib/postgresql/9.2/main/server.crt
cookbook_file filename do
  [...]
  cookbook 'cookbook_name_where_to_look'
end