puppet: implement MongoDB on controller nodes
authorEmilien Macchi <emilien@redhat.com>
Wed, 18 Mar 2015 16:01:20 +0000 (12:01 -0400)
committerYanis Guenane <yanis.guenane@enovance.com>
Tue, 14 Apr 2015 13:55:01 +0000 (15:55 +0200)
This patch aims to configure MongoDB server on controller nodes with
Puppet.
It also create a default replicaset for Ceilometer, so MongoDB can be
highly available when multiple controllers are run.

Change-Id: I3c1ff06ebc3c9dac44fc790caaea711d0eba4bb7

puppet/controller-puppet.yaml
puppet/hieradata/controller.yaml
puppet/manifests/overcloud_controller.pp

index 780c8cf..fedfe93 100644 (file)
@@ -719,7 +719,8 @@ resources:
                 keystone::public_bind_host: {get_input: controller_host}
                 keystone::admin_bind_host: {get_input: controller_host}
                 keystone::debug: {get_input: debug}
-
+                # MongoDB
+                mongodb::server::bind_ip: {get_input: controller_host}
                 # MySQL
                 admin_password: {get_input: admin_password}
                 enable_galera: {get_input: enable_galera}
index 47f358a..523e9db 100644 (file)
@@ -11,6 +11,8 @@ rabbitmq::port: '5672'
 rabbitmq::package_source: undef
 rabbitmq::repos_ensure: false
 
+mongodb::server::replset: tripleo
+
 # service tenant
 nova::api::admin_tenant_name: 'service'
 glance::api::keystone_tenant: 'service'
index 3e3f2e7..0541fa4 100644 (file)
@@ -39,6 +39,21 @@ if hiera('step') >= 2 {
     include ::ntp
   }
 
+  # MongoDB
+  include ::mongodb::globals
+  include ::mongodb::server
+  $mongo_node_ips = split(downcase(hiera('mongo_node_ips')), ',')
+  $mongo_node_ips_with_port = suffix($mongo_node_ips, ':27017')
+
+  if count($mongo_node_ips) > 1 {
+    if downcase($::hostname) == hiera('bootstrap_nodeid') {
+      $mongodb_replset = hiera('mongodb::server::replset')
+      mongodb_replset { $mongodb_replset :
+        members => $mongo_node_ips_with_port,
+      }
+    }
+  }
+
   if str2bool(hiera('enable_galera', 'true')) {
     $mysql_config_file = '/etc/my.cnf.d/galera.cnf'
   } else {