db.pp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. $change_ownership = false,
  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. change_ownership => $change_ownership,
  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. if ! defined(Postgresql::Server::Database_grant["GRANT ${user} - ${grant} - ${dbname}"]) {
  36. postgresql::server::database_grant { "GRANT ${user} - ${grant} - ${dbname}":
  37. privilege => $grant,
  38. db => $dbname,
  39. role => $user,
  40. } -> Postgresql::Validate_db_connection<| database_name == $dbname |>
  41. }
  42. if($tablespace != undef and defined(Postgresql::Server::Tablespace[$tablespace])) {
  43. Postgresql::Server::Tablespace[$tablespace]->Postgresql::Server::Database[$name]
  44. }
  45. }