1

Could someone please help me understand how I could loop through the following nodes definition in my templates file?

ip::addr{ "as2s67v": ip0 => "192.168.30.0", pre0 => "/24", ip1 => "172.45.35.0", pre1 => "/16", ip2 => "145.88.88.0", pre2 => "/24", } 

I'd like to print out the above using my template file, however I can't be certain of how many entries will exist, I want to end up with a file like so:

server: as2s67v ipaddress0 = "192.168.30.0" prefix0 = "24" ipaddress1 = "172.45.35.0" prefix1 = "16" ipaddress2 = "145.88.88.0" prefix2 = "24" 

How could I go about achieving this?

thanks Dan

1 Answer 1

2

Not exactly what you're looking for, but it cuts down on having to keep multiple variables in sync:

site.pp:

class { 'ip::addr': name => "as2s67v", cidrs => [ "192.168.30.0/24", "172.45.35.0/16", "145.88.88.0/24" ] } 

modules/ip/addr.pp:

class ip::addr ($cidrs) { file { "/tmp/$name": content => template("ip/template.pp") } } 

template.pp:

server: <%= name %> <% for idx in (0..(cidrs.length-1)) -%> ipaddress<%= idx %> = "<%= cidrs[idx].split("/")[0] %>" prefix<%= idx %> = "<%= cidrs[idx].split("/")[1] %> <% end -%> 

References:

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.