if you're using hiera, why not something like:

foo_data_webfarm_http_servers:
  foo1.example.com: {
    ip: '1.2.3.4',
    port: '80',
  }
  foo2.example.com: {
    ip: '2.3.4.5',
    port: '80',
  }
foo_data_webfarm_https_servers:
  foo1.example.com: {
    ip: '1.2.3.4',
    port: '443',
  }
  foo2.example.com: {
    ip: '2.3.4.5',
    port: '443',
  }

class foo::data {
  include foo::params
file { 'foo.conf':
  path       => '/etc/foo.conf',
  ensure  => 'file',
  content  => template(foo_conf.erb),
  mode     => '0555',
}

class foo::params {
  $webfarm_http_servers   = hiera('foo_data_webfarm_http_servers', '')
  $webfarm_https_servers = hiera('foo_data_webfarm_https_servers', '')
}


foo_conf.erb
<% http_servers = scope.lookupvar('foo::params::webfarm_http_servers')
       https_servers = scope.lookupvar('foo::params::webfarm_https_servers')
-%>
#
# http servers
<% http_servers.each_pair do |key, hash| -%>
#<%=key%>
IPADDR= <%=hash['ip'] %>
PORT=  <%=hash['port'] %>
<% end%>
#
# https servers
<% https_servers.each_pair do |key, hash| -%>
#<%=key%>
IPADDR= <%=hash['ip'] %>
PORT=  <%=hash['port'] %>
<% end%>

<% end%>



On Aug 9, 2012, at 3:38 PM, Tim Mooney <tim.moo...@ndsu.edu>
 wrote:

>
> Environment: puppet 2.7.14 on both master and all clients.  We're also
> using puppetlabs-stdlib and hiera, if that matters.
>
> I know this is really more of a ruby/erb question, but I've been searching
> for a couple hours and haven't turned up anything relatively close to what
> I'm trying to do, and I'm hoping someone here has had to do this and can
> provide a suggestion for how to proceed.
>
> I'm generating a configuration file from a template.  The configuration
> file will need to have IP addresses in it, but I would like to be able to
> use either hostnames or IP adresses in the puppet config.  This means
> that I need to be able to resolve the hostnames and turn them into IP
> addresses, probably in the template itself.
>
> Basically, given something like this in puppet:
>
> class foo::data {
>
>  $webfarm = {
>    http_servers => hiera('webfarm_http_servers', [
>      {
>        host => 'foo1.example.com',
>        port => '80',
>         },
>      {
>        host => 'foo2.example.com',
>        port => '80',
>         },
>      {
>        host => 'foo3.example.com',
>        port => '80',
>         },
>    ]),
>    https_servers => hiera('webfarm_https_servers', [
>      {
>        host => 'foo1.example.com',
>        port => '443',
>         },
>      {
>        host => 'foo22.example.com',
>        port => '443',
>         },
>      {
>        host => 'foo99.example.com',
>        port => '443',
>         },
>    ]),
>  }
> }
>
> I need my template to iterate over the http_servers and https_servers
> arrays and resolve the values for the host key for each element.
>
> Anyone have an example of how to do this in a template?
>
> Thanks,
>
> Tim
> --
> Tim Mooney                                             tim.moo...@ndsu.edu
> Enterprise Computing & Infrastructure                  701-231-1076 (Voice)
> Room 242-J6, IACC Building                             701-231-8541 (Fax)
> North Dakota State University, Fargo, ND 58105-5164
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to 
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/puppet-users?hl=en.
>


________________________________

This message may contain confidential or privileged information. If you are not 
the intended recipient, please advise us immediately and delete this message. 
See http://www.datapipe.com/legal/email_disclaimer/ for further information on 
confidentiality and the risks of non-secure electronic communication. If you 
cannot access these links, please notify us by reply message and we will send 
the contents to you.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to