mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
79 lines
3.0 KiB
Puppet
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] ],
|
|
}
|
|
}
|