Puppet Class: postgresql::server::late_initdb

Defined in:
manifests/server/late_initdb.pp

Summary

Manage the default encoding when database initialization is managed by the package

Overview



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
# File 'manifests/server/late_initdb.pp', line 4

class postgresql::server::late_initdb {
  assert_private()

  $encoding       = $postgresql::server::encoding
  $user           = $postgresql::server::user
  $group          = $postgresql::server::group
  $psql_path      = $postgresql::server::psql_path
  $port           = $postgresql::server::port
  $module_workdir = $postgresql::server::module_workdir

  # Set the defaults for the postgresql_psql resource
  Postgresql_psql {
    psql_user  => $user,
    psql_group => $group,
    psql_path  => $psql_path,
    port       => $port,
    cwd        => $module_workdir,
  }

  # [workaround]
  # by default pg_createcluster encoding derived from locale
  # but it do does not work by installing postgresql via puppet because puppet
  # always override LANG to 'C'
  postgresql_psql { "Set template1 encoding to ${encoding}":
    command => "UPDATE pg_database
      SET datistemplate = FALSE
      WHERE datname = 'template1'
      ;
      UPDATE pg_database
      SET encoding = pg_char_to_encoding('${encoding}'), datistemplate = TRUE
      WHERE datname = 'template1'",
    unless  => "SELECT datname FROM pg_database WHERE
      datname = 'template1' AND encoding = pg_char_to_encoding('${encoding}')",
    before  => Anchor['postgresql::server::service::end'],
  }
}