Chef: nested data bag data to template file returns "can't convert String into Integer"
        Posted  
        
            by 
                Dalho Park
            
        on Server Fault
        
        See other posts from Server Fault
        
            or by Dalho Park
        
        
        
        Published on 2013-06-24T20:16:32Z
        Indexed on 
            2013/06/24
            22:23 UTC
        
        
        Read the original article
        Hit count: 648
        
I'm creating simple test recipe with a template and data bag. What I'm trying to do is creating a config file from data bag that has simple nested information, but I receive error "can't convert String into Integer"
Here are my setting file
1) recipe/default.rb
data1 = data_bag_item( 'mytest', 'qa' )['test']
data2 = data_bag_item( 'mytest', 'qa' )
template "/opt/env/test.cfg" do
  source "test.erb"
  action :create_if_missing
  mode 0664
  owner "root"
  group "root"
  variables({
     :pepe1 => data1['part.name'],
     :pepe2 => data2['transport.tcp.ip2']
  })
end
2)my data bag named "mytest"
$knife data bag show mytest qa
id:                qa
test:
  part.name:          L12
  transport.tcp.ip:   111.111.111.111
  transport.tcp.port: 9199
transport.tcp.ip2: 222.222.222.222
3)template file test.erb
part.name=<%= @pepe1 %>
transport.tcp.binding=<%= @pepe2 %>
Error reurns when I run chef-client on my server,
[2013-06-24T19:50:38+00:00] DEBUG: filtered backtrace of compile error: /var/chef/cache/cookbooks/config_test/recipes/default.rb:19:in []',/var/chef/cache/cookbooks/config_test/recipes/default.rb:19:inblock in from_file',/var/chef/cache/cookbooks/config_test/recipes/default.rb:12:in from_file'
[2013-06-24T19:50:38+00:00] DEBUG: filtered backtrace of compile error: /var/chef/cache/cookbooks/config_test/recipes/default.rb:19:in[]',/var/chef/cache/cookbooks/config_test/recipes/default.rb:19:in block in from_file',/var/chef/cache/cookbooks/config_test/recipes/default.rb:12:infrom_file'
[2013-06-24T19:50:38+00:00] DEBUG: backtrace entry for compile error: '/var/chef/cache/cookbooks/config_test/recipes/default.rb:19:in `[]''
[2013-06-24T19:50:38+00:00] DEBUG: Line number of compile error: '19'
Recipe Compile Error in /var/chef/cache/cookbooks/config_test/recipes/default.rb
TypeError
can't convert String into Integer
Cookbook Trace:
/var/chef/cache/cookbooks/config_test/recipes/default.rb:19:in []'
  /var/chef/cache/cookbooks/config_test/recipes/default.rb:19:inblock in from_file'
  /var/chef/cache/cookbooks/config_test/recipes/default.rb:12:in `from_file'
Relevant File Content:
/var/chef/cache/cookbooks/config_test/recipes/default.rb:
12:  template "/opt/env/test.cfg" do
 13:    source "test.erb"
 14:    action :create_if_missing
 15:    mode 0664
 16:    owner "root"
 17:    group "root"
 18:    variables({
 19>>      :pepe1 => data1['part.name'],
 20:       :pepe2 => data2['transport.tcp.ip2']
 21:    })
 22:  end
 23:
I tried many things and if I comment out "pepe1 => data1['part.name'],", then :pepe2 => data2['transport.tcp.ip2'] works fine. only nested data "part.name" cannot be set to @pepe1.
Does anyone knows why I receive the errors?
thanks,
© Server Fault or respective owner