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 recipeHiI 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?
here is hte contents iof hte template
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.