1

クックブック github.com opscode-cookbooks/openldap を使用しています。「openldap::server」レシピを含むラッパークックブック「lab_openldap」を作成しました。

server.rb レシピは、次の句を使用して、クックブック ファイル/ssl/*.pem からサーバーのノード ['openldap']['ssl_cert'] に PEM ファイルをアップロードします。

if node['openldap']['tls_enabled'] && node['openldap']['manage_ssl']
  cookbook_file node['openldap']['ssl_cert'] do
    source "ssl/#{node['openldap']['server']}.pem"
    mode 00644
    owner "root"
    group "root"
  end
end

PEM は、「openldap」クックブック ファイル/ssl/#{node['openldap']['server']}.pem」の場所から読み取ろうとします。

ラッパー「lab_openldap」クックブック file/ssl/#{node['openldap']['server']}.pem」に PEM ファイルがあります。

「lab_openldap::server.rb」レシピを変更して、ラッパー クックブックから PEM をロードすることは可能ですか?

注: https://github.com/bryanwb/chef-rewindを認識していますが、この状況を管理していないようです。

アップデート

を使用して提供された答えr.resourceは正しいです。

実際、特定のコードの問題は、 http://docs.opscode.com/resource_cookbook_file.htmlによると、chef-repo にあるクックブックの /files ディレクトリ内のファイルの場所を参照する「source」キーワードにあります。 .

r = resources("cookbook_file[#{node['openldap']['ssl_cert']}]")
r.cookbook('lab_openldap')

cookbook_file node['openldap']['ssl_cert'] do
    source "ssl/#{node['openldap']['server']}.pem"
    mode 00644
    owner "root"
    group "root"
end
4

2 に答える 2

2

これをシェフで直接行うことができます:

include_recipe "openldap::server" 

edit_resource(:cookbook_file, node['openldap']['ssl_cert']) do
  cookbook cookbook_name
end

このような状況を回避するために、openldap などのライブラリ クックブックは、レシピとしてではなく、カスタム リソースとして作成する必要があることに注意してください。次に、この回答のパターンを使用して、テンプレートを上書きできるようにプロパティをエクスポートする必要があります。

https://stackoverflow.com/a/63570830/506908

于 2020-08-25T03:09:23.120 に答える
1

もちろん!cookbookリソースをラップするときに、リソースに属性を設定するだけです。デフォルトでは「現在のクックブック」ですが、変更できます。

r = resources("cookbook_file[#{node['openldap']['ssl_cert']}]")
r.cookbook('my_wrapper_cookbook')

Bryan's Chef Rewind を見ると、同じことをしていることがわかります。

于 2014-01-10T14:54:53.253 に答える