3

コピーされる cookbook_file の場所をユーザーが指定できる一般的なクックブックをどのように作成しますか? このファイルはオーバーライド可能な属性であると思います。

例:ユーザーがSSLファイルの場所を指定できるnginxクックブックを作成して、これらのファイルをサーバーの適切なディレクトリにコピーできるようにします。

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クライアントを実行します:

chef-client --json-attributes attributes.json

編集:

ssh_files が実際に他のクックブックにある場合は、cookbook_file を使用できますが、次のようにクックブック属性を指定する必要があります。

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