Skip to content

Instantly share code, notes, and snippets.

@senilegenius
Created October 12, 2012 16:11
Show Gist options
  • Save senilegenius/3880010 to your computer and use it in GitHub Desktop.
Save senilegenius/3880010 to your computer and use it in GitHub Desktop.
template_variable_problems
In the recipe I have:
template "/etc/zookeeper/zoo.cfg" do
source "zoo.cfg.erb"
mode 0644
variables(:servers => zk_servers)
Chef::Log.debug "6 zk_servers == #{zk_servers}"
end
In the zoo.cfg.erb template I have:
<% if @servers.size > 1 -%>
<% @servers.each_with_index do |server, i| %>
server.<%= i %>=<%= server[:ipaddress] %>:<%= server[:zookeeper][:peer_port] %>:<%= server[:zookeeper][:leader_port] %>
<% end -%>
<% else -%>
<% server = @servers.first -%>
server=<%= server[:ipaddress] %>:<%= server[:zookeeper][:peer_port] %>:<%= server[:zookeeper][:leader_port] %>
<% end -%>
relevant chef-client log output:
[2012-10-12T10:42:16-05:00] DEBUG: 6 zk_servers == [node[zookeeper1.electronicminions.com], node[zookeeper2.electronicminions.com]]
Chef::Mixin::Template::TemplateError (undefined method `size' for nil:NilClass) on line #28:
26:
27:
28: <% if @servers.size > 1 -%>
29: <% @servers.each_with_index do |server, i| %>
30: server.<%= i %>=<%= server[:ipaddress] %>:<%= server[:zookeeper][:peer_port] %>:<%= server[:zookeeper][:leader_port] %>
So why is @servers nil?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment