Skip to content

Commit 7ba187a

Browse files
bastelfreakSimonHoenscheid
authored andcommitted
server::db: Make port/user/group configureable (puppetlabs#1494)
Co-authored-by: Simon Hönscheid <simon@hoenscheid-itconsulting.com>
1 parent 8469c20 commit 7ba187a

File tree

3 files changed

+71
-16
lines changed

3 files changed

+71
-16
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: 22 additions & 9 deletions
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)
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