1

I also use puppet for my nodes. I am also running a (BIND) dns server.

Would it be possible to use the $aliases variable I have for each node in a template for the DNS module?

My nodes look like this:

$ cat nodes/kayak.local.pp
node 'kayak.local' {
  include base
  $node_aliases = ['svn','puppet']
  $node_primaryip = '10.0.64.200'

  network::interface { 'eth0':
    ip      => $node_primaryip,
    gw      => '10.0.64.1',
    mac     => '00:50:00:00:00:3f',
    netmask => '255.255.255.0',
  }

}

What I am looking for is being able to make a template like this:

$cat local.erb

<% scope.lookupvar('ALLNODES::aliases').each do |alias| -%>
<%= alias %> IN A <%= node_primaryip %>
<% end -%> 

who can help me?

1 Answer 1

2

You could use exported resources for that.

  • create a defined type that manages a line in your dns file
  • on each host, create a resource that uses that defined type. Use @@ before the type to make it exported.
  • Collect those resources on your DNS server with the spaceship operator.

Sidenote: use Hiera for all that data in your manifest.

2
  • Thanks. Had to do some searching there. I think I understand what I need to do. Haven't read about hiera though. Would that make solving my 'problem' easier?
    – Karel
    Apr 10, 2013 at 5:29
  • 1
    Hiera is pretty awesome in seperating data from your code... - docs.puppetlabs.com/hiera/1/puppet.html Apr 10, 2013 at 11:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .