Skip to content

Commit ed906e2

Browse files
committed
server::db: Make port/user/group configureable
1 parent 93386b4 commit ed906e2

File tree

3 files changed

+292
-12
lines changed

3 files changed

+292
-12
lines changed

REFERENCE.md

Lines changed: 253 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@
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.
50+
* [`postgresql::server::grant`](#postgresql--server--grant): Define for granting permissions to roles.
5051
* [`postgresql::server::grant_role`](#postgresql--server--grant_role): Define for granting membership to a role.
5152
* [`postgresql::server::instance::config`](#postgresql--server--instance--config): Manages the config for a postgresql::server instance
5253
* [`postgresql::server::instance::initdb`](#postgresql--server--instance--initdb): Manages initdb feature for a postgresql::server instance
@@ -1565,6 +1566,11 @@ The following parameters are available in the `postgresql::server::database` def
15651566
* [`locale`](#-postgresql--server--database--locale)
15661567
* [`istemplate`](#-postgresql--server--database--istemplate)
15671568
* [`connect_settings`](#-postgresql--server--database--connect_settings)
1569+
* [`psql_path`](#-postgresql--server--database--psql_path)
1570+
* [`default_db`](#-postgresql--server--database--default_db)
1571+
* [`user`](#-postgresql--server--database--user)
1572+
* [`group`](#-postgresql--server--database--group)
1573+
* [`port`](#-postgresql--server--database--port)
15681574

15691575
##### <a name="-postgresql--server--database--comment"></a>`comment`
15701576

@@ -1638,6 +1644,46 @@ Specifies a hash of environment variables used when connecting to a remote serve
16381644

16391645
Default value: `$postgresql::server::default_connect_settings`
16401646

1647+
##### <a name="-postgresql--server--database--psql_path"></a>`psql_path`
1648+
1649+
Data type: `Stdlib::Absolutepath`
1650+
1651+
Specifies the path to the psql command.
1652+
1653+
Default value: `$postgresql::server::psql_path`
1654+
1655+
##### <a name="-postgresql--server--database--default_db"></a>`default_db`
1656+
1657+
Data type: `String[1]`
1658+
1659+
Specifies the name of the default database to connect with. On most systems this is 'postgres'.
1660+
1661+
Default value: `$postgresql::server::default_database`
1662+
1663+
##### <a name="-postgresql--server--database--user"></a>`user`
1664+
1665+
Data type: `String[1]`
1666+
1667+
Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system.
1668+
1669+
Default value: `$postgresql::server::user`
1670+
1671+
##### <a name="-postgresql--server--database--group"></a>`group`
1672+
1673+
Data type: `String[1]`
1674+
1675+
Overrides the default postgres user group to be used for related files in the file system.
1676+
1677+
Default value: `$postgresql::server::group`
1678+
1679+
##### <a name="-postgresql--server--database--port"></a>`port`
1680+
1681+
Data type: `Stdlib::Port`
1682+
1683+
Specifies the port for the PostgreSQL server to listen on.
1684+
1685+
Default value: `$postgresql::server::port`
1686+
16411687
### <a name="postgresql--server--database_grant"></a>`postgresql::server::database_grant`
16421688

16431689
Manage a database grant.
@@ -1706,7 +1752,7 @@ Default value: `undef`
17061752

17071753
### <a name="postgresql--server--db"></a>`postgresql::server::db`
17081754

1709-
Define for conveniently creating a role, database and assigning the correctpermissions.
1755+
Define for conveniently creating a role, database and assigning the correct permissions.
17101756

17111757
#### Parameters
17121758

@@ -1723,6 +1769,9 @@ The following parameters are available in the `postgresql::server::db` defined t
17231769
* [`template`](#-postgresql--server--db--template)
17241770
* [`istemplate`](#-postgresql--server--db--istemplate)
17251771
* [`owner`](#-postgresql--server--db--owner)
1772+
* [`port`](#-postgresql--server--db--port)
1773+
* [`psql_user`](#-postgresql--server--db--psql_user)
1774+
* [`psql_group`](#-postgresql--server--db--psql_group)
17261775

17271776
##### <a name="-postgresql--server--db--user"></a>`user`
17281777

@@ -1810,6 +1859,30 @@ Sets a user as the owner of the database.
18101859

18111860
Default value: `undef`
18121861

1862+
##### <a name="-postgresql--server--db--port"></a>`port`
1863+
1864+
Data type: `Optional[Stdlib::Port]`
1865+
1866+
Specifies the port where the PostgreSQL server is listening on.
1867+
1868+
Default value: `undef`
1869+
1870+
##### <a name="-postgresql--server--db--psql_user"></a>`psql_user`
1871+
1872+
Data type: `String[1]`
1873+
1874+
Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system.
1875+
1876+
Default value: `$postgresql::server::user`
1877+
1878+
##### <a name="-postgresql--server--db--psql_group"></a>`psql_group`
1879+
1880+
Data type: `String[1]`
1881+
1882+
Overrides the default PostgreSQL user group to be used for related files in the file system.
1883+
1884+
Default value: `$postgresql::server::group`
1885+
18131886
### <a name="postgresql--server--default_privileges"></a>`postgresql::server::default_privileges`
18141887

18151888
Manage a database defaults privileges. Only works with PostgreSQL version 9.6 and above.
@@ -1957,6 +2030,9 @@ The following parameters are available in the `postgresql::server::extension` de
19572030
* [`port`](#-postgresql--server--extension--port)
19582031
* [`connect_settings`](#-postgresql--server--extension--connect_settings)
19592032
* [`database_resource_name`](#-postgresql--server--extension--database_resource_name)
2033+
* [`psql_path`](#-postgresql--server--extension--psql_path)
2034+
* [`user`](#-postgresql--server--extension--user)
2035+
* [`group`](#-postgresql--server--extension--group)
19602036

19612037
##### <a name="-postgresql--server--extension--database"></a>`database`
19622038

@@ -2044,6 +2120,181 @@ Specifies the resource name of the DB being managed. Defaults to the parameter $
20442120

20452121
Default value: `$database`
20462122

2123+
##### <a name="-postgresql--server--extension--psql_path"></a>`psql_path`
2124+
2125+
Data type: `Stdlib::Absolutepath`
2126+
2127+
Specifies the path to the psql command.
2128+
2129+
Default value: `postgresql::default('psql_path')`
2130+
2131+
##### <a name="-postgresql--server--extension--user"></a>`user`
2132+
2133+
Data type: `String[1]`
2134+
2135+
Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system.
2136+
2137+
Default value: `postgresql::default('user')`
2138+
2139+
##### <a name="-postgresql--server--extension--group"></a>`group`
2140+
2141+
Data type: `String[1]`
2142+
2143+
Overrides the default postgres user group to be used for related files in the file system.
2144+
2145+
Default value: `postgresql::default('group')`
2146+
2147+
### <a name="postgresql--server--grant"></a>`postgresql::server::grant`
2148+
2149+
Define for granting permissions to roles.
2150+
2151+
#### Parameters
2152+
2153+
The following parameters are available in the `postgresql::server::grant` defined type:
2154+
2155+
* [`role`](#-postgresql--server--grant--role)
2156+
* [`db`](#-postgresql--server--grant--db)
2157+
* [`privilege`](#-postgresql--server--grant--privilege)
2158+
* [`object_type`](#-postgresql--server--grant--object_type)
2159+
* [`object_name`](#-postgresql--server--grant--object_name)
2160+
* [`object_arguments`](#-postgresql--server--grant--object_arguments)
2161+
* [`psql_db`](#-postgresql--server--grant--psql_db)
2162+
* [`psql_user`](#-postgresql--server--grant--psql_user)
2163+
* [`port`](#-postgresql--server--grant--port)
2164+
* [`onlyif_exists`](#-postgresql--server--grant--onlyif_exists)
2165+
* [`connect_settings`](#-postgresql--server--grant--connect_settings)
2166+
* [`ensure`](#-postgresql--server--grant--ensure)
2167+
* [`group`](#-postgresql--server--grant--group)
2168+
* [`psql_path`](#-postgresql--server--grant--psql_path)
2169+
2170+
##### <a name="-postgresql--server--grant--role"></a>`role`
2171+
2172+
Data type: `String`
2173+
2174+
Specifies the role or user whom you are granting access to.
2175+
2176+
##### <a name="-postgresql--server--grant--db"></a>`db`
2177+
2178+
Data type: `String`
2179+
2180+
Specifies the database to which you are granting access.
2181+
2182+
##### <a name="-postgresql--server--grant--privilege"></a>`privilege`
2183+
2184+
Data type: `String`
2185+
2186+
Specifies the privilege to grant. Valid options: 'ALL', 'ALL PRIVILEGES' or 'object_type' dependent string.
2187+
2188+
Default value: `''`
2189+
2190+
##### <a name="-postgresql--server--grant--object_type"></a>`object_type`
2191+
2192+
Data type:
2193+
2194+
```puppet
2195+
Pattern[#/(?i:^COLUMN$)/,
2196+
/(?i:^ALL SEQUENCES IN SCHEMA$)/,
2197+
/(?i:^ALL TABLES IN SCHEMA$)/,
2198+
/(?i:^DATABASE$)/,
2199+
#/(?i:^FOREIGN DATA WRAPPER$)/,
2200+
#/(?i:^FOREIGN SERVER$)/,
2201+
/(?i:^FUNCTION$)/,
2202+
/(?i:^LANGUAGE$)/,
2203+
#/(?i:^PROCEDURAL LANGUAGE$)/,
2204+
/(?i:^TABLE$)/,
2205+
#/(?i:^TABLESPACE$)/,
2206+
/(?i:^SCHEMA$)/,
2207+
/(?i:^SEQUENCE$)/
2208+
#/(?i:^VIEW$)/
2209+
]
2210+
```
2211+
2212+
Specifies the type of object to which you are granting privileges.
2213+
Valid options: 'DATABASE', 'SCHEMA', 'SEQUENCE', 'ALL SEQUENCES IN SCHEMA', 'TABLE' or 'ALL TABLES IN SCHEMA'.
2214+
2215+
Default value: `'database'`
2216+
2217+
##### <a name="-postgresql--server--grant--object_name"></a>`object_name`
2218+
2219+
Data type: `Optional[Variant[Array[String,2,2],String[1]]]`
2220+
2221+
Specifies name of object_type to which to grant access, can be either a string or a two element array.
2222+
String: 'object_name' Array: ['schema_name', 'object_name']
2223+
2224+
Default value: `undef`
2225+
2226+
##### <a name="-postgresql--server--grant--object_arguments"></a>`object_arguments`
2227+
2228+
Data type: `Array[String[1],0]`
2229+
2230+
Specifies any arguments to be passed alongisde the access grant.
2231+
2232+
Default value: `[]`
2233+
2234+
##### <a name="-postgresql--server--grant--psql_db"></a>`psql_db`
2235+
2236+
Data type: `String`
2237+
2238+
Specifies the database to execute the grant against. This should not ordinarily be changed from the default
2239+
2240+
Default value: `$postgresql::server::default_database`
2241+
2242+
##### <a name="-postgresql--server--grant--psql_user"></a>`psql_user`
2243+
2244+
Data type: `String`
2245+
2246+
Sets the OS user to run psql.
2247+
2248+
Default value: `$postgresql::server::user`
2249+
2250+
##### <a name="-postgresql--server--grant--port"></a>`port`
2251+
2252+
Data type: `Optional[Stdlib::Port]`
2253+
2254+
Port to use when connecting.
2255+
2256+
Default value: `undef`
2257+
2258+
##### <a name="-postgresql--server--grant--onlyif_exists"></a>`onlyif_exists`
2259+
2260+
Data type: `Boolean`
2261+
2262+
Create grant only if doesn't exist
2263+
2264+
Default value: `false`
2265+
2266+
##### <a name="-postgresql--server--grant--connect_settings"></a>`connect_settings`
2267+
2268+
Data type: `Hash`
2269+
2270+
Specifies a hash of environment variables used when connecting to a remote server.
2271+
2272+
Default value: `$postgresql::server::default_connect_settings`
2273+
2274+
##### <a name="-postgresql--server--grant--ensure"></a>`ensure`
2275+
2276+
Data type: `Enum['present', 'absent']`
2277+
2278+
Specifies whether to grant or revoke the privilege. Default is to grant the privilege. Valid values: 'present', 'absent'.
2279+
2280+
Default value: `'present'`
2281+
2282+
##### <a name="-postgresql--server--grant--group"></a>`group`
2283+
2284+
Data type: `String`
2285+
2286+
Sets the OS group to run psql
2287+
2288+
Default value: `$postgresql::server::group`
2289+
2290+
##### <a name="-postgresql--server--grant--psql_path"></a>`psql_path`
2291+
2292+
Data type: `Stdlib::Absolutepath`
2293+
2294+
Sets the path to psql command
2295+
2296+
Default value: `$postgresql::server::psql_path`
2297+
20472298
### <a name="postgresql--server--grant_role"></a>`postgresql::server::grant_role`
20482299

20492300
Define for granting membership to a role.

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

0 commit comments

Comments
 (0)