Hi
I have a json file…and i want to read into a recipe yet a get and error.
Wow…the file exists…
So…how to load a json file into chef recipe?
if File.exists?("#{Chef::Config[:file_cache_path]}/zookeeper_hosts")
zookeeper_hosts =
File.read("#{Chef::Config[:file_cache_path]}/zookeeper_hosts")
end
template “/etc/zookeeper/conf/zoo.cfg” do
path "/etc/zookeeper/conf/zoo.cfg"
source "cloudera.zoo.cfg.erb"
owner "root"
group "root"
mode "0644"
variables :zookeeper => zookeeper_hosts
notifies :restart, resources(:service => “zookeeper-server”)
end
here is hte contents iof hte template
<% @zookeeper.each_pair do |name, ipaddress| %>
<%= “#{name}=#{ipaddress}:2888:3888” %>
<% end %>
Chef::Mixin::Template::TemplateError
undefined method `each_pair’ for nil:NilClass
Resource Declaration:
In /var/chef/cache/cookbooks/zookeeper/recipes/cloudera.rb
116: template “/etc/zookeeper/conf/zoo.cfg” do
117: path "/etc/zookeeper/conf/zoo.cfg"
118: source "cloudera.zoo.cfg.erb"
119: owner "root"
120: group "root"
121: mode "0644"
122: variables :zookeeper => zookeeper_hosts
123: notifies :restart, resources(:service => “zookeeper-server”)
124: end
125:
Compiled Resource:
Declared in
/var/chef/cache/cookbooks/zookeeper/recipes/cloudera.rb:116:in `from_file’
template("/etc/zookeeper/conf/zoo.cfg") do
provider Chef::Provider::Template
action "create"
retries 0
retry_delay 2
guard_interpreter :default
path "/etc/zookeeper/conf/zoo.cfg"
backup 5
atomic_update true
source "cloudera.zoo.cfg.erb"
variables {:zookeeper=>nil}
cookbook_name "zookeeper"
recipe_name "cloudera"
owner "root"
group "root"
mode "0644"
end
Template Context:
on line #29
27: # the port at which the clients will connect
28: clientPort=2181
29: <% @zookeeper.each_pair do |name, ipaddress| %>
30: <%= “#{name}=#{ipaddress}:2888:3888” %>
31: <% end %>
[2014-07-25T07:56:32+00:00] INFO: Running queued delayed notifications
before re-raising exception
Running handlers:
[2014-07-25T07:56:32+00:00] ERROR: Running exception handlers
[2014-07-25T07:56:32+00:00] ERROR: Creating JSON exception report
- Chef::Handler::JsonFile
Running handlers complete
[2014-07-25T07:56:32+00:00] ERROR: Exception handlers complete
[2014-07-25T07:56:32+00:00] FATAL: Stacktrace dumped to
/var/chef/cache/chef-stacktrace.out
Chef Client failed. 5 resources updated in 24.033224336 seconds
[2014-07-25T07:56:32+00:00] INFO: Sending resource update report (run-id:
d9201bdc-8c6e-4c21-9911-2c8a141c3d0c)
[2014-07-25T07:56:32+00:00] ERROR:
Chef::Mixin::Template::TemplateError (undefined method `each_pair’ for
nil:NilClass) on line #29:
27: # the port at which the clients will connect
28: clientPort=2181
29: <% @zookeeper.each_pair do |name, ipaddress| %>
30: <%= “#{name}=#{ipaddress}:2888:3888” %>
31: <% end %>
(erubis):29:in `block in evaluate’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/erubis-2.7.0/lib/erubis/evaluator.rb:74:in
`instance_eval’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/erubis-2.7.0/lib/erubis/evaluator.rb:74:in
`evaluate’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/mixin/template.rb:126:in
`_render_template’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/mixin/template.rb:112:in
`render_template’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/provider/template/content.rb:43:in
`file_for_provider’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/file_content_management/content_base.rb:40:in
`tempfile’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/provider/file.rb:411:in
`tempfile’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/provider/file.rb:350:in
`do_contents_changes’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/provider/file.rb:121:in
`action_create’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/provider.rb:120:in
`run_action’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource.rb:637:in
`run_action’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/runner.rb:49:in
`run_action’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/runner.rb:81:in
`block (2 levels) in converge’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/runner.rb:81:in
`each’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/runner.rb:81:in
`block in converge’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource_collection.rb:98:in
`block in execute_each_resource’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource_collection/stepable_iterator.rb:116:in
`call’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource_collection/stepable_iterator.rb:116:in
`call_iterator_block’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource_collection/stepable_iterator.rb:85:in
`step’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource_collection/stepable_iterator.rb:104:in
`iterate’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource_collection/stepable_iterator.rb:55:in
`each_with_index’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/resource_collection.rb:96:in
`execute_each_resource’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/runner.rb:80:in
`converge’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:345:in
`converge’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:431:in
`do_run’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:213:in
`block in run’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:207:in
`fork’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:207:in
`run’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application.rb:217:in
`run_chef_client’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application/client.rb:328:in
`block in run_application’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application/client.rb:317:in
`loop’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application/client.rb:317:in
`run_application’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application.rb:67:in
`run’
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/bin/chef-client:26:in
<top (required)>' /usr/bin/chef-client:23:in
load’
/usr/bin/chef-client:23:in `’