diff --git a/Modulefile b/Modulefile index d82fcd32..0366ca5b 100644 --- a/Modulefile +++ b/Modulefile @@ -1,5 +1,5 @@ name 'ajjahn-puppet_dns' -version '0.1.3' +version '0.1.4' summary "Module for provisioning DNS (bind9)" description "Module for provisioning DNS (bind9)" author 'Adam Jahn' diff --git a/manifests/record/a.pp b/manifests/record/a.pp index 746a16b8..702f5b67 100644 --- a/manifests/record/a.pp +++ b/manifests/record/a.pp @@ -1,10 +1,15 @@ -define dns::record::a ($zone, $data, $ttl = '', $ptr = false) { +define dns::record::a ( + $zone, + $data, + $ttl = '', + $ptr = false, + $host = $name ) { - $alias = "${name},A,${zone}" + $alias = "${host},A,${zone}" dns::record { $alias: zone => $zone, - host => $name, + host => $host, ttl => $ttl, data => $data } @@ -16,7 +21,7 @@ dns::record::ptr { $octet: zone => $reverse_zone, - data => "${name}.${zone}" + data => "${host}.${zone}" } } } diff --git a/manifests/record/aaaa.pp b/manifests/record/aaaa.pp index 0e29300c..1e3b232b 100644 --- a/manifests/record/aaaa.pp +++ b/manifests/record/aaaa.pp @@ -1,10 +1,14 @@ -define dns::record::aaaa ($zone, $data, $ttl = '') { +define dns::record::aaaa ( + $zone, + $data, + $ttl = '', + $host = $name ) { - $alias = "${name},AAAA,${zone}" + $alias = "${host},AAAA,${zone}" dns::record { $alias: zone => $zone, - host => $name, + host => $host, ttl => $ttl, record => 'AAAA', data => $data diff --git a/manifests/record/cname.pp b/manifests/record/cname.pp index 815e3a12..ca146e82 100644 --- a/manifests/record/cname.pp +++ b/manifests/record/cname.pp @@ -1,12 +1,22 @@ -define dns::record::cname ($zone, $data, $ttl = '') { +define dns::record::cname ( + $zone, + $data, + $ttl = '', + $host = $name) { - $alias = "${name},CNAME,${zone}" + $alias = "${host},CNAME,${zone}" + + $qualified_data = $data ? { + '@' => $data, + /\.$/ => $data, + default => "${data}." + } dns::record { $alias: zone => $zone, - host => $name, + host => $host, ttl => $ttl, record => 'CNAME', - data => "${data}." + data => $qualified_data } } diff --git a/manifests/record/mx.pp b/manifests/record/mx.pp index 48e19370..ad542855 100644 --- a/manifests/record/mx.pp +++ b/manifests/record/mx.pp @@ -1,10 +1,15 @@ -define dns::record::mx ($zone, $data, $ttl = '', $preference = '0') { +define dns::record::mx ( + $zone, + $data, + $ttl = '', + $preference = '0', + $host = $name ) { - $alias = "${name},MX,${zone}" + $alias = "${host},MX,${zone}" dns::record { $alias: zone => $zone, - host => $name, + host => $host, ttl => $ttl, record => 'MX', preference => $preference, diff --git a/manifests/record/ptr.pp b/manifests/record/ptr.pp index 187c2205..9c048daa 100644 --- a/manifests/record/ptr.pp +++ b/manifests/record/ptr.pp @@ -1,10 +1,14 @@ -define dns::record::ptr ($zone, $data, $ttl = '') { +define dns::record::ptr ( + $zone, + $data, + $ttl = '', + $host = $name ) { - $alias = "${name},PTR,${zone}" + $alias = "${host},PTR,${zone}" dns::record { $alias: zone => $zone, - host => $name, + host => $host, ttl => $ttl, record => 'PTR', data => "${data}." diff --git a/manifests/record/txt.pp b/manifests/record/txt.pp index 679043f5..92508ef8 100644 --- a/manifests/record/txt.pp +++ b/manifests/record/txt.pp @@ -1,10 +1,14 @@ -define dns::record::txt ($zone, $data, $ttl = '') { +define dns::record::txt ( + $zone, + $data, + $ttl = '', + $host = $name) { - $alias = "${name},TXT,${zone}" + $alias = "${host},TXT,${zone}" dns::record { $alias: zone => $zone, - host => $name, + host => $host, ttl => $ttl, record => 'TXT', data => $data diff --git a/templates/zone_record.erb b/templates/zone_record.erb index ba39e754..4a871967 100644 --- a/templates/zone_record.erb +++ b/templates/zone_record.erb @@ -1,4 +1,8 @@ -<% delimiter = %w[TXT SPF].include?(record.upcase) ? '"' : '' -%> -<% data.each do |data_item| -%> +<% +delimiter = %w[TXT SPF].include?(record.upcase) ? '"' : '' +data_a = data.is_a?(String) ? data.lines.to_a : data + +data_a.each do |data_item| +-%> <%= host unless record.upcase == 'MX' %> <%= ttl %> <%= dns_class %> <%= record.upcase %><%= record.upcase == 'MX' ? " #{preference}" : '' %> <%= delimiter %><%= data_item %><%= delimiter %> -<% end -%> \ No newline at end of file +<% end -%>