【发布时间】:2020-08-25 11:09:23
【问题描述】:
我正在使用一本食谱 github.com opscode-cookbooks/openldap。 我写了一本包装食谱“lab_openldap”,其中包括“openldap::server”食谱。
server.rb 配方使用以下子句将 PEM 文件从 cookbooks files/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
【问题讨论】:
-
请不要忘记将答案标记为正确:)
标签: overloading chef-infra openldap chef-recipe cookbook