我的食谱my_service
包含自定义资源write_config
。
此资源是从另一本食谱node_a
调用的。
my_service/resources/write_config.rb
:
property :template_source, String, name_property: true
property :calling_cookbook, String, required: true
action :create do
template "/tmp/test.txt" do
source template_source
cookbook calling_cookbook
owner 'root'
mode '0644'
action :create
end
end
节点食谱食谱node_a/default.rb
:
my_service_write_config 'config.erb' do
calling_cookbook 'node_a'
end
这很好,但我想摆脱calling_cookbook
属性。
有没有办法自动获取calling_cookbook
名称?
(谢谢你coderanger!)
基本资源template
似乎是在调用(node_a
)食谱(?)的上下文中进行评估。
my_service/resources/write_config.rb
:
property :template_source, String, name_property: true
action :create do
template "/tmp/test.txt" do
source template_source
owner 'root'
mode '0644'
action :create
end
end
在节点食谱中使用它食谱node_a/default.rb
成为一个单行:
...
include_recipe 'my_service'
my_service_write_config 'config.erb'
...
纯!
答案 0 :(得分:2)
自动跟踪new_resource.cookbook_name
。您可能需要to_s
它,因为它有时会以符号形式结束,但在其他情况下应该是您需要的符号。
同样专门针对模板,如果您只删除cookbook
行,则这已经是默认行为。