+++ /dev/null
-# Define: postgresql::db
-#
-# This module creates database instances, a user, and grants that user
-# privileges to the database.
-#
-# Since it requires class postgresql::server, we assume to run all commands as the
-# postgresql user against the local postgresql server.
-#
-# TODO: support an array of privileges for "grant"; currently only supports a single
-# privilege, which is pretty useless unless that privilege is "ALL"
-#
-# Parameters:
-# [*title*] - postgresql database name.
-# [*user*] - username to create and grant access.
-# [*password*] - user's password. may be md5-encoded, in the format returned by the "postgresql_password"
-# function in this module
-# [*charset*] - database charset. defaults to 'utf8'
-# [*grant*] - privilege to grant user. defaults to 'all'.
-# [*tablespace*] - database tablespace. default to use the template database's tablespace.
-# [*locale*] - locale for database. defaults to 'undef' (effectively 'C').
-#
-# Actions:
-#
-# Requires:
-#
-# class postgresql::server
-#
-# Sample Usage:
-#
-# postgresql::db { 'mydb':
-# user => 'my_user',
-# password => 'password',
-# grant => 'all'
-# }
-#
-define postgresql::db (
- $user,
- $password,
- $charset = $postgresql::params::charset,
- $locale = $postgresql::params::locale,
- $grant = 'ALL',
- $tablespace = undef,
- $istemplate = false
-) {
- include postgresql::params
-
- postgresql::database { $name:
- # TODO: ensure is not yet supported
- #ensure => present,
- charset => $charset,
- tablespace => $tablespace,
- #provider => 'postgresql',
- require => Class['postgresql::server'],
- locale => $locale,
- istemplate => $istemplate,
- }
-
- if ! defined(Postgresql::Database_user[$user]) {
- postgresql::database_user { $user:
- # TODO: ensure is not yet supported
- #ensure => present,
- password_hash => $password,
- #provider => 'postgresql',
- require => Postgresql::Database[$name],
- }
- }
-
- postgresql::database_grant { "GRANT ${user} - ${grant} - ${name}":
- privilege => $grant,
- db => $name,
- role => $user,
- #provider => 'postgresql',
- require => [Postgresql::Database[$name], Postgresql::Database_user[$user]],
- }
-
-}