Skip to content

Commit 4175acf

Browse files
committed
server::db: Make port/user/group configureable
1 parent 56fa971 commit 4175acf

File tree

3 files changed

+68
-12
lines changed

3 files changed

+68
-12
lines changed

REFERENCE.md

Lines changed: 29 additions & 2 deletions
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

Lines changed: 20 additions & 5 deletions
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

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,21 @@
66
include_examples 'Debian 11'
77

88
let :title do
9-
'test'
9+
'testdb'
10+
end
11+
12+
context 'with minimal params' do
13+
let :params do
14+
{
15+
user: 'foo'
16+
}
17+
end
18+
19+
it { is_expected.to compile.with_all_deps }
20+
it { is_expected.to contain_postgresql__server__db('testdb').with_port(5432).with_user('postgres').with_group('postgres') }
21+
it { is_expected.to contain_postgresql__server__database('testdb').with_owner('tester').with_port(5432).with_user('postgres').with_group('postgres') }
22+
it { is_expected.to contain_postgresql__server__role('testdb').that_comes_before('Postgresql::Server::Database[testdb]').with_port(5432).with_psql_user('postgres').with_psql_group('postgres') }
23+
it { is_expected.to contain_postgresql__server__database_grant('GRANT test - ALL - testdb').with_port(5432).with_psql_user('postgres').with_psql_group('postgres') }
1024
end
1125

1226
context 'without dbname param' do
@@ -22,10 +36,10 @@
2236
"class {'postgresql::server':}"
2337
end
2438

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') }
39+
it { is_expected.to contain_postgresql__server__db('testdb') }
40+
it { is_expected.to contain_postgresql__server__database('testdb').with_owner('tester') }
41+
it { is_expected.to contain_postgresql__server__role('testdb').that_comes_before('Postgresql::Server::Database[testdb]') }
42+
it { is_expected.to contain_postgresql__server__database_grant('GRANT test - ALL - testdb') }
2943
end
3044

3145
context 'dbname' do

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy