Add MongoDB as a Pacemaker resource when EnablePacemaker
authorYanis Guenane <yanis.guenane@enovance.com>
Tue, 28 Apr 2015 12:52:49 +0000 (14:52 +0200)
committerYanis Guenane <yanis.guenane@enovance.com>
Tue, 5 May 2015 07:55:05 +0000 (09:55 +0200)
This commit allows one to configure MongoDB as a pacemaker resource when
EnablePacemaker is set to true

Change-Id: Iedfba3eb851442d0ca3b8c0a7163a63285ab6071

puppet/manifests/overcloud_controller.pp

index d78f2d0..7ec2b1a 100644 (file)
@@ -69,6 +69,8 @@ if hiera('step') >= 1 {
         clone => true,
       }
     }
+
+    Class['::pacemaker::corosync'] -> Pacemaker::Resource::Systemd <| |>
   }
 
 }
@@ -82,7 +84,16 @@ if hiera('step') >= 2 {
   # MongoDB
   if downcase(hiera('ceilometer_backend')) == 'mongodb' {
     include ::mongodb::globals
-    include ::mongodb::server
+
+    if $enable_pacemaker {
+      $mongodb_service_ensure = undef
+    } else {
+      $mongodb_service_ensure = 'running'
+    }
+
+    class {'::mongodb::server' :
+      service_ensure => $mongodb_service_ensure,
+    }
     $mongo_node_ips = split(hiera('mongo_node_ips'), ',')
     $mongo_node_ips_with_port = suffix($mongo_node_ips, ':27017')
     $mongo_node_string = join($mongo_node_ips_with_port, ',')
@@ -90,6 +101,26 @@ if hiera('step') >= 2 {
     $mongodb_replset = hiera('mongodb::server::replset')
     $ceilometer_mongodb_conn_string = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
     if downcase(hiera('bootstrap_nodeid')) == $::hostname {
+
+      if $enable_pacemaker  {
+        pacemaker::resource::systemd { 'mongod' :
+          options => "op start timeout=120s",
+          clone   => true,
+          before  => Exec['mongodb-ready'],
+        }
+        # NOTE (spredzy) : The replset can only be run
+        # once all the nodes have joined the cluster.
+        $mongodb_cluster_ready_command = join(suffix(prefix($mongo_node_ips, '/bin/nc -w1 '), ' 27017 < /dev/null'), ' && ')
+        exec { 'mongodb-ready' :
+          command   => $mongodb_cluster_ready_command,
+          timeout   => 600,
+          tries     => 60,
+          try_sleep => 10,
+          before    => Mongodb_replset[$mongodb_replset],
+        }
+
+      }
+
       mongodb_replset { $mongodb_replset :
         members => $mongo_node_ips_with_port,
       }