--- /dev/null
+# 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,
+ }
+ }
+
+}