I have a cookbook my_service with a custom resource write_config.
This resource is called from another cookbook 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 endNode cookbook recipe
node_a/default.rb:my_service_write_config 'config.erb' do calling_cookbook 'node_a' end
This works fine, but I would like to get rid of the calling_cookbook property.
Is there a way to automatically get the calling_cookbook name?
Solution
(Thank you coderanger!)
The basic resource template seems to get evaluated in the context of the calling (node_a) cookbook (?).
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 endUsing it within the node cookbook recipe
node_a/default.rbbecomes a one-liner:... include_recipe 'my_service' my_service_write_config 'config.erb' ...
Neat!