Add actual postgresl module from puppetlabs
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / server.pp
diff --git a/3rdparty/modules/postgresql/manifests/server.pp b/3rdparty/modules/postgresql/manifests/server.pp
new file mode 100644 (file)
index 0000000..8c2ae1f
--- /dev/null
@@ -0,0 +1,93 @@
+# Class: postgresql::server
+#
+# == Class: postgresql::server
+# Manages the installation of the postgresql server.  manages the package and
+# service.
+#
+# === Parameters:
+# [*package_name*] - name of package
+# [*service_name*] - name of service
+#
+# Configuration:
+#   Advanced configuration setting parameters can be placed into 'postgresql_puppet_extras.conf' (located in the same
+#   folder as 'postgresql.conf'). You can manage that file as a normal puppet file resource, or however you see fit;
+#   which gives you complete control over the settings. Any value you specify in that file will override any existing
+#   value set in the templated version.
+#
+# Actions:
+#
+# Requires:
+#
+# Sample Usage:
+#
+class postgresql::server (
+  $ensure           = 'present',
+  $package_name     = $postgresql::params::server_package_name,
+  $package_ensure   = 'present',
+  $service_name     = $postgresql::params::service_name,
+  $service_provider = $postgresql::params::service_provider,
+  $service_status   = $postgresql::params::service_status,
+  $config_hash      = {},
+  $datadir          = $postgresql::params::datadir
+) inherits postgresql::params {
+
+  if ($ensure == 'absent') {
+    service { 'postgresqld':
+      ensure    => stopped,
+      name      => $service_name,
+      enable    => false,
+      provider  => $service_provider,
+      hasstatus => true,
+      status    => $service_status,
+    }->
+    package { 'postgresql-server':
+      ensure  => purged,
+      name    => $package_name,
+      tag     => 'postgresql',
+    }->
+    file { $datadir:
+      ensure => absent,
+      recurse => true,
+      force => true,
+    }
+  } else {
+    package { 'postgresql-server':
+      ensure  => $package_ensure,
+      name    => $package_name,
+      tag     => 'postgresql',
+    }
+
+    $config_class = {
+      'postgresql::config' => $config_hash,
+    }
+
+    create_resources( 'class', $config_class )
+
+    service { 'postgresqld':
+      ensure    => running,
+      name      => $service_name,
+      enable    => true,
+      require   => Package['postgresql-server'],
+      provider  => $service_provider,
+      hasstatus => true,
+      status    => $service_status,
+    }
+
+    if ($postgresql::params::needs_initdb) {
+      include postgresql::initdb
+
+      Package['postgresql-server'] -> Class['postgresql::initdb'] -> Class['postgresql::config'] -> Service['postgresqld']
+    }
+    else  {
+      Package['postgresql-server'] -> Class['postgresql::config'] -> Service['postgresqld']
+    }
+
+    exec { 'reload_postgresql':
+      path        => '/usr/bin:/usr/sbin:/bin:/sbin',
+      command     => "service ${service_name} reload",
+      onlyif      => $service_status,
+      refreshonly => true,
+    }
+  }
+
+}