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: 533

Filed under:
|

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

Related posts about chef

Related posts about template