Defined Type: postgresql::db::extension

Defined in:
modules/postgresql/manifests/db/extension.pp

Overview

Parameters:

  • extname (Any)
  • database (Any)
  • ensure (Any) (defaults to: present)


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
# File 'modules/postgresql/manifests/db/extension.pp', line 1

define postgresql::db::extension (
    $extname,
    $database,
    $ensure = present,
) {

    $db_sql = "SELECT datname from pg_catalog.pg_database where datname = '${database}'"
    $db_exists = "/usr/bin/test -n \"\$( /usr/bin/psql -At -c \"${db_sql}\")\""

    $extension_sql = "SELECT extname FROM pg_extension WHERE extname = '${extname}'"
    $extension_exists = "/usr/bin/test -n \"\$( /usr/bin/psql -At -d ${database} -c \"${extension_sql}\")\""

    case $ensure {
        absent: {
            exec { "drop_extension_${extname}_on_${database}":
                command => "/usr/bin/psql -d ${database} -c \"DROP EXTENSION ${extname};\"",
                user    => 'postgres',
                onlyif  => "${db_exists} && ${extension_exists}",
            }
        }
        default: {
            exec { "create_extension_${extname}_on_${database}":
                command => "/usr/bin/psql -d ${database} -c \"CREATE EXTENSION ${extname};\"",
                user    => 'postgres',
                unless  => "${db_exists} && ${extension_exists}",
            }
        }
    }
}