Defined Type: postgresql::server::schema
- Defined in:
- manifests/server/schema.pp
Summary
Create a new schema.Overview
Note:
The database must exist and the PostgreSQL user should have enough privileges
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'manifests/server/schema.pp', line 15
define postgresql::server::schema (
String[1] $db = $postgresql::server::default_database,
Optional[String[1]] $owner = undef,
String[1] $schema = $title,
Hash $connect_settings = $postgresql::server::default_connect_settings,
) {
$user = $postgresql::server::user
$group = $postgresql::server::group
$psql_path = $postgresql::server::psql_path
$version = $postgresql::server::_version
$module_workdir = $postgresql::server::module_workdir
Postgresql::Server::Db <| dbname == $db |> -> Postgresql::Server::Schema[$name]
# If the connection settings do not contain a port, then use the local server port
if $connect_settings != undef and 'PGPORT' in $connect_settings {
$port = undef
} else {
$port = $postgresql::server::port
}
Postgresql_psql {
db => $db,
psql_user => $user,
psql_group => $group,
psql_path => $psql_path,
port => $port,
cwd => $module_workdir,
connect_settings => $connect_settings,
}
postgresql_psql { "${db}: CREATE SCHEMA \"${schema}\"":
command => "CREATE SCHEMA \"${schema}\"",
unless => "SELECT 1 FROM pg_namespace WHERE nspname = '${schema}'",
require => Class['postgresql::server'],
}
if $owner {
postgresql_psql { "${db}: ALTER SCHEMA \"${schema}\" OWNER TO \"${owner}\"":
command => "ALTER SCHEMA \"${schema}\" OWNER TO \"${owner}\"",
unless => "SELECT 1 FROM pg_namespace JOIN pg_roles rol ON nspowner = rol.oid WHERE nspname = '${schema}' AND rolname = '${owner}'",
require => Postgresql_psql["${db}: CREATE SCHEMA \"${schema}\""],
}
if defined(Postgresql::Server::Role[$owner]) {
Postgresql::Server::Role[$owner] -> Postgresql_psql["${db}: ALTER SCHEMA \"${schema}\" OWNER TO \"${owner}\""]
}
}
}
|