This is a great use case for a definition[0]. A definition, quite
simply, is a "recipe macro." It looks like a resource when used in a
recipe, but it contains other resources that you want to repeat with
slightly different parameters. Here's a totally made up example.
define :host_porter, :port => 4000, :hostname => nil do
params[:hostname] ||= params[:name]
directory "/etc/#{params[:hostname]}" do
recursive true
end
file "/etc/#{params[:hostname]}/#{params[:port]}" do
content "some content"
end
end
# in a recipe you write something like this:
host_porter node['hostname'] do
port 4000
end
host_porter "www1" do
port 4001
end
There are more definition examples in our apache2 and chef-splunk cookbooks[1].
Cheers,
Joshua
[0]: http://docs.opscode.com/chef/essentials_cookbook_definitions.html
[1]: http://ckbk.it/apache2 http://ckbk.it/chef-splunk
On Tue, Feb 4, 2014 at 11:19 AM, Ameya Ameya Savale
< "> > wrote:
> Hi Guys,
>
> I had a question, which I couldn't seem to find an answer for in earlier posts.
> I might have been searching the wrong keywords, but here it is. Is it possible
> to run the chef-client command and pass in custom attributes inline. I need to
> write a recipe which takes in a name and a port number and creates certain
> directories and files and setups up configuration on the host using the name
> and the port number.
>
> I recently started using chef so everything is quite new to me. I read in
> multiple places that you can do it using a json file. If I understood it
> correctly then it seems I would need to create a separate json file for every
> different name and post number that I want to pass in or update the same json
> file before running the recipe with the new name and port, this seems very
> tedious.
>
> What would be the correct way of approaching this problem?
>
> - Thanks
> Ameya
--
Joshua Timberman, Chef.
Archive powered by MHonArc 2.6.16.