From f8b33ce8d0b5d9dd18967663c97c1536cf76f779 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Thu, 31 Aug 2023 15:27:13 +0200 Subject: [PATCH] server::db: Make port/user/group configureable --- REFERENCE.md | 31 +++++++++++++++++++++++++++++-- manifests/server/db.pp | 25 ++++++++++++++++++++----- spec/defines/server/db_spec.rb | 31 ++++++++++++++++++++++--------- 3 files changed, 71 insertions(+), 16 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index 83eb112af8..509bb46137 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -44,7 +44,7 @@ * [`postgresql::server::config_entry`](#postgresql--server--config_entry): Manage a postgresql.conf entry. * [`postgresql::server::database`](#postgresql--server--database): Define for creating a database. * [`postgresql::server::database_grant`](#postgresql--server--database_grant): Manage a database grant. -* [`postgresql::server::db`](#postgresql--server--db): Define for conveniently creating a role, database and assigning the correctpermissions. +* [`postgresql::server::db`](#postgresql--server--db): Define for conveniently creating a role, database and assigning the correct permissions. * [`postgresql::server::default_privileges`](#postgresql--server--default_privileges): Manage a database defaults privileges. Only works with PostgreSQL version 9.6 and above. * [`postgresql::server::extension`](#postgresql--server--extension): Activate an extension on a postgresql database. * [`postgresql::server::grant`](#postgresql--server--grant): Define for granting permissions to roles. @@ -1770,7 +1770,7 @@ Default value: `undef` ### `postgresql::server::db` -Define for conveniently creating a role, database and assigning the correctpermissions. +Define for conveniently creating a role, database and assigning the correct permissions. #### Parameters @@ -1787,6 +1787,9 @@ The following parameters are available in the `postgresql::server::db` defined t * [`template`](#-postgresql--server--db--template) * [`istemplate`](#-postgresql--server--db--istemplate) * [`owner`](#-postgresql--server--db--owner) +* [`port`](#-postgresql--server--db--port) +* [`psql_user`](#-postgresql--server--db--psql_user) +* [`psql_group`](#-postgresql--server--db--psql_group) ##### `user` @@ -1874,6 +1877,30 @@ Sets a user as the owner of the database. Default value: `undef` +##### `port` + +Data type: `Optional[Stdlib::Port]` + +Specifies the port where the PostgreSQL server is listening on. + +Default value: `undef` + +##### `psql_user` + +Data type: `String[1]` + +Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system. + +Default value: `$postgresql::server::user` + +##### `psql_group` + +Data type: `String[1]` + +Overrides the default PostgreSQL user group to be used for related files in the file system. + +Default value: `$postgresql::server::group` + ### `postgresql::server::default_privileges` Manage a database defaults privileges. Only works with PostgreSQL version 9.6 and above. diff --git a/manifests/server/db.pp b/manifests/server/db.pp index 9cd7ad4afe..01cc61b665 100644 --- a/manifests/server/db.pp +++ b/manifests/server/db.pp @@ -1,4 +1,4 @@ -# @summary Define for conveniently creating a role, database and assigning the correctpermissions. +# @summary Define for conveniently creating a role, database and assigning the correct permissions. # # @param user User to assign access to the database upon creation (will be created if not defined elsewhere). Mandatory. # @param password Sets the password for the created user (if a user is created). @@ -11,6 +11,9 @@ # @param template Specifies the name of the template database from which to build this database. Defaults value: template0. # @param istemplate Specifies that the database is a template, if set to true. # @param owner Sets a user as the owner of the database. +# @param port Specifies the port where the PostgreSQL server is listening on. +# @param psql_user Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system. +# @param psql_group Overrides the default PostgreSQL user group to be used for related files in the file system. define postgresql::server::db ( String[1] $user, Optional[Variant[String, Sensitive[String]]] $password = undef, @@ -22,7 +25,10 @@ Optional[String[1]] $tablespace = undef, String[1] $template = 'template0', Boolean $istemplate = false, - Optional[String[1]] $owner = undef + Optional[String[1]] $owner = undef, + Optional[Stdlib::Port] $port = undef, + String[1] $psql_user = $postgresql::server::user, + String[1] $psql_group = $postgresql::server::group, ) { if ! defined(Postgresql::Server::Database[$dbname]) { postgresql::server::database { $dbname: @@ -33,21 +39,30 @@ locale => $locale, istemplate => $istemplate, owner => $owner, + port => $port, + user => $psql_user, + group => $psql_group, } } if ! defined(Postgresql::Server::Role[$user]) { postgresql::server::role { $user: password_hash => $password, + port => $port, + psql_user => $psql_user, + psql_group => $psql_group, before => Postgresql::Server::Database[$dbname], } } if ! defined(Postgresql::Server::Database_grant["GRANT ${user} - ${grant} - ${dbname}"]) { postgresql::server::database_grant { "GRANT ${user} - ${grant} - ${dbname}": - privilege => $grant, - db => $dbname, - role => $user, + privilege => $grant, + db => $dbname, + role => $user, + port => $port, + psql_user => $psql_user, + psql_group => $psql_group, } -> Postgresql_conn_validator<| db_name == $dbname |> } diff --git a/spec/defines/server/db_spec.rb b/spec/defines/server/db_spec.rb index 0051b678c9..cfd4f80d71 100644 --- a/spec/defines/server/db_spec.rb +++ b/spec/defines/server/db_spec.rb @@ -6,7 +6,24 @@ include_examples 'Debian 11' let :title do - 'test' + 'testdb' + end + let :pre_condition do + "class {'postgresql::server':}" + end + + context 'with minimal params' do + let :params do + { + user: 'foo' + } + end + + it { is_expected.to compile.with_all_deps } + it { is_expected.to contain_postgresql__server__db('testdb').without_port.with_user('foo').with_psql_user('postgres').with_psql_group('postgres') } + it { is_expected.to contain_postgresql__server__database('testdb').without_owner.with_user('postgres').with_group('postgres') } + 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') } + it { is_expected.to contain_postgresql__server__database_grant('GRANT foo - ALL - testdb').without_port.with_psql_user('postgres').with_psql_group('postgres') } end context 'without dbname param' do @@ -18,14 +35,10 @@ } end - let :pre_condition do - "class {'postgresql::server':}" - end - - it { is_expected.to contain_postgresql__server__db('test') } - it { is_expected.to contain_postgresql__server__database('test').with_owner('tester') } - it { is_expected.to contain_postgresql__server__role('test').that_comes_before('Postgresql::Server::Database[test]') } - it { is_expected.to contain_postgresql__server__database_grant('GRANT test - ALL - test') } + it { is_expected.to contain_postgresql__server__db('testdb') } + it { is_expected.to contain_postgresql__server__database('testdb').with_owner('tester') } + it { is_expected.to contain_postgresql__server__role('test').that_comes_before('Postgresql::Server::Database[testdb]') } + it { is_expected.to contain_postgresql__server__database_grant('GRANT test - ALL - testdb') } end context 'dbname' do 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