From c9a45fd94d2b493b8b594a4c617ecf0d53f2ba12 Mon Sep 17 00:00:00 2001 From: Tomas Barton Date: Thu, 6 Aug 2026 13:31:52 +0200 Subject: [PATCH] (acceptance-tests-pr-1690) Support setting datadir_mode Co-authored-by: Tomas Barton --- REFERENCE.md | 18 ++++++++++++++++++ manifests/params.pp | 1 + manifests/server.pp | 2 ++ manifests/server/initdb.pp | 1 + manifests/server/instance/initdb.pp | 6 ++++-- spec/classes/server/initdb_spec.rb | 14 +++++++++++++- 6 files changed, 39 insertions(+), 3 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index 53b102a50a..c514a7e16e 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -892,6 +892,7 @@ The following parameters are available in the `postgresql::server` class: * [`manage_datadir`](#-postgresql--server--manage_datadir) * [`manage_logdir`](#-postgresql--server--manage_logdir) * [`manage_xlogdir`](#-postgresql--server--manage_xlogdir) +* [`datadir_mode`](#-postgresql--server--datadir_mode) * [`password_encryption`](#-postgresql--server--password_encryption) * [`pg_hba_auth_password_encryption`](#-postgresql--server--pg_hba_auth_password_encryption) * [`roles`](#-postgresql--server--roles) @@ -1319,6 +1320,14 @@ Set to false if you have file{ $xlogdir: } already defined Default value: `$postgresql::params::manage_xlogdir` +##### `datadir_mode` + +Data type: `Stdlib::Filemode` + +Overrides the default mode (permissions) of the PostgreSQL data directory. + +Default value: `$postgresql::params::datadir_mode` + ##### `password_encryption` Data type: `Postgresql::Pg_password_encryption` @@ -2797,6 +2806,7 @@ The following parameters are available in the `postgresql::server::instance::ini * [`auth_local`](#-postgresql--server--instance--initdb--auth_local) * [`data_checksums`](#-postgresql--server--instance--initdb--data_checksums) * [`datadir`](#-postgresql--server--instance--initdb--datadir) +* [`datadir_mode`](#-postgresql--server--instance--initdb--datadir_mode) * [`encoding`](#-postgresql--server--instance--initdb--encoding) * [`group`](#-postgresql--server--instance--initdb--group) * [`initdb_path`](#-postgresql--server--instance--initdb--initdb_path) @@ -2846,6 +2856,14 @@ PostgreSQL data directory Default value: `$postgresql::server::datadir` +##### `datadir_mode` + +Data type: `Stdlib::Filemode` + +Overrides the default mode (permissions) of the PostgreSQL data directory. + +Default value: `$postgresql::server::datadir_mode` + ##### `encoding` Data type: `Optional[String[1]]` diff --git a/manifests/params.pp b/manifests/params.pp index 41308acc8f..7d5d363f51 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -30,6 +30,7 @@ $manage_datadir = true $manage_logdir = true $manage_xlogdir = true + $datadir_mode = '0700' $backup_enable = false $backup_provider = 'pg_dump' diff --git a/manifests/server.pp b/manifests/server.pp index cf3bda0848..437fe2e9d3 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -95,6 +95,7 @@ # @param manage_datadir Set to false if you have file{ $datadir: } already defined # @param manage_logdir Set to false if you have file{ $logdir: } already defined # @param manage_xlogdir Set to false if you have file{ $xlogdir: } already defined +# @param datadir_mode Overrides the default mode (permissions) of the PostgreSQL data directory. # @param password_encryption Specify the type of encryption set for the password. # @param pg_hba_auth_password_encryption # Specify the type of encryption set for the password in pg_hba_conf, @@ -181,6 +182,7 @@ Boolean $manage_datadir = $postgresql::params::manage_datadir, Boolean $manage_logdir = $postgresql::params::manage_logdir, Boolean $manage_xlogdir = $postgresql::params::manage_xlogdir, + Stdlib::Filemode $datadir_mode = $postgresql::params::datadir_mode, Postgresql::Pg_password_encryption $password_encryption = $postgresql::params::password_encryption, Optional[Postgresql::Pg_password_encryption] $pg_hba_auth_password_encryption = undef, Optional[String] $extra_systemd_config = $postgresql::params::extra_systemd_config, diff --git a/manifests/server/initdb.pp b/manifests/server/initdb.pp index 605e9ea79e..65a00258ff 100644 --- a/manifests/server/initdb.pp +++ b/manifests/server/initdb.pp @@ -5,6 +5,7 @@ auth_local => $postgresql::server::auth_local, data_checksums => $postgresql::server::data_checksums, datadir => $postgresql::server::datadir, + datadir_mode => $postgresql::server::datadir_mode, encoding => $postgresql::server::encoding, group => $postgresql::server::group, initdb_path => $postgresql::server::initdb_path, diff --git a/manifests/server/instance/initdb.pp b/manifests/server/instance/initdb.pp index 0cfdc4382a..8725a7c0ab 100644 --- a/manifests/server/instance/initdb.pp +++ b/manifests/server/instance/initdb.pp @@ -4,6 +4,7 @@ # @param auth_local auth method used by default for local authorization # @param data_checksums Boolean. Use checksums on data pages to help detect corruption by the I/O system that would otherwise be silent. # @param datadir PostgreSQL data directory +# @param datadir_mode Overrides the default mode (permissions) of the PostgreSQL data directory. # @param encoding # Sets the default encoding for all databases created with this module. # On certain operating systems this is also used during the template1 initialization, @@ -35,6 +36,7 @@ Optional[String[1]] $auth_local = $postgresql::server::auth_local, Optional[Boolean] $data_checksums = $postgresql::server::data_checksums, Stdlib::Absolutepath $datadir = $postgresql::server::datadir, + Stdlib::Filemode $datadir_mode = $postgresql::server::datadir_mode, Optional[String[1]] $encoding = $postgresql::server::encoding, String[1] $group = $postgresql::server::group, Stdlib::Absolutepath $initdb_path = $postgresql::server::initdb_path, @@ -66,7 +68,7 @@ ensure => directory, owner => $user, group => $group, - mode => '0700', + mode => $datadir_mode, seltype => $seltype, } } else { @@ -75,7 +77,7 @@ ensure => directory, owner => $user, group => $group, - mode => '0700', + mode => $datadir_mode, seltype => $seltype, } } diff --git a/spec/classes/server/initdb_spec.rb b/spec/classes/server/initdb_spec.rb index c18c7f92f8..8dc51e3ec9 100644 --- a/spec/classes/server/initdb_spec.rb +++ b/spec/classes/server/initdb_spec.rb @@ -10,7 +10,19 @@ describe 'on RedHat' do include_examples 'RedHat 8' - it { is_expected.to contain_file('/var/lib/pgsql/data').with_ensure('directory') } + it { is_expected.to contain_file('/var/lib/pgsql/data').with_ensure('directory').with_mode('0700') } + + context 'with datadir_mode set to 0750' do + let :pre_condition do + " + class {'postgresql::server': + datadir_mode => '0750', + } + " + end + + it { is_expected.to contain_file('/var/lib/pgsql/data').with_ensure('directory').with_mode('0750') } + end context 'with (log,manage,xlog)_datadir set to false' do let :pre_condition do