1 # db server providing snapshot databases
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 (
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}",
16 $date = $now.strftime('%F')
18 if versioncmp($::lsbmajdistrelease, '9') <= 0 {
20 } elsif versioncmp($date, '2020-01-15') <= 0 {
24 notify {'Temporary old pg ignore rule expired, clean up puppet':
28 file { '/etc/nagios/obsolete-packages-ignore.d/puppet-postgres':
33 postgresql-contrib-9.6
36 postgresql-9.6-debversion
43 postgres::cluster::hba_entry { 'snapshot-guest':
45 database => 'snapshot',
47 address => $guest_addresses,
52 if $upstream_db_server {
53 if !$upstream_db_port {
54 fail ('Also need a port if we have a upstream_db_server')
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,