Defined Type: postgresql::db

Defined in:
manifests/db.pp

Overview

Parameters:

  • owner (Any)
  • dbname (Any) (defaults to: $name)
  • port (Any) (defaults to: $postgresql::port)
  • pgbouncer_tag (Any) (defaults to: undef)
  • pgbouncer_addr (Any) (defaults to: '127.0.0.1')
  • pgbouncer_auth_user (Any) (defaults to: 'pgbouncer')
  • pgbouncer_enable_get_auth (Any) (defaults to: true)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'manifests/db.pp', line 1

define postgresql::db (
                        $owner,
                        $dbname                    = $name,
                        $port                      = $postgresql::port,
                        $pgbouncer_tag             = undef,
                        $pgbouncer_addr            = '127.0.0.1',
                        $pgbouncer_auth_user       = 'pgbouncer',
                        $pgbouncer_enable_get_auth = true,
                      ) {

  Postgresql_psql {
    port => $port,
  }

  postgresql_psql { "CREATE DATABASE ${dbname}":
    command => "CREATE DATABASE ${dbname} OWNER ${owner}",
    unless  => "SELECT datname FROM pg_database WHERE datname='${dbname}'",
    require => [ Postgresql::Role[$owner], Class['::postgresql::service'] ],
  }

  postgresql_psql { "ALTER DATABASE ${dbname} OWNER TO ${owner}":
    command => "ALTER DATABASE \"${dbname}\" OWNER TO ${owner}",
    unless  => "SELECT 1 FROM pg_database JOIN pg_roles rol ON datdba = rol.oid WHERE datname = '${dbname}' AND rolname = '${owner}'",
    require => Postgresql_psql["CREATE DATABASE ${dbname}"],
  }

  if defined(Postgresql::Role[$owner])
  {
    Postgresql::Role[$owner] -> Postgresql_psql["ALTER DATABASE ${dbname} OWNER TO ${owner}"]
  }

  if($pgbouncer_tag!=undef)
  {
    @postgresql::pgbouncer::database { "pgbouncer-${dbname}-${pgbouncer_addr}-${pgbouncer_tag}":
      host            => $pgbouncer_addr,
      auth_user       => $pgbouncer_auth_user,
      port            => $port,
      database        => $dbname,
      remote_database => $dbname,
      tag             => $pgbouncer_tag,
      enable_get_auth => $pgbouncer_enable_get_auth,
    }
  }
}