8c2ae1fbbe037cfd1bfa03f878bbcd041763c6d5
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / server.pp
1 # Class: postgresql::server
2 #
3 # == Class: postgresql::server
4 # Manages the installation of the postgresql server.  manages the package and
5 # service.
6 #
7 # === Parameters:
8 # [*package_name*] - name of package
9 # [*service_name*] - name of service
10 #
11 # Configuration:
12 #   Advanced configuration setting parameters can be placed into 'postgresql_puppet_extras.conf' (located in the same
13 #   folder as 'postgresql.conf'). You can manage that file as a normal puppet file resource, or however you see fit;
14 #   which gives you complete control over the settings. Any value you specify in that file will override any existing
15 #   value set in the templated version.
16 #
17 # Actions:
18 #
19 # Requires:
20 #
21 # Sample Usage:
22 #
23 class postgresql::server (
24   $ensure           = 'present',
25   $package_name     = $postgresql::params::server_package_name,
26   $package_ensure   = 'present',
27   $service_name     = $postgresql::params::service_name,
28   $service_provider = $postgresql::params::service_provider,
29   $service_status   = $postgresql::params::service_status,
30   $config_hash      = {},
31   $datadir          = $postgresql::params::datadir
32 ) inherits postgresql::params {
33
34   if ($ensure == 'absent') {
35     service { 'postgresqld':
36       ensure    => stopped,
37       name      => $service_name,
38       enable    => false,
39       provider  => $service_provider,
40       hasstatus => true,
41       status    => $service_status,
42     }->
43     package { 'postgresql-server':
44       ensure  => purged,
45       name    => $package_name,
46       tag     => 'postgresql',
47     }->
48     file { $datadir:
49       ensure => absent,
50       recurse => true,
51       force => true,
52     }
53   } else {
54     package { 'postgresql-server':
55       ensure  => $package_ensure,
56       name    => $package_name,
57       tag     => 'postgresql',
58     }
59
60     $config_class = {
61       'postgresql::config' => $config_hash,
62     }
63
64     create_resources( 'class', $config_class )
65
66     service { 'postgresqld':
67       ensure    => running,
68       name      => $service_name,
69       enable    => true,
70       require   => Package['postgresql-server'],
71       provider  => $service_provider,
72       hasstatus => true,
73       status    => $service_status,
74     }
75
76     if ($postgresql::params::needs_initdb) {
77       include postgresql::initdb
78
79       Package['postgresql-server'] -> Class['postgresql::initdb'] -> Class['postgresql::config'] -> Service['postgresqld']
80     }
81     else  {
82       Package['postgresql-server'] -> Class['postgresql::config'] -> Service['postgresqld']
83     }
84
85     exec { 'reload_postgresql':
86       path        => '/usr/bin:/usr/sbin:/bin:/sbin',
87       command     => "service ${service_name} reload",
88       onlyif      => $service_status,
89       refreshonly => true,
90     }
91   }
92
93 }