define profile::postgresql::backup_pgbouncer ( String $base_path, Hash $pg_infos, String $pg_user = "postgres", String $pg_group = "postgres", ) { include "profile::postgresql::pam_ldap_pgbouncer" ensure_packages(["pgbouncer"]) $host_cn = $title $host = find_host($facts["ldapvar"]["other"], $host_cn) if empty($host) { fail("No host found for pgbouncer") } elsif has_key($host["vars"], "host") { $pg_backup_host = $host["vars"]["host"][0] } else { $pg_backup_host = $host["vars"]["real_hostname"][0] } $pg_path = "$base_path/$pg_backup_host/postgresql" if has_key($host["vars"], "postgresql_backup_port") { $pg_port = " port=${host[vars][postgresql_backup_port][0]}" } else { $pg_port = "" } # Config ensure_resource("concat", "/etc/pgbouncer/pgbouncer.ini", { mode => "0644", owner => "root", group => "root", ensure_newline => true, notify => Service["pgbouncer"], before => Service["pgbouncer"], }) ensure_resource("concat::fragment", "pgbouncer_head", { target => "/etc/pgbouncer/pgbouncer.ini", order => 01, source => "puppet:///modules/profile/postgresql/pgbouncer_head.ini", }) concat::fragment { "pgbouncer_$pg_backup_host": target => "/etc/pgbouncer/pgbouncer.ini", order => 02, content => "${pg_infos[pgbouncer_dbname]} = host=$pg_path$pg_port user=${pg_infos[dbuser]} dbname=${pg_infos[dbname]}", } # pg_hba for accessed cluster postgresql::server::pg_hba_rule { "$pg_backup_host - local access as ${pg_infos[dbuser]} user": description => "Allow local access to ${pg_infos[dbuser]} user", type => 'local', database => $pg_infos["dbname"], user => $pg_infos["dbuser"], auth_method => 'trust', order => "01-00", target => "$pg_path/pg_hba.conf", postgresql_version => "10", } # service ensure_resource("file", "/etc/systemd/system/pgbouncer.service.d", { ensure => "directory", mode => "0644", owner => "root", group => "root", }) ensure_resource("file", "/etc/systemd/system/pgbouncer.service.d/override.conf", { ensure => "present", mode => "0644", owner => "root", group => "root", content => "[Service]\nUser=\nUser=$pg_user\n", notify => Service["pgbouncer"], before => Service["pgbouncer"], }) ensure_resource("service", "pgbouncer", { ensure => "running", enable => true, require => [ Package["pgbouncer"], File["/etc/systemd/system/pgbouncer.service.d/override.conf"], Concat["/etc/pgbouncer/pgbouncer.ini"] ], }) }