Add actual postgresl module from puppetlabs
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / config / afterservice.pp
diff --git a/3rdparty/modules/postgresql/manifests/config/afterservice.pp b/3rdparty/modules/postgresql/manifests/config/afterservice.pp
new file mode 100644 (file)
index 0000000..a06444e
--- /dev/null
@@ -0,0 +1,44 @@
+# Class: postgresql::config::afterservice
+#
+# Parameters:
+#
+#   [*postgres_password*]     - postgres db user password.
+#
+# Actions:
+#
+# Requires:
+#
+# Usage:
+#   This class is not intended to be used directly; it is
+#   managed by postgresl::config.  It contains resources
+#   that should be handled *after* the postgres service
+#   has been started up.
+#
+#   class { 'postgresql::config::afterservice':
+#     postgres_password     => 'postgres'
+#   }
+#
+class postgresql::config::afterservice(
+  $postgres_password        = undef
+) inherits postgresql::params {
+  if ($postgres_password != undef) {
+    # NOTE: this password-setting logic relies on the pg_hba.conf being configured
+    #  to allow the postgres system user to connect via psql without specifying
+    #  a password ('ident' or 'trust' security).  This is the default
+    #  for pg_hba.conf.
+    exec { 'set_postgres_postgrespw':
+        # This command works w/no password because we run it as postgres system user
+        command     => "psql -c \"ALTER ROLE ${postgresql::params::user} PASSWORD '${postgres_password}'\"",
+        user        => $postgresql::params::user,
+        group       => $postgresql::params::group,
+        logoutput   => true,
+        cwd         => '/tmp',
+        # With this command we're passing -h to force TCP authentication, which does require
+        #  a password.  We specify the password via the PGPASSWORD environment variable.  If
+        #  the password is correct (current), this command will exit with an exit code of 0,
+        #  which will prevent the main command from running.
+        unless      => "env PGPASSWORD=\"${postgres_password}\" psql -h localhost -c 'select 1' > /dev/null",
+        path        => '/usr/bin:/usr/local/bin:/bin',
+    }
+  }
+}