I am new to chef environment. And working on a simple cookbook.
To simplify, I have following attributes in:
attributes/default.rb:
default[:user1] = ""
default[:user2] = ""
default[:filename] = ""
recipes/default.rb: At run time, I get a filename from another cookbook and I have to extract users from that file.
file = "#{node[:filename]}"
ruby_block 'extract userdata' do
block do
json = File.read(file)
obj = JSON.parse(json)
userdata = obj['users']
if userdata.empty?
raise "Errors: userdata not available"
else
node.override[:user1] = userdata['user1']
node.override[:user2] = userdata['user2']
end
end
puts "user1: #{node[:user1]}"
puts "user2: #{node[:user2]}"
action :run
end
logs (puts) from above block at runtime do fetch me usernames correctly.
Now, I am trying to use above two updated attributes as below in further down the cookbook recipe.
user1 = #{node[:user1]}
user2 = #{node[:user2]}
But these two values are coming out to be empty as if they are not set/overriden.
Please suggest how can I get updated data.