Skip to content

Commit 5be747c

Browse files
committed
Support setting datadir_mode
With current implementation it's not possible to override mode for main database directory. Even with manage_datadir = false, it would be overwritten to hard-coded 0700
1 parent 51764e3 commit 5be747c

6 files changed

Lines changed: 39 additions & 3 deletions

File tree

REFERENCE.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,7 @@ The following parameters are available in the `postgresql::server` class:
892892
* [`manage_datadir`](#-postgresql--server--manage_datadir)
893893
* [`manage_logdir`](#-postgresql--server--manage_logdir)
894894
* [`manage_xlogdir`](#-postgresql--server--manage_xlogdir)
895+
* [`datadir_mode`](#-postgresql--server--datadir_mode)
895896
* [`password_encryption`](#-postgresql--server--password_encryption)
896897
* [`pg_hba_auth_password_encryption`](#-postgresql--server--pg_hba_auth_password_encryption)
897898
* [`roles`](#-postgresql--server--roles)
@@ -1319,6 +1320,14 @@ Set to false if you have file{ $xlogdir: } already defined
13191320

13201321
Default value: `$postgresql::params::manage_xlogdir`
13211322

1323+
##### <a name="-postgresql--server--datadir_mode"></a>`datadir_mode`
1324+
1325+
Data type: `Stdlib::Filemode`
1326+
1327+
Overrides the default mode (permissions) of the PostgreSQL data directory.
1328+
1329+
Default value: `$postgresql::params::datadir_mode`
1330+
13221331
##### <a name="-postgresql--server--password_encryption"></a>`password_encryption`
13231332

13241333
Data type: `Postgresql::Pg_password_encryption`
@@ -2797,6 +2806,7 @@ The following parameters are available in the `postgresql::server::instance::ini
27972806
* [`auth_local`](#-postgresql--server--instance--initdb--auth_local)
27982807
* [`data_checksums`](#-postgresql--server--instance--initdb--data_checksums)
27992808
* [`datadir`](#-postgresql--server--instance--initdb--datadir)
2809+
* [`datadir_mode`](#-postgresql--server--instance--initdb--datadir_mode)
28002810
* [`encoding`](#-postgresql--server--instance--initdb--encoding)
28012811
* [`group`](#-postgresql--server--instance--initdb--group)
28022812
* [`initdb_path`](#-postgresql--server--instance--initdb--initdb_path)
@@ -2846,6 +2856,14 @@ PostgreSQL data directory
28462856

28472857
Default value: `$postgresql::server::datadir`
28482858

2859+
##### <a name="-postgresql--server--instance--initdb--datadir_mode"></a>`datadir_mode`
2860+
2861+
Data type: `Stdlib::Filemode`
2862+
2863+
Overrides the default mode (permissions) of the PostgreSQL data directory.
2864+
2865+
Default value: `$postgresql::server::datadir_mode`
2866+
28492867
##### <a name="-postgresql--server--instance--initdb--encoding"></a>`encoding`
28502868

28512869
Data type: `Optional[String[1]]`

manifests/params.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
$manage_datadir = true
3131
$manage_logdir = true
3232
$manage_xlogdir = true
33+
$datadir_mode = '0700'
3334

3435
$backup_enable = false
3536
$backup_provider = 'pg_dump'

manifests/server.pp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
# @param manage_datadir Set to false if you have file{ $datadir: } already defined
9696
# @param manage_logdir Set to false if you have file{ $logdir: } already defined
9797
# @param manage_xlogdir Set to false if you have file{ $xlogdir: } already defined
98+
# @param datadir_mode Overrides the default mode (permissions) of the PostgreSQL data directory.
9899
# @param password_encryption Specify the type of encryption set for the password.
99100
# @param pg_hba_auth_password_encryption
100101
# Specify the type of encryption set for the password in pg_hba_conf,
@@ -181,6 +182,7 @@
181182
Boolean $manage_datadir = $postgresql::params::manage_datadir,
182183
Boolean $manage_logdir = $postgresql::params::manage_logdir,
183184
Boolean $manage_xlogdir = $postgresql::params::manage_xlogdir,
185+
Stdlib::Filemode $datadir_mode = $postgresql::params::datadir_mode,
184186
Postgresql::Pg_password_encryption $password_encryption = $postgresql::params::password_encryption,
185187
Optional[Postgresql::Pg_password_encryption] $pg_hba_auth_password_encryption = undef,
186188
Optional[String] $extra_systemd_config = $postgresql::params::extra_systemd_config,

manifests/server/initdb.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
auth_local => $postgresql::server::auth_local,
66
data_checksums => $postgresql::server::data_checksums,
77
datadir => $postgresql::server::datadir,
8+
datadir_mode => $postgresql::server::datadir_mode,
89
encoding => $postgresql::server::encoding,
910
group => $postgresql::server::group,
1011
initdb_path => $postgresql::server::initdb_path,

manifests/server/instance/initdb.pp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# @param auth_local auth method used by default for local authorization
55
# @param data_checksums Boolean. Use checksums on data pages to help detect corruption by the I/O system that would otherwise be silent.
66
# @param datadir PostgreSQL data directory
7+
# @param datadir_mode Overrides the default mode (permissions) of the PostgreSQL data directory.
78
# @param encoding
89
# Sets the default encoding for all databases created with this module.
910
# On certain operating systems this is also used during the template1 initialization,
@@ -35,6 +36,7 @@
3536
Optional[String[1]] $auth_local = $postgresql::server::auth_local,
3637
Optional[Boolean] $data_checksums = $postgresql::server::data_checksums,
3738
Stdlib::Absolutepath $datadir = $postgresql::server::datadir,
39+
Stdlib::Filemode $datadir_mode = $postgresql::server::datadir_mode,
3840
Optional[String[1]] $encoding = $postgresql::server::encoding,
3941
String[1] $group = $postgresql::server::group,
4042
Stdlib::Absolutepath $initdb_path = $postgresql::server::initdb_path,
@@ -66,7 +68,7 @@
6668
ensure => directory,
6769
owner => $user,
6870
group => $group,
69-
mode => '0700',
71+
mode => $datadir_mode,
7072
seltype => $seltype,
7173
}
7274
} else {
@@ -75,7 +77,7 @@
7577
ensure => directory,
7678
owner => $user,
7779
group => $group,
78-
mode => '0700',
80+
mode => $datadir_mode,
7981
seltype => $seltype,
8082
}
8183
}

spec/classes/server/initdb_spec.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,19 @@
1010
describe 'on RedHat' do
1111
include_examples 'RedHat 8'
1212

13-
it { is_expected.to contain_file('/var/lib/pgsql/data').with_ensure('directory') }
13+
it { is_expected.to contain_file('/var/lib/pgsql/data').with_ensure('directory').with_mode('0700') }
14+
15+
context 'with datadir_mode set to 0750' do
16+
let :pre_condition do
17+
"
18+
class {'postgresql::server':
19+
datadir_mode => '0750',
20+
}
21+
"
22+
end
23+
24+
it { is_expected.to contain_file('/var/lib/pgsql/data').with_ensure('directory').with_mode('0750') }
25+
end
1426

1527
context 'with (log,manage,xlog)_datadir set to false' do
1628
let :pre_condition do

0 commit comments

Comments
 (0)