9e6f9f4a4ea421e5f6a43949ea81459316612516
[mirror/dsa-puppet.git] / modules / roles / manifests / snapshot_db.pp
1 # db server providing snapshot databases
2 #
3 # @param db_port          port of the snapshot cluster
4 # @param guest_addresses  addresses to allow for the guest account
5 # @param upstream_db_server  if this node is a replica, name of the upstream db server
6 # @param upstream_db_port    if this node is a replica, port of the upstream db server
7 # @param upstream_db_role    if this node is a replica, replication role on the upstream db server
8 class roles::snapshot_db (
9   Integer $db_port,
10   Array[Stdlib::IP::Address] $guest_addresses = ['127.0.0.1', '::1'],
11   Optional[String] $upstream_db_server = undef,
12   Optional[Integer] $upstream_db_port = undef,
13   String $upstream_db_role = "repuser-${::hostname}",
14 ) {
15   $now = Timestamp()
16   $date = $now.strftime('%F')
17
18   if versioncmp($::lsbmajdistrelease, '9') <= 0 {
19     $ensure = 'absent'
20   } elsif versioncmp($date, '2020-01-15') <= 0 {
21     $ensure = 'present'
22   } else {
23     $ensure = 'absent'
24     notify {'Temporary old pg ignore rule expired, clean up puppet':
25       loglevel => warning,
26     }
27   }
28   file { '/etc/nagios/obsolete-packages-ignore.d/puppet-postgres':
29     ensure  => $ensure,
30     content => @(EOF),
31       libperl5.24:amd64
32       postgresql-client-9.6
33       postgresql-contrib-9.6
34       perl-modules-5.24
35       postgresql-plperl-9.6
36       postgresql-9.6-debversion
37       libgdbm3:amd64
38       postgresql-9.6
39       | EOF
40   }
41
42
43   postgres::cluster::hba_entry { 'snapshot-guest':
44     pg_port  => $db_port,
45     database => 'snapshot',
46     user     => 'guest',
47     address  => $guest_addresses,
48     method   => 'trust',
49     order    => '30',
50   }
51
52   if $upstream_db_server {
53     if !$upstream_db_port {
54       fail ('Also need a port if we have a upstream_db_server')
55     }
56     @@postgres::cluster::hba_entry { "snapshot-replica-to-${::fqdn}":
57       tag      => "postgres::cluster::${upstream_db_port}::hba::${upstream_db_server}",
58       pg_port  => $upstream_db_port,
59       database => 'replication',
60       user     => $upstream_db_role,
61       address  => $base::public_addresses,
62     }
63   }
64 }