newer pg module
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / server / db.pp
1 # Define for conveniently creating a role, database and assigning the correct
2 # permissions. See README.md for more details.
3 define postgresql::server::db (
4   $user,
5   $password,
6   $comment    = undef,
7   $dbname     = $title,
8   $encoding   = $postgresql::server::encoding,
9   $locale     = $postgresql::server::locale,
10   $grant      = 'ALL',
11   $tablespace = undef,
12   $template   = 'template0',
13   $istemplate = false,
14   $owner      = undef
15 ) {
16
17   if ! defined(Postgresql::Server::Database[$dbname]) {
18     postgresql::server::database { $dbname:
19       comment    => $comment,
20       encoding   => $encoding,
21       tablespace => $tablespace,
22       template   => $template,
23       locale     => $locale,
24       istemplate => $istemplate,
25       owner      => $owner,
26     }
27   }
28
29   if ! defined(Postgresql::Server::Role[$user]) {
30     postgresql::server::role { $user:
31       password_hash => $password,
32       before        => Postgresql::Server::Database[$dbname],
33     }
34   }
35
36   if ! defined(Postgresql::Server::Database_grant["GRANT ${user} - ${grant} - ${dbname}"]) {
37     postgresql::server::database_grant { "GRANT ${user} - ${grant} - ${dbname}":
38       privilege => $grant,
39       db        => $dbname,
40       role      => $user,
41     } -> Postgresql_conn_validator<| db_name == $dbname |>
42   }
43
44   if($tablespace != undef and defined(Postgresql::Server::Tablespace[$tablespace])) {
45     Postgresql::Server::Tablespace[$tablespace]->Postgresql::Server::Database[$name]
46   }
47 }