FAQ
I am setting up a nagios hosts definition file using ec2 data with puppet
3.2.

The hiera JSON file generated looks like this:
  {
     "instances": {
         "prod-api-01": {
             "private_ip": "10.1.1.1",
             "public_ip": "23.1.1.1",
         },
         "prod-api-02": {
             "private_ip": "10.2.2.2",
             "public_ip": "23.2.2.2",
         },
         "prod-api-03": {
             "private_ip": "10.3.3.3",
             "public_ip": "23.3.3.3",
         }
     }
}


My manifest has the following declarations:

$instances = hiera_hash('instances')
$instance_names = keys($instances)


In my hosts.cfg.erb template, I attempted the following, but neither works
(entries for alias and address are blank).

<%- @instances.each_pair do |instance_name, attributes| -%>
define host {
     host_name <%= @instance_name %>
     use host-platform-prod-group
     alias <%= attributes['public_ip'] %>
     address <%= attributes['private_ip'] %>
}
<%- end -%>

AND

<%- @instance_names.each do | instance_name | -%>
define host {
     host_name <%= @instance_name %>
     alias <%= @instances[@instance_name]['public_ip'] %>
     address <%= @instances[@instance_name]['private_ip'] %>
}
<%- end -%>


I know I can access @instances and @instance_names within the template, but
the template does not appear to find values for the loop variable
@instance_name. Why is this?

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscribe@googlegroups.com.
To post to this group, send email to puppet-users@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

  • Henrik Lindberg at Aug 11, 2013 at 3:48 pm

    On 2013-09-08 17:13, Rafi wrote:

    <%- @instance_names.each do | instance_name | -%>
    define host {
    host_name <%= @instance_name %>
    alias <%= @instances[@instance_name]['public_ip'] %>
    address <%= @instances[@instance_name]['private_ip'] %>
    }
    <%- end -%>


    I know I can access @instances and @instance_names within the template,
    but the template does not appear to find values for the loop variable
    @instance_name. Why is this?
    Because it should be accessed without the @ since it is not a variable
    from Puppet.

    Try:

        alias <%= @instances[instance_name]['public_ip'] %>

    Regards
    - henrik


    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscribe@googlegroups.com.
    To post to this group, send email to puppet-users@googlegroups.com.
    Visit this group at http://groups.google.com/group/puppet-users.
    For more options, visit https://groups.google.com/groups/opt_out.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppuppet-users @
categoriespuppet
postedAug 9, '13 at 9:13p
activeAug 11, '13 at 3:48p
posts2
users2
websitepuppetlabs.com

2 users in discussion

Rafi: 1 post Henrik Lindberg: 1 post

People

Translate

site design / logo © 2022 Grokbase