From 878a3926faf7da98aee5d189f4b7ad5a6a993373 Mon Sep 17 00:00:00 2001 From: Alexander Lindquister Date: Thu, 20 Oct 2016 14:16:21 +0200 Subject: [PATCH 1/2] added ipv6 nameservers param --- manifests/init.pp | 2 ++ spec/classes/dhcp_spec.rb | 3 +++ templates/dhcpd.conf-header.erb | 5 +++++ templates/dhcpd.conf.ddns.erb | 5 +++++ 4 files changed, 15 insertions(+) diff --git a/manifests/init.pp b/manifests/init.pp index b801b407e..88b7476ee 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -3,6 +3,7 @@ class dhcp ( $dnsdomain = undef, $nameservers = [ '8.8.8.8', '8.8.4.4' ], + $nameservers_ipv6 = [], $ntpservers = [], $dnssearchdomains = [], $dhcp_conf_header = 'INTERNAL_TEMPLATE', @@ -57,6 +58,7 @@ validate_array($dnssearchdomains) validate_array($nameservers) + validate_array($nameservers_ipv6) validate_array($ntpservers) validate_bool($authoritative) diff --git a/spec/classes/dhcp_spec.rb b/spec/classes/dhcp_spec.rb index 386471e0b..e3b79aadb 100644 --- a/spec/classes/dhcp_spec.rb +++ b/spec/classes/dhcp_spec.rb @@ -4,6 +4,7 @@ { 'dnsdomain' => ['sampledomain.com', '1.1.1.in-addr.arpa'], 'nameservers' => ['1.1.1.1'], + 'nameservers_ipv6' => ['1:5ee:bad::c0de'], 'dhcp_conf_header' => 'INTERNAL_TEMPLATE', 'dhcp_conf_ddns' => 'INTERNAL_TEMPLATE', 'dhcp_conf_pxe' => 'INTERNAL_TEMPLATE', @@ -185,10 +186,12 @@ 'include "/etc/rndc.key";', "zone #{params['dnsdomain'].first}. {", " primary #{params['nameservers'].first};", + " primary6 #{params['nameservers_ipv6'].first};", ' key rndc.key;', '}', "zone #{params['dnsdomain'].last}. {", " primary #{params['nameservers'].first};", + " primary6 #{params['nameservers_ipv6'].first};", ' key rndc.key;', '}' ] diff --git a/templates/dhcpd.conf-header.erb b/templates/dhcpd.conf-header.erb index 4403345d1..326cb440a 100644 --- a/templates/dhcpd.conf-header.erb +++ b/templates/dhcpd.conf-header.erb @@ -18,7 +18,12 @@ log-facility <%= @logfacility %>; # Options # ---------- option domain-name "<%= @dnsdomain_real.first %>"; +<% if @nameservers && !@nameservers.empty? -%> option domain-name-servers <%= @nameservers.join(', ') %>; +<% end -%> +<% if @nameservers_ipv6 && !@nameservers_ipv6.empty? -%> +option dhcp6.name-servers <%= @nameservers_ipv6.join(', ') %>; +<% end -%> <% if @dnssearchdomains && !@dnssearchdomains.empty? -%> option domain-search "<%= @dnssearchdomains.join('", "') %>"; <% end -%> diff --git a/templates/dhcpd.conf.ddns.erb b/templates/dhcpd.conf.ddns.erb index cf6c1cee9..92a003787 100644 --- a/templates/dhcpd.conf.ddns.erb +++ b/templates/dhcpd.conf.ddns.erb @@ -12,7 +12,12 @@ use-host-decl-names on; include "<%= @dnsupdatekey %>"; <% @dnsdomain_real.each do |dom| -%> zone <%= dom %>. { +<% if @nameservers && !@nameservers.empty? -%> primary <%= @nameservers.first %>; +<% end -%> +<% if @nameservers_ipv6 && !@nameservers_ipv6.empty? -%> + primary6 <%= @nameservers_ipv6.first %>; +<% end -%> key <%= @_dnskeyname %>; } <% end -%> From 52d4f9875ea73ca69a69d3453b66d2905cffd0dd Mon Sep 17 00:00:00 2001 From: Alexander Lindquister Date: Thu, 20 Oct 2016 15:59:05 +0200 Subject: [PATCH 2/2] added dhcp6.name-servers option to pool.pp --- manifests/pool.pp | 21 +++++++++++---------- templates/dhcpd.pool.erb | 5 +++++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/manifests/pool.pp b/manifests/pool.pp index 5853b9145..25f05786f 100644 --- a/manifests/pool.pp +++ b/manifests/pool.pp @@ -3,16 +3,17 @@ define dhcp::pool ( $network, $mask, - $gateway = '', - $range = '', - $failover = '', - $options = '', - $parameters = '', - $nameservers = undef, - $pxeserver = undef, - $mtu = undef, - $domain_name = '', - $ignore_unknown = undef, + $gateway = '', + $range = '', + $failover = '', + $options = '', + $parameters = '', + $nameservers = undef, + $nameservers_ipv6 = undef, + $pxeserver = undef, + $mtu = undef, + $domain_name = '', + $ignore_unknown = undef, ) { if $mtu { validate_integer($mtu) diff --git a/templates/dhcpd.pool.erb b/templates/dhcpd.pool.erb index 4b80bf209..efb5abee0 100644 --- a/templates/dhcpd.pool.erb +++ b/templates/dhcpd.pool.erb @@ -47,6 +47,11 @@ subnet <%= @network %> netmask <%= @mask %> { <% elsif @nameservers -%> option domain-name-servers <%= @nameservers %>; <% end -%> +<% if @nameservers_ipv6 and @nameservers_ipv6.is_a? Array -%> + option dhcp6.name-servers <%= @nameservers_ipv6.join(', ') %>; +<% elsif @nameservers_ipv6 -%> + option dhcp6.name-servers <%= @nameservers_ipv6 %>; +<% end -%> <% if @pxeserver -%> next-server <%= @pxeserver %>; <% end -%>