X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fpostgresql%2Fmanifests%2Fserver%2Fdb.pp;fp=3rdparty%2Fmodules%2Fpostgresql%2Fmanifests%2Fserver%2Fdb.pp;h=9b20928e36957d165e29771bc61b189ffdce2e7b;hb=a69999e580f8b3abd12446c2d6ad59e517651813;hp=0000000000000000000000000000000000000000;hpb=e7b6b352165009c385c52fcfe5a1055690dbfa4b;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/postgresql/manifests/server/db.pp b/3rdparty/modules/postgresql/manifests/server/db.pp new file mode 100644 index 000000000..9b20928e3 --- /dev/null +++ b/3rdparty/modules/postgresql/manifests/server/db.pp @@ -0,0 +1,47 @@ +# Define for conveniently creating a role, database and assigning the correct +# permissions. See README.md for more details. +define postgresql::server::db ( + $user, + $password, + $comment = undef, + $dbname = $title, + $encoding = $postgresql::server::encoding, + $locale = $postgresql::server::locale, + $grant = 'ALL', + $tablespace = undef, + $template = 'template0', + $istemplate = false, + $owner = undef +) { + + if ! defined(Postgresql::Server::Database[$dbname]) { + postgresql::server::database { $dbname: + comment => $comment, + encoding => $encoding, + tablespace => $tablespace, + template => $template, + locale => $locale, + istemplate => $istemplate, + owner => $owner, + } + } + + if ! defined(Postgresql::Server::Role[$user]) { + postgresql::server::role { $user: + password_hash => $password, + 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, + } -> Postgresql_conn_validator<| db_name == $dbname |> + } + + if($tablespace != undef and defined(Postgresql::Server::Tablespace[$tablespace])) { + Postgresql::Server::Tablespace[$tablespace]->Postgresql::Server::Database[$name] + } +}