Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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 = ''

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


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?

share|improve this question
up vote 2 down vote accepted

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.

share|improve this answer
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? – Karlo Apr 10 '13 at 5:29
Hiera is pretty awesome in seperating data from your code... - – Ger Apeldoorn Apr 10 '13 at 11:46

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.