Add support for autofencing to Pacemaker Remote.
authorChris Jones <cmsj@tenshu.net>
Tue, 25 Apr 2017 15:05:27 +0000 (16:05 +0100)
committerChris Jones <cmsj@tenshu.net>
Tue, 13 Jun 2017 08:41:26 +0000 (08:41 +0000)
We now configure stonith devices for Pacemaker Remote nodes.

Change-Id: I87c60bd56feac6dedc00a3c458b805aa9b71d9ce
Depends-On: Ifb4d19a6b9920b0e340555d6441878c7234eb197
Partial-Bug: #1686115
(cherry picked from commit 19d177c182f35a16bf3ddccfcf7fad6bb54c7bb2)

manifests/profile/base/pacemaker_remote.pp

index e0fff63..dfe0a3e 100644 (file)
 #   Authkey for pacemaker remote nodes
 #   Defaults to unset
 #
+# [*pcs_tries*]
+#   (Optional) The number of times pcs commands should be retried.
+#   Defaults to hiera('pcs_tries', 20)
+#
+# [*enable_fencing*]
+#   (Optional) Whether or not to manage stonith devices for nodes
+#   Defaults to hiera('enable_fencing', false)
+#
 # [*step*]
 #   (Optional) The current step in deployment. See tripleo-heat-templates
 #   for more details.
 #
 class tripleo::profile::base::pacemaker_remote (
   $remote_authkey,
+  $pcs_tries      = hiera('pcs_tries', 20),
+  $enable_fencing = hiera('enable_fencing', false),
   $step           = hiera('step'),
 ) {
   class { '::pacemaker::remote':
     remote_authkey => $remote_authkey,
   }
+  $enable_fencing_real = str2bool($enable_fencing) and $step >= 5
+
+  class { '::pacemaker::stonith':
+    disable => !$enable_fencing_real,
+    tries   => $pcs_tries,
+  }
+
+  if $enable_fencing_real {
+    include ::tripleo::fencing
+
+    # enable stonith after all Pacemaker resources have been created
+    Pcmk_resource<||> -> Class['tripleo::fencing']
+    Pcmk_constraint<||> -> Class['tripleo::fencing']
+    Exec <| tag == 'pacemaker_constraint' |> -> Class['tripleo::fencing']
+    # enable stonith after all fencing devices have been created
+    Class['tripleo::fencing'] -> Class['pacemaker::stonith']
+  }
 }