diff manifests/templates.pp @ 313:49e66019faf7

Configure Postfix for IPv6 w/proxy Also centralised and standardised some IP settings Currently untested on IPv4 - Postfix might not like the "[ip.add.re.ss]" format, *but* we can't pass the brackets as part of the parameter because then it doesn't validate as IPv6!
author IBBoard <dev@ibboard.co.uk>
date Mon, 24 Feb 2020 20:49:51 +0000
parents 51d3748f8112
children 2a20a5b7f65a
line wrap: on
line diff
--- a/manifests/templates.pp	Sun Feb 23 20:29:42 2020 +0000
+++ b/manifests/templates.pp	Mon Feb 24 20:49:51 2020 +0000
@@ -32,7 +32,6 @@
 	$proxy_upstream = undef,
 	$mailserver,
 	$imapserver,
-	$imapserver_proxy = undef,
 	$firewall_cmd = 'iptables',
 	) {
 
@@ -53,6 +52,18 @@
 		content => "${lo_ip}   localhost\n${primary_ip} ${fqdn}",
 	}
 
+	if $proxy_4to6_ip_prefix != undef {
+		# …:1 to …:9 for websites, …:10 for mail
+		$ipv6_addresses = Integer[1, 10].map |$octet| { "$proxy_4to6_ip_prefix:$octet" }
+
+		$ipv6_secondaries = join($ipv6_addresses, " ")
+
+		augeas {'IPv6 secondary addresses':
+			context => "/files/etc/sysconfig/network-scripts/ifcfg-eth0",
+			changes => "set IPV6ADDR_SECONDARIES '\"$ipv6_secondaries\"'",
+		}
+	}
+
 	require repos
 	include basenode
 	include privat
@@ -63,6 +74,7 @@
 	class { 'webserver':
 		primary_ip => $primary_ip,
 		proxy_4to6_ip_prefix => $proxy_4to6_ip_prefix,
+		proxy_4to6_mask => 124,
 		proxy_upstream => $proxy_upstream,
 	}
 	include cronjobs
@@ -75,7 +87,7 @@
 		mailserver => $mailserver,
 		imapserver => $imapserver,
 		mailserver_ip => $primary_ip,
-		imapserver_proxy => $imapserver_proxy,
+		proxy_ip => $proxy_4to6_ip_prefix != undef ? { true => "${proxy_4to6_ip_prefix}:10", default => undef },
 		proxy_upstream => $proxy_upstream,
 	}
 }
@@ -145,13 +157,6 @@
 		chain => 'INPUT',
 		jump => 'Fail2Ban',
 	}
-	firewall { '101 allow SMTP':
-		dport => [25, 465],
-		proto => tcp,
-		action => accept,
-	}
-	# Note: SSH port will be managed separately as we 
-	# put it on a different port to hide from script kiddy noise
 }
 
 class dnsresolver {
@@ -348,23 +353,16 @@
 class webserver (
 	$primary_ip,
 	$proxy_4to6_ip_prefix = undef,
+	$proxy_4to6_mask = undef,
 	$proxy_upstream = undef,
 	) {
 
-	if $proxy_4to6_ip_prefix == undef {
-		$ipv6_addresses = []
-	}
-	else {
-		$ipv6_addresses = [1, 2, 3, 4, 5, 6, 7, 8, 9].map |$octet| { "$proxy_4to6_ip_prefix:$octet" }
-	}
-
 	#Setup base website parameters
 	class { 'website':
 		base_dir => '/srv/sites',
 		primary_ip => $primary_ip,
 		proxy_4to6_ip_prefix => $proxy_4to6_ip_prefix,
-		proxy_4to6_mask => 124,
-		proxy_4to6_addresses => $ipv6_addresses,
+		proxy_4to6_mask => $proxy_4to6_mask,
 		proxy_upstream => $proxy_upstream,
 		default_owner => $defaultusers::default_user,
 		default_group => $defaultusers::default_user,
@@ -468,7 +466,6 @@
 	$proxy_upstream = undef,
 	$mailserver,
 	$imapserver,
-	$imapserver_proxy = undef,
 	$firewall_cmd = 'iptables',
 	){
 	class { 'basevpsnode':
@@ -477,7 +474,6 @@
 		proxy_upstream => $proxy_upstream,
 		mailserver => $mailserver,
 		imapserver => $imapserver,
-		imapserver_proxy => $imapserver_proxy,
 		firewall_cmd => $firewall_cmd,
 	}
 
@@ -709,17 +705,20 @@
 	$mailserver,
 	$imapserver,
 	$mailserver_ip,
-	$imapserver_proxy = undef,
+	$proxy_ip = undef,
 	$proxy_upstream = [],
 	){
 	class { 'postfix':
 		mailserver => $mailserver,
-		protocols  => has_key($facts, 'ipaddress') ? { true => 'ipv4', default => 'ipv6' },
+		mailserver_ip => $mailserver_ip,
+		mailserver_proxy => $proxy_ip,
+		proxy_upstream => $proxy_upstream,
+		protocols  => $mailserver_ip =~ Stdlib::IP::Address::V6 ? { true => 'ipv6', default => 'ipv4' },
 	}
 	class { 'dovecot':
 		imapserver => $imapserver,
 		imapserver_ip => $mailserver_ip,
-		imapserver_proxy => $imapserver_proxy,
+		imapserver_proxy => $proxy_ip,
 		proxy_upstream => $proxy_upstream,
 	}
 	# Unspecified SpamAssassin config dependencies that started