Skip to content

Commit 4304371

Browse files
committed
server::database_grant: Always set default user/group/port
This enables us to make it configureable. When a user doesn't specify it, the defaults will be passed, without breaking existing behaviour.
1 parent 93386b4 commit 4304371

File tree

3 files changed

+253
-13
lines changed

3 files changed

+253
-13
lines changed

REFERENCE.md

Lines changed: 217 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
* [`postgresql::server::db`](#postgresql--server--db): Define for conveniently creating a role, database and assigning the correctpermissions.
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.
@@ -1652,7 +1698,9 @@ The following parameters are available in the `postgresql::server::database_gran
16521698
* [`ensure`](#-postgresql--server--database_grant--ensure)
16531699
* [`psql_db`](#-postgresql--server--database_grant--psql_db)
16541700
* [`psql_user`](#-postgresql--server--database_grant--psql_user)
1701+
* [`psql_group`](#-postgresql--server--database_grant--psql_group)
16551702
* [`connect_settings`](#-postgresql--server--database_grant--connect_settings)
1703+
* [`port`](#-postgresql--server--database_grant--port)
16561704

16571705
##### <a name="-postgresql--server--database_grant--privilege"></a>`privilege`
16581706

@@ -1690,11 +1738,19 @@ Default value: `undef`
16901738

16911739
##### <a name="-postgresql--server--database_grant--psql_user"></a>`psql_user`
16921740

1693-
Data type: `Optional[String[1]]`
1741+
Data type: `String[1]`
16941742

16951743
Specifies the OS user for running psql. Default value: The default user for the module, usually 'postgres'.
16961744

1697-
Default value: `undef`
1745+
Default value: `$postgresql::server::user`
1746+
1747+
##### <a name="-postgresql--server--database_grant--psql_group"></a>`psql_group`
1748+
1749+
Data type: `String[1]`
1750+
1751+
Overrides the default postgres user group to be used for related files in the file system.
1752+
1753+
Default value: `$postgresql::server::group`
16981754

16991755
##### <a name="-postgresql--server--database_grant--connect_settings"></a>`connect_settings`
17001756

@@ -1704,6 +1760,14 @@ Specifies a hash of environment variables used when connecting to a remote serve
17041760

17051761
Default value: `undef`
17061762

1763+
##### <a name="-postgresql--server--database_grant--port"></a>`port`
1764+
1765+
Data type: `Optional[Stdlib::Port]`
1766+
1767+
Port to use when connecting.
1768+
1769+
Default value: `undef`
1770+
17071771
### <a name="postgresql--server--db"></a>`postgresql::server::db`
17081772

17091773
Define for conveniently creating a role, database and assigning the correctpermissions.
@@ -2044,6 +2108,157 @@ Specifies the resource name of the DB being managed. Defaults to the parameter $
20442108

20452109
Default value: `$database`
20462110

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

20492264
Define for granting membership to a role.

manifests/server/database_grant.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,19 @@
66
# @param ensure Specifies whether to grant or revoke the privilege. Revoke or 'absent' works only in PostgreSQL version 9.1.24 or later.
77
# @param psql_db Defines the database to execute the grant against. This should not ordinarily be changed from the default
88
# @param psql_user Specifies the OS user for running psql. Default value: The default user for the module, usually 'postgres'.
9+
# @param psql_group Overrides the default postgres user group to be used for related files in the file system.
910
# @param connect_settings Specifies a hash of environment variables used when connecting to a remote server.
11+
# @param port Port to use when connecting.
1012
define postgresql::server::database_grant (
1113
Enum['ALL', 'CREATE', 'CONNECT', 'TEMPORARY', 'TEMP', 'all', 'create', 'connect', 'temporary', 'temp'] $privilege,
1214
String[1] $db,
1315
String[1] $role,
1416
Optional[Enum['present', 'absent']] $ensure = undef,
1517
Optional[String[1]] $psql_db = undef,
16-
Optional[String[1]] $psql_user = undef,
18+
String[1] $psql_user = $postgresql::server::user,
1719
Optional[Hash] $connect_settings = undef,
20+
String[1] $psql_group = $postgresql::server::group,
21+
Optional[Stdlib::Port] $port = undef,
1822
) {
1923
postgresql::server::grant { "database:${name}":
2024
ensure => $ensure,
@@ -25,6 +29,8 @@
2529
object_name => $db,
2630
psql_db => $psql_db,
2731
psql_user => $psql_user,
32+
group => $psql_group,
33+
port => $port,
2834
connect_settings => $connect_settings,
2935
}
3036
}

spec/defines/server/database_grant_spec.rb

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,37 @@
99
'test'
1010
end
1111

12-
let :params do
13-
{
14-
privilege: 'ALL',
15-
db: 'test',
16-
role: 'test'
17-
}
18-
end
19-
2012
let :pre_condition do
2113
"class {'postgresql::server':}"
2214
end
2315

24-
it { is_expected.to contain_postgresql__server__database_grant('test') }
25-
it { is_expected.to contain_postgresql__server__grant('database:test') }
16+
context 'with minimal settings' do
17+
let :params do
18+
{
19+
privilege: 'ALL',
20+
db: 'test',
21+
role: 'test'
22+
}
23+
end
24+
25+
it { is_expected.to compile.with_all_deps }
26+
it { is_expected.to contain_postgresql__server__database_grant('test') }
27+
it { is_expected.to contain_postgresql__server__grant('database:test').with_psql_user('postgres').without_port.with_group('postgres') }
28+
end
29+
30+
context 'with different user/group/port' do
31+
let :params do
32+
{
33+
privilege: 'ALL',
34+
db: 'test',
35+
role: 'test',
36+
psql_user: 'foo',
37+
psql_group: 'bar',
38+
port: 1337
39+
}
40+
end
41+
42+
it { is_expected.to compile.with_all_deps }
43+
it { is_expected.to contain_postgresql__server__grant('database:test').with_psql_user('foo').with_port(1337).with_group('bar') }
44+
end
2645
end

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