newer pg module
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / globals.pp
diff --git a/3rdparty/modules/postgresql/manifests/globals.pp b/3rdparty/modules/postgresql/manifests/globals.pp
new file mode 100644 (file)
index 0000000..36e61af
--- /dev/null
@@ -0,0 +1,157 @@
+# Class for setting cross-class global overrides. See README.md for more
+# details.
+class postgresql::globals (
+  $client_package_name      = undef,
+  $server_package_name      = undef,
+  $contrib_package_name     = undef,
+  $devel_package_name       = undef,
+  $java_package_name        = undef,
+  $docs_package_name        = undef,
+  $perl_package_name        = undef,
+  $plperl_package_name      = undef,
+  $plpython_package_name    = undef,
+  $python_package_name      = undef,
+  $postgis_package_name     = undef,
+
+  $service_name             = undef,
+  $service_provider         = undef,
+  $service_status           = undef,
+  $default_database         = undef,
+
+  $validcon_script_path     = undef,
+
+  $initdb_path              = undef,
+  $createdb_path            = undef,
+  $psql_path                = undef,
+  $pg_hba_conf_path         = undef,
+  $pg_ident_conf_path       = undef,
+  $postgresql_conf_path     = undef,
+  $recovery_conf_path       = undef,
+  $default_connect_settings = {},
+
+  $pg_hba_conf_defaults     = undef,
+
+  $datadir                  = undef,
+  $confdir                  = undef,
+  $bindir                   = undef,
+  $xlogdir                  = undef,
+  $logdir                   = undef,
+  $log_line_prefix          = undef,
+
+  $user                     = undef,
+  $group                    = undef,
+
+  $version                  = undef,
+  $postgis_version          = undef,
+  $repo_proxy               = undef,
+  $repo_baseurl             = undef,
+
+  $needs_initdb             = undef,
+
+  $encoding                 = undef,
+  $locale                   = undef,
+  $data_checksums           = undef,
+  $timezone                 = undef,
+
+  $manage_pg_hba_conf       = undef,
+  $manage_pg_ident_conf     = undef,
+  $manage_recovery_conf     = undef,
+
+  $manage_package_repo      = undef,
+  $module_workdir           = undef,
+) {
+  # We are determining this here, because it is needed by the package repo
+  # class.
+  $default_version = $::osfamily ? {
+    /^(RedHat|Linux)/ => $::operatingsystem ? {
+      'Fedora' => $::operatingsystemrelease ? {
+        /^(24|25)$/    => '9.5',
+        /^(22|23)$/    => '9.4',
+        /^(21)$/       => '9.3',
+        /^(18|19|20)$/ => '9.2',
+        /^(17)$/       => '9.1',
+        default        => undef,
+      },
+      'Amazon' => '9.2',
+      default => $::operatingsystemrelease ? {
+        /^7\./ => '9.2',
+        /^6\./ => '8.4',
+        /^5\./ => '8.1',
+        default => undef,
+      },
+    },
+    'Debian' => $::operatingsystem ? {
+      'Debian' => $::operatingsystemrelease ? {
+        /^(squeeze|6\.)/ => '8.4',
+        /^(wheezy|7\.)/  => '9.1',
+        /^(jessie|8\.)/  => '9.4',
+        /^(stretch|9\.)/ => '9.6',
+        default => undef,
+      },
+      'Ubuntu' => $::operatingsystemrelease ? {
+        /^(10.04|10.10|11.04)$/ => '8.4',
+        /^(11.10|12.04|12.10|13.04|13.10)$/ => '9.1',
+        /^(14.04)$/ => '9.3',
+        /^(14.10|15.04|15.10)$/ => '9.4',
+        /^(16.04|16.10)$/ => '9.5',
+        default => undef,
+      },
+      default => undef,
+    },
+    'Archlinux' => $::operatingsystem ? {
+      /Archlinux/ => '9.2',
+      default => '9.2',
+    },
+    'Gentoo' => '9.5',
+    'FreeBSD' => '93',
+    'OpenBSD' => $::operatingsystemrelease ? {
+      /5\.6/ => '9.3',
+      /5\.[7-9]/ => '9.4',
+      /6\.[0-9]/ => '9.5',
+    },
+    'Suse' => $::operatingsystem ? {
+      'SLES' => $::operatingsystemrelease ? {
+        /11\.[0-4]/ => '91',
+        /12\.0/     => '93',
+        default     => '94',
+      },
+      'OpenSuSE' => $::operatingsystemrelease ? {
+        default => '94',
+      },
+      default => undef,
+    },
+    default => undef,
+  }
+  $globals_version = pick($version, $default_version, 'unknown')
+  if($globals_version == 'unknown') {
+    fail('No preferred version defined or automatically detected.')
+  }
+
+  $default_postgis_version = $globals_version ? {
+    '8.1'   => '1.3.6',
+    '8.4'   => '2.0',
+    '9.0'   => '2.1',
+    '9.1'   => '2.1',
+    '91'    => '2.1',
+    '9.2'   => '2.3',
+    '9.3'   => '2.3',
+    '93'    => '2.3',
+    '9.4'   => '2.3',
+    '9.5'   => '2.3',
+    '9.6'   => '2.3',
+    default => undef,
+  }
+  $globals_postgis_version = $postgis_version ? {
+    undef   => $default_postgis_version,
+    default => $postgis_version,
+  }
+
+  # Setup of the repo only makes sense globally, so we are doing this here.
+  if($manage_package_repo) {
+    class { 'postgresql::repo':
+      version => $globals_version,
+      proxy   => $repo_proxy,
+      baseurl => $repo_baseurl,
+    }
+  }
+}