我正在使用一本食谱 github.com opscode-cookbooks/openldap。我写了一个包装食谱“lab_openldap”,其中包括“openldap::server”配方。
server.rb 配方使用以下子句将 PEM 文件从说明书文件/ssl/*.pem 上传到服务器到位置节点 ['openldap']['ssl_cert']。
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
尝试从“openldap”说明书文件/ssl/#{node['openldap']['server']}.pem”位置读取 PEM。
我的 PEM 文件位于包装器“lab_openldap”说明书文件/ssl/#{node['openldap']['server']}.pem" 位置。
是否可以修改“lab_openldap::server.rb”配方以从包装食谱加载 PEM?
注意:我知道https://github.com/bryanwb/chef-rewind但它似乎无法处理这种情况。
更新
提供的答案使用r.resource
是正确的。
实际上,特定代码中的问题在于“source”关键字,根据http://docs.opscode.com/resource_cookbook_file.html指的是位于 chef-repo 的食谱中 /files 目录中文件的位置.
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