[chef] Re: RE: how to load a json file into chef recipe


Chronological Thread 
  • From: David Montgomery < >
  • To:
  • Subject: [chef] Re: RE: how to load a json file into chef recipe
  • Date: Sat, 26 Jul 2014 15:02:31 +0800

I have python  script that created the json object and saves.  I then later, trying to load the json into a hash in a recipe so it can be used in a template.

Thanks


On Fri, Jul 25, 2014 at 8:58 PM, Justin Franks < " target="_blank"> > wrote:

Here is an example David. Not sure if this fits your use case well enough though.


cookbook_file "/etc/consul.d/common.json" do # This is the file that will be created
  source "sjc-common.json" # This is the file name in chef cookbook /files/default/ that will be used
  owner "consul"
  group "consul"
  mode "0644"
  action :create_if_missing
end




*************************
Justin Franks
Lead Operations Engineer
SaaS, Cloud, Data Centers & Infrastructure
Lithium Technologies, Inc
225 Bush St., 15th Floor
San Francisco, CA 94104
tel: +1 415 757 3100 x3219


From: David Montgomery < " target="_blank"> >
Sent: Friday, July 25, 2014 1:03 AM
To: " target="_blank">
Subject: [chef] how to load a json file into chef recipe
 
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 `<main>'





Archive powered by MHonArc 2.6.16.

§