Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9124618
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Subscribers
None
View Options
diff --git a/manifests/server/config_entry.pp b/manifests/server/config_entry.pp
index 6b86f5f..c1d21d3 100644
--- a/manifests/server/config_entry.pp
+++ b/manifests/server/config_entry.pp
@@ -1,178 +1,170 @@
# @summary Manage a postgresql.conf entry.
#
# @param ensure Removes an entry if set to 'absent'.
# @param value Defines the value for the setting.
# @param path Path for postgresql.conf
#
define postgresql::server::config_entry (
- $ensure = 'present',
+ Enum['present', 'absent'] $ensure = 'present',
$value = undef,
$path = false
) {
$postgresql_conf_path = $postgresql::server::postgresql_conf_path
$target = $path ? {
false => $postgresql_conf_path,
default => $path,
}
# Those are the variables that are marked as "(change requires restart)"
# on postgresql.conf. Items are ordered as on postgresql.conf.
#
# XXX: This resource supports setting other variables without knowing
# their names. Do not add them here.
$requires_restart_until = {
'data_directory' => undef,
'hba_file' => undef,
'ident_file' => undef,
'external_pid_file' => undef,
'listen_addresses' => undef,
'port' => undef,
'max_connections' => undef,
'superuser_reserved_connections' => undef,
'unix_socket_directory' => '9.3', # Turned into "unix_socket_directories"
'unix_socket_directories' => undef,
'unix_socket_group' => undef,
'unix_socket_permissions' => undef,
'bonjour' => undef,
'bonjour_name' => undef,
'ssl' => '10',
'ssl_ciphers' => '10',
'ssl_prefer_server_ciphers' => '10', # New on 9.4
'ssl_ecdh_curve' => '10', # New on 9.4
'ssl_cert_file' => '10', # New on 9.2
'ssl_key_file' => '10', # New on 9.2
'ssl_ca_file' => '10', # New on 9.2
'ssl_crl_file' => '10', # New on 9.2
'shared_buffers' => undef,
'huge_pages' => undef, # New on 9.4
'max_prepared_transactions' => undef,
'max_files_per_process' => undef,
'shared_preload_libraries' => undef,
'max_worker_processes' => undef, # New on 9.4
'old_snapshot_threshold' => undef, # New on 9.6
'wal_level' => undef,
'wal_log_hints' => undef, # New on 9.4
'wal_buffers' => undef,
'archive_mode' => undef,
'max_wal_senders' => undef,
'max_replication_slots' => undef, # New on 9.4
'track_commit_timestamp' => undef, # New on 9.5
'hot_standby' => undef,
'logging_collector' => undef,
'cluster_name' => undef, # New on 9.5
'silent_mode' => '9.2', # Removed
'track_activity_query_size' => undef,
'autovacuum_max_workers' => undef,
'autovacuum_freeze_max_age' => undef,
'autovacuum_multixact_freeze_max_age' => undef, # New on 9.5
'max_locks_per_transaction' => undef,
'max_pred_locks_per_transaction' => undef,
}
Exec {
logoutput => 'on_failure',
}
if ! ($name in $requires_restart_until and (
! $requires_restart_until[$name] or
versioncmp($postgresql::server::_version, $requires_restart_until[$name]) < 0
)) {
Postgresql_conf {
notify => Class['postgresql::server::reload'],
}
} elsif $postgresql::server::service_restart_on_change {
Postgresql_conf {
notify => Class['postgresql::server::service'],
}
} else {
Postgresql_conf {
before => Class['postgresql::server::service'],
}
}
# We have to handle ports and the data directory in a weird and
# special way. On early Debian and Ubuntu and RHEL we have to ensure
# we stop the service completely. On RHEL 7 we either have to create
# a systemd override for the port or update the sysconfig file, but this
# is managed for us in postgresql::server::config.
if $::operatingsystem == 'Debian' or $::operatingsystem == 'Ubuntu' {
if $name == 'port' and ( $::operatingsystemrelease =~ /^6/ or $::operatingsystemrelease =~ /^10\.04/ ) {
exec { "postgresql_stop_${name}":
command => "service ${::postgresql::server::service_name} stop",
onlyif => "service ${::postgresql::server::service_name} status",
unless => "grep 'port = ${value}' ${::postgresql::server::postgresql_conf_path}",
path => '/usr/sbin:/sbin:/bin:/usr/bin:/usr/local/bin',
before => Postgresql_conf[$name],
}
}
elsif $name == 'data_directory' {
exec { "postgresql_stop_${name}":
command => "service ${::postgresql::server::service_name} stop",
onlyif => "service ${::postgresql::server::service_name} status",
unless => "grep \"data_directory = '${value}'\" ${::postgresql::server::postgresql_conf_path}",
path => '/usr/sbin:/sbin:/bin:/usr/bin:/usr/local/bin',
before => Postgresql_conf[$name],
}
}
}
if $::osfamily == 'RedHat' {
if ! ($::operatingsystemrelease =~ /^7|^8/ or $::operatingsystem == 'Fedora') {
if $name == 'port' {
# We need to force postgresql to stop before updating the port
# because puppet becomes confused and is unable to manage the
# service appropriately.
exec { "postgresql_stop_${name}":
command => "service ${::postgresql::server::service_name} stop",
onlyif => "service ${::postgresql::server::service_name} status",
unless => "grep 'PGPORT=${value}' /etc/sysconfig/pgsql/postgresql",
path => '/sbin:/bin:/usr/bin:/usr/local/bin',
require => File['/etc/sysconfig/pgsql/postgresql'],
}
-> augeas { 'override PGPORT in /etc/sysconfig/pgsql/postgresql':
lens => 'Shellvars.lns',
incl => '/etc/sysconfig/pgsql/postgresql',
context => '/files/etc/sysconfig/pgsql/postgresql',
changes => "set PGPORT ${value}",
require => File['/etc/sysconfig/pgsql/postgresql'],
notify => Class['postgresql::server::service'],
before => Class['postgresql::server::reload'],
}
} elsif $name == 'data_directory' {
# We need to force postgresql to stop before updating the data directory
# otherwise init script breaks
exec { "postgresql_${name}":
command => "service ${::postgresql::server::service_name} stop",
onlyif => "service ${::postgresql::server::service_name} status",
unless => "grep 'PGDATA=${value}' /etc/sysconfig/pgsql/postgresql",
path => '/sbin:/bin:/usr/bin:/usr/local/bin',
require => File['/etc/sysconfig/pgsql/postgresql'],
}
-> augeas { 'override PGDATA in /etc/sysconfig/pgsql/postgresql':
lens => 'Shellvars.lns',
incl => '/etc/sysconfig/pgsql/postgresql',
context => '/files/etc/sysconfig/pgsql/postgresql',
changes => "set PGDATA ${value}",
require => File['/etc/sysconfig/pgsql/postgresql'],
notify => Class['postgresql::server::service'],
before => Class['postgresql::server::reload'],
}
}
}
}
- case $ensure {
- /present|absent/: {
- postgresql_conf { $name:
- ensure => $ensure,
- target => $target,
- value => $value,
- require => Class['postgresql::server::initdb'],
- }
- }
-
- default: {
- fail("Unknown value for ensure '${ensure}'.")
- }
+ postgresql_conf { $name:
+ ensure => $ensure,
+ target => $target,
+ value => $value,
+ require => Class['postgresql::server::initdb'],
}
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Jun 21, 7:20 PM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3316503
Attached To
rSPPG PostgreSQL puppet module
Event Timeline
Log In to Comment