Files
zulip/puppet/zulip/manifests/profile/postgresql.pp
2022-03-15 12:43:50 -07:00

79 lines
3.0 KiB
Puppet

# @summary Extends postgresql_base by tuning the configuration.
class zulip::profile::postgresql {
include zulip::profile::base
include zulip::postgresql_base
$work_mem = $zulip::common::total_memory_mb / 512
$shared_buffers = $zulip::common::total_memory_mb / 8
$effective_cache_size = $zulip::common::total_memory_mb * 10 / 32
$maintenance_work_mem = $zulip::common::total_memory_mb / 32
$random_page_cost = zulipconf('postgresql', 'random_page_cost', undef)
$effective_io_concurrency = zulipconf('postgresql', 'effective_io_concurrency', undef)
$listen_addresses = zulipconf('postgresql', 'listen_addresses', undef)
$s3_backups_bucket = zulipsecret('secrets', 's3_backups_bucket', '')
$replication_primary = zulipconf('postgresql', 'replication_primary', undef)
$replication_user = zulipconf('postgresql', 'replication_user', undef)
$replication_password = zulipsecret('secrets', 'postgresql_replication_password', '')
$ssl_cert_file = zulipconf('postgresql', 'ssl_cert_file', undef)
$ssl_key_file = zulipconf('postgresql', 'ssl_key_file', undef)
$ssl_ca_file = zulipconf('postgresql', 'ssl_ca_file', undef)
file { $zulip::postgresql_base::postgresql_confdirs:
ensure => directory,
owner => 'postgres',
group => 'postgres',
}
$postgresql_conf_file = "${zulip::postgresql_base::postgresql_confdir}/postgresql.conf"
file { $postgresql_conf_file:
ensure => file,
require => Package[$zulip::postgresql_base::postgresql],
owner => 'postgres',
group => 'postgres',
mode => '0644',
content => template("zulip/postgresql/${zulip::postgresql_common::version}/postgresql.conf.template.erb"),
}
if $replication_primary != '' and $replication_user != '' {
if $s3_backups_bucket == '' {
$message = @(EOT/L)
Replication is enabled, but s3_backups_bucket is not set in zulip-secrets.conf! \
Streaming replication requires wal-g backups be configured.
|-EOT
warning($message)
}
if $zulip::postgresql_common::version in ['10', '11'] {
# PostgreSQL 11 and below used a recovery.conf file for replication
file { "${zulip::postgresql_base::postgresql_confdir}/recovery.conf":
ensure => file,
require => Package[$zulip::postgresql_base::postgresql],
owner => 'postgres',
group => 'postgres',
mode => '0644',
content => template('zulip/postgresql/recovery.conf.template.erb'),
}
} else {
# PostgreSQL 12 and above use the presence of a standby.signal
# file to trigger replication
file { "${zulip::postgresql_base::postgresql_confdir}/standby.signal":
ensure => file,
require => Package[$zulip::postgresql_base::postgresql],
owner => 'postgres',
group => 'postgres',
mode => '0644',
content => '',
}
}
}
exec { $zulip::postgresql_base::postgresql_restart:
require => Package[$zulip::postgresql_base::postgresql],
refreshonly => true,
subscribe => [ File[$postgresql_conf_file] ],
}
}