- From: David Montgomery <
>
- To:
- Subject: [chef] how to load a json object in a ruby block and pass to a template
- Date: Sat, 30 Mar 2013 05:20:51 +0800
Hi
In a ruby block I am trying to load a json object and passing the hash to a template. The json file exists. How to I load a json object do I cna pass to a
node[:neoservers] should look lie this [xxx.xxx.xxx.xxx,yyy.yyy.yyy.yyy]
ruby_block "stuff" do
block do
contents = File.read('/tmp/cluster_ipaddress')
existing_nodes = JSON.parse(contents)
require 'set'
neoservers = [node[:ipaddress]] + existing_nodes
neoservers = neoservers.to_set.to_a.sort
node.default["neoservers"]=neoservers
end
action :run
end
template "/home/ubuntu/neo4j/conf/neo4j.properties" do
path "/home/ubuntu/neo4j/conf/neo4j.properties"
source "neo4j.properties.erb"
owner "root"
group "root"
mode "0644"
variables({
:server_id => server_id, :neoservers => node[:neoservers]
})
#notifies :restart, "service[neo4j]"
#action :nothing
end
================================================================================
Error executing action `create` on resource 'template[/home/ubuntu/neo4j/conf/neo4j.properties]'
================================================================================
Chef::Mixin::Template::TemplateError
------------------------------------
undefined method `join' for nil:NilClass
Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/neo4j/recipes/default.rb
110: template "/home/ubuntu/neo4j/conf/neo4j.properties" do
111: path "/home/ubuntu/neo4j/conf/neo4j.properties"
112: source "neo4j.properties.erb"
113: owner "root"
114: group "root"
115: mode "0644"
116: variables({
117: :server_id => server_id, :neoservers => node[:neoservers]
118: })
119: #notifies :restart, "service[neo4j]"
120: #action :nothing
121: end
122:
Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/neo4j/recipes/default.rb:110:in `from_file'
template("/home/ubuntu/neo4j/conf/neo4j.properties") do
provider Chef::Provider::Template
action "create"
retries 0
retry_delay 2
path "/home/ubuntu/neo4j/conf/neo4j.properties"
backup 5
source "neo4j.properties.erb"
variables {:server_id=>"20130328214635", :neoservers=>nil}
cookbook_name "neo4j"
recipe_name "default"
owner "root"
group "root"
mode "0644"
end
- [chef] how to load a json object in a ruby block and pass to a template, David Montgomery, 03/29/2013
Archive powered by MHonArc 2.6.16.