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
************************* 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 <
>
Sent: Friday, July 25, 2014 1:03 AM To: 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 <% @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.