Skip to content

Commit 1dadd63

Browse files
server::db: Make port/user/group configureable (#1494)
Co-authored-by: Simon Hönscheid <[email protected]>
1 parent 6cc35d0 commit 1dadd63

File tree

3 files changed

+71
-16
lines changed

3 files changed

+71
-16
lines changed

REFERENCE.md

+29-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
* [`postgresql::server::config_entry`](#postgresql--server--config_entry): Manage a postgresql.conf entry.
4545
* [`postgresql::server::database`](#postgresql--server--database): Define for creating a database.
4646
* [`postgresql::server::database_grant`](#postgresql--server--database_grant): Manage a database grant.
47-
* [`postgresql::server::db`](#postgresql--server--db): Define for conveniently creating a role, database and assigning the correctpermissions.
47+
* [`postgresql::server::db`](#postgresql--server--db): Define for conveniently creating a role, database and assigning the correct permissions.
4848
* [`postgresql::server::default_privileges`](#postgresql--server--default_privileges): Manage a database defaults privileges. Only works with PostgreSQL version 9.6 and above.
4949
* [`postgresql::server::extension`](#postgresql--server--extension): Activate an extension on a postgresql database.
5050
* [`postgresql::server::grant`](#postgresql--server--grant): Define for granting permissions to roles.
@@ -1770,7 +1770,7 @@ Default value: `undef`
17701770

17711771
### <a name="postgresql--server--db"></a>`postgresql::server::db`
17721772

1773-
Define for conveniently creating a role, database and assigning the correctpermissions.
1773+
Define for conveniently creating a role, database and assigning the correct permissions.
17741774

17751775
#### Parameters
17761776

@@ -1787,6 +1787,9 @@ The following parameters are available in the `postgresql::server::db` defined t
17871787
* [`template`](#-postgresql--server--db--template)
17881788
* [`istemplate`](#-postgresql--server--db--istemplate)
17891789
* [`owner`](#-postgresql--server--db--owner)
1790+
* [`port`](#-postgresql--server--db--port)
1791+
* [`psql_user`](#-postgresql--server--db--psql_user)
1792+
* [`psql_group`](#-postgresql--server--db--psql_group)
17901793

17911794
##### <a name="-postgresql--server--db--user"></a>`user`
17921795

@@ -1874,6 +1877,30 @@ Sets a user as the owner of the database.
18741877

18751878
Default value: `undef`
18761879

1880+
##### <a name="-postgresql--server--db--port"></a>`port`
1881+
1882+
Data type: `Optional[Stdlib::Port]`
1883+
1884+
Specifies the port where the PostgreSQL server is listening on.
1885+
1886+
Default value: `undef`
1887+
1888+
##### <a name="-postgresql--server--db--psql_user"></a>`psql_user`
1889+
1890+
Data type: `String[1]`
1891+
1892+
Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system.
1893+
1894+
Default value: `$postgresql::server::user`
1895+
1896+
##### <a name="-postgresql--server--db--psql_group"></a>`psql_group`
1897+
1898+
Data type: `String[1]`
1899+
1900+
Overrides the default PostgreSQL user group to be used for related files in the file system.
1901+
1902+
Default value: `$postgresql::server::group`
1903+
18771904
### <a name="postgresql--server--default_privileges"></a>`postgresql::server::default_privileges`
18781905

18791906
Manage a database defaults privileges. Only works with PostgreSQL version 9.6 and above.

manifests/server/db.pp

+20-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# @summary Define for conveniently creating a role, database and assigning the correctpermissions.
1+
# @summary Define for conveniently creating a role, database and assigning the correct permissions.
22
#
33
# @param user User to assign access to the database upon creation (will be created if not defined elsewhere). Mandatory.
44
# @param password Sets the password for the created user (if a user is created).
@@ -11,6 +11,9 @@
1111
# @param template Specifies the name of the template database from which to build this database. Defaults value: template0.
1212
# @param istemplate Specifies that the database is a template, if set to true.
1313
# @param owner Sets a user as the owner of the database.
14+
# @param port Specifies the port where the PostgreSQL server is listening on.
15+
# @param psql_user Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system.
16+
# @param psql_group Overrides the default PostgreSQL user group to be used for related files in the file system.
1417
define postgresql::server::db (
1518
String[1] $user,
1619
Optional[Variant[String, Sensitive[String]]] $password = undef,
@@ -22,7 +25,10 @@
2225
Optional[String[1]] $tablespace = undef,
2326
String[1] $template = 'template0',
2427
Boolean $istemplate = false,
25-
Optional[String[1]] $owner = undef
28+
Optional[String[1]] $owner = undef,
29+
Optional[Stdlib::Port] $port = undef,
30+
String[1] $psql_user = $postgresql::server::user,
31+
String[1] $psql_group = $postgresql::server::group,
2632
) {
2733
if ! defined(Postgresql::Server::Database[$dbname]) {
2834
postgresql::server::database { $dbname:
@@ -33,21 +39,30 @@
3339
locale => $locale,
3440
istemplate => $istemplate,
3541
owner => $owner,
42+
port => $port,
43+
user => $psql_user,
44+
group => $psql_group,
3645
}
3746
}
3847

3948
if ! defined(Postgresql::Server::Role[$user]) {
4049
postgresql::server::role { $user:
4150
password_hash => $password,
51+
port => $port,
52+
psql_user => $psql_user,
53+
psql_group => $psql_group,
4254
before => Postgresql::Server::Database[$dbname],
4355
}
4456
}
4557

4658
if ! defined(Postgresql::Server::Database_grant["GRANT ${user} - ${grant} - ${dbname}"]) {
4759
postgresql::server::database_grant { "GRANT ${user} - ${grant} - ${dbname}":
48-
privilege => $grant,
49-
db => $dbname,
50-
role => $user,
60+
privilege => $grant,
61+
db => $dbname,
62+
role => $user,
63+
port => $port,
64+
psql_user => $psql_user,
65+
psql_group => $psql_group,
5166
} -> Postgresql_conn_validator<| db_name == $dbname |>
5267
}
5368

spec/defines/server/db_spec.rb

+22-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,24 @@
66
include_examples 'Debian 11'
77

88
let :title do
9-
'test'
9+
'testdb'
10+
end
11+
let :pre_condition do
12+
"class {'postgresql::server':}"
13+
end
14+
15+
context 'with minimal params' do
16+
let :params do
17+
{
18+
user: 'foo'
19+
}
20+
end
21+
22+
it { is_expected.to compile.with_all_deps }
23+
it { is_expected.to contain_postgresql__server__db('testdb').without_port.with_user('foo').with_psql_user('postgres').with_psql_group('postgres') }
24+
it { is_expected.to contain_postgresql__server__database('testdb').without_owner.with_user('postgres').with_group('postgres') }
25+
it { is_expected.to contain_postgresql__server__role('foo').that_comes_before('Postgresql::Server::Database[testdb]').without_port.with_psql_user('postgres').with_psql_group('postgres') }
26+
it { is_expected.to contain_postgresql__server__database_grant('GRANT foo - ALL - testdb').without_port.with_psql_user('postgres').with_psql_group('postgres') }
1027
end
1128

1229
context 'without dbname param' do
@@ -18,14 +35,10 @@
1835
}
1936
end
2037

21-
let :pre_condition do
22-
"class {'postgresql::server':}"
23-
end
24-
25-
it { is_expected.to contain_postgresql__server__db('test') }
26-
it { is_expected.to contain_postgresql__server__database('test').with_owner('tester') }
27-
it { is_expected.to contain_postgresql__server__role('test').that_comes_before('Postgresql::Server::Database[test]') }
28-
it { is_expected.to contain_postgresql__server__database_grant('GRANT test - ALL - test') }
38+
it { is_expected.to contain_postgresql__server__db('testdb') }
39+
it { is_expected.to contain_postgresql__server__database('testdb').with_owner('tester') }
40+
it { is_expected.to contain_postgresql__server__role('test').that_comes_before('Postgresql::Server::Database[testdb]') }
41+
it { is_expected.to contain_postgresql__server__database_grant('GRANT test - ALL - testdb') }
2942
end
3043

3144
context 'dbname' do

0 commit comments

Comments
 (0)