Skip to content

Instantly share code, notes, and snippets.

@mdkent
Created June 18, 2009 18:24
Show Gist options
  • Save mdkent/132084 to your computer and use it in GitHub Desktop.
Save mdkent/132084 to your computer and use it in GitHub Desktop.
### definition
#
# Cookbook Name:: example
# Definition:: example_config_geocoders
#
define :example_config_geocoders, :geocoders_list => nil, :app_config_dir => nil do
app_config_dir = params[:app_config_dir]
geocoders_list = params[:geocoders_list]
template app_config_dir + "/geocoders.yml" do
source "geocoders.yml.erb"
owner node[:example][:user]
group node[:example][:group]
mode "0644"
variables(
:geocoders_list => geocoders_list
)
end
end
### node ui config: json.example.geocoders_list
{"yahoo":"API_KEY"}
### attributes.rb
example[:geocoders_list] = { "yahoo" => "API_KEY" } unless example.has_key?(:geocoders_list)
example[:app_config_dir] = example[:app_shared_dir] + "/config" unless example.has_key?(:app_config_dir)
### recipe.rb
example_config_geocoders do
app_config_dir node[:example][:app_config_dir]
geocoders_list node[:example][:geocoders_list]
end
### client.log
[Thu, 18 Jun 2009 01:05:36 -0400] ERROR: template[/u/apps/www.example.com/shared/config/geocoders.yml] (/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/recipe.rb line 189) had an error:
Chef::Mixin::Template::TemplateError (undefined method `each_pair' for nil:NilClass) on line #1:
1: <% @geocoders_list.each_pair do |name, value| %>
2: <%= name %>: %<= value %>
3: <% end %>
(erubis):1:in `evaluate'
/usr/lib/ruby/gems/1.8/gems/erubis-2.6.4/lib/erubis/evaluator.rb:75:in `instance_eval'
/usr/lib/ruby/gems/1.8/gems/erubis-2.6.4/lib/erubis/evaluator.rb:75:in `evaluate'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/mixin/template.rb:31:in `render_template'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/provider/template.rb:101:in `action_create'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/runner.rb:87:in `send'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/runner.rb:87:in `converge'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/runner.rb:85:in `each'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/runner.rb:85:in `converge'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/resource_collection.rb:58:in `each'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/resource_collection.rb:57:in `each'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/runner.rb:63:in `converge'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/client.rb:373:in `converge'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/client.rb:81:in `run'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/application/client.rb:163:in `run_application'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/application/client.rb:161:in `loop'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/application/client.rb:161:in `run_application'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/lib/chef/application.rb:53:in `run'
/usr/lib/ruby/gems/1.8/gems/chef-0.7.0/bin/chef-client:26
/usr/bin/chef-client:19:in `load'
/usr/bin/chef-client:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment