Defined Type: postgresql::extension

Defined in:
manifests/extension.pp

Overview

Define: postgresql::extension

This class manage postgresql extension.

Parameters:

extensionname

Name of the extension (Default: $name)

database

(Default: ”)

absent

Set to ‘true’ to remove the extension (Default: false)

Example:

  • create database named “my_bd” owned by “my_bd”

    postgresql::db { ‘my_bd’: }

  • create database named “my_bd” owned by “root”

    postgresql::db { ‘my_bd’:

    owner => 'root',
    

    }

  • remove a database named ‘my_bd’

    postgresql::db { ‘my_bd’:

    absent => true,
    

    }

Parameters:

  • extensionname (Any) (defaults to: $name)
  • database (Any) (defaults to: '')
  • absent (Any) (defaults to: false)


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'manifests/extension.pp', line 36

define postgresql::extension(
  $extensionname = $name,
  $database      = '',
  $absent        = false
) {

  include 'postgresql'

  $bool_absent = any2bool($absent)

  $create_query = "CREATE EXTENSION ${extensionname};"
  $drop_query = "DROP EXTENSION ${extensionname};"

  $db_command = $bool_absent ? {
    true    => "echo \"${drop_query}\" | psql ${database}",
    default => "echo \"${create_query}\" | psql ${database}",
  }
  $cmd = "echo \\\\dx|psql ${database}|tail -n +4|awk '{print \$1}'|grep '^${extensionname}$'"
  $db_unless = $bool_absent ? {
    true  => undef,
    false => $cmd,
  }
  $db_onlyif = $bool_absent ? {
    true  => $cmd,
    false => undef,
  }

  $manage_require = $database ? {
    ''      => Package['postgresql'],
    default => [
      Postgresql::Db[$database],
      Package['postgresql']
    ],
  }

  exec { "postgres-manage-extension-${name}":
    user    => $postgresql::process_user,
    path    => '/usr/bin:/bin:/usr/bin:/sbin',
    unless  => $db_unless,
    onlyif  => $db_onlyif,
    command => $db_command,
    require => $manage_require,
  }
}