3

您如何创建允许用户指定将被复制的 cookbook_file 的位置的通用说明书?我想这个文件是一个可覆盖的属性。

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

4

1 回答 1

3

files如果您希望通过cookbook_file资源访问文件,则该文件应位于说明书的子目录中。如果要从其他地方获取文件,则需要使用remote_file. (不要node[:nginx][:ssl_file_location]在你的食谱中设置。)

cookbook_file filename do
  [...]
  only_if { node[:nginx][:ssl_file_location].nil? }
end

remote_file ::File.join( node[:nginx][:ssl_file_location].to_s, filename ) do
  [...]
  not_if { node[:nginx][:ssl_file_location].nil? }
end

当需要设置 ssl_file_location 时,他可以创建一个 attributes.json 文件:

{ "nginx": { "ssl_file_location" : "[my location]" } }

并运行厨师客户端:

chef-client --json-attributes attributes.json

编辑:

如果 ssh_files 实际上在其他一些说明书中,那么您可以使用说明书文件,但您必须提供如下说明书属性:

cookbook_file filename do
  [...]
  cookbook 'cookbook_name_where_to_look'
end
于 2012-12-28T12:28:03.470 回答