- From: Joshua Timberman <
>
- To: Chef users <
>
- Subject: [chef] Re: passing attributes during runtime
- Date: Wed, 5 Feb 2014 20:58:51 -0700
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.