From e1b6f95e327f5c4a84d21ef8f3323072926f4b80 Mon Sep 17 00:00:00 2001
From: Riccardo Bucchi <riccardo.bucchi@cnaf.infn.it>
Date: Tue, 27 Oct 2015 16:50:36 +0000
Subject: [PATCH] added haproxy members for openstack

---
 examples/hieradata/common.yaml |   1 -
 manifests/profile/glance.pp    |   2 +-
 manifests/profile/haproxy.pp   | 365 ++++++++++++++++++++++++++++-----
 manifests/role/rhmk.pp         |   6 +
 4 files changed, 320 insertions(+), 54 deletions(-)

diff --git a/examples/hieradata/common.yaml b/examples/hieradata/common.yaml
index b25682b..7c1956f 100644
--- a/examples/hieradata/common.yaml
+++ b/examples/hieradata/common.yaml
@@ -74,7 +74,6 @@ ceph::profile::params::bootstrap_mds_key: 'AQApksZUIJhXJxAAEHVW/dbL1OeLA7Om++zdV
 ceph::profile::params::osd_journal_size: '5120'
 
 # Galera MySQL
-iaas::mysql::allowed_hosts: ["<ALLOWED_HOST1>", "<ALLOWED_HOST2>", "<ALLOWED_HOST3>"]
 iaas::mysql::keystone::user: keystone
 iaas::mysql::keystone::password: keystone
 iaas::mysql::glance::user: glance
diff --git a/manifests/profile/glance.pp b/manifests/profile/glance.pp
index 0f4addc..63235c7 100644
--- a/manifests/profile/glance.pp
+++ b/manifests/profile/glance.pp
@@ -71,7 +71,7 @@ class iaas::profile::glance (
     bind_host => $::facts["ipaddress_${admin_interface}"],
   }
 
-  class { '::glance::notify::rabbitmqha':
+  class { '::glance::notify::rabbitmq':
     rabbit_userid => $rabbitmq_user,
     rabbit_password => $rabbitmq_password,
 ##rabbit_hosts - uncomment as needed
diff --git a/manifests/profile/haproxy.pp b/manifests/profile/haproxy.pp
index 94b76e7..f5d0435 100644
--- a/manifests/profile/haproxy.pp
+++ b/manifests/profile/haproxy.pp
@@ -6,6 +6,9 @@ class iaas::profile::haproxy (
   $stats_password = undef,
   $stats_uri = undef,
   $servers = undef,
+  $vip = undef,
+  $controller_hosts = undef,
+  $controller_ips = undef,
 ) {
   class { '::haproxy':
     defaults_options => {
@@ -32,7 +35,7 @@ class iaas::profile::haproxy (
 
   if stats_enabled {
     haproxy::listen { 'stats':
-      ipaddress => '0.0.0.0',
+      ipaddress => $vip,
       mode => 'http',
       ports => $stats_ports,
       options => {
@@ -49,7 +52,7 @@ class iaas::profile::haproxy (
   }
 
   haproxy::listen { 'percona_cluster':
-    ipaddress => '0.0.0.0',
+    ipaddress => $vip,
     mode => 'tcp',
     ports => '3306',
     options => {
@@ -78,69 +81,327 @@ class iaas::profile::haproxy (
        options           => 'check port 9200 backup',
      }
   }
-  
-  haproxy::listen { 'mysql_cluster_nova':
-    ipaddress => '0.0.0.0',
-    mode => 'tcp',
-    ports => '7306',
+
+ haproxy::listen { 'keystone_admin_cluster':
+    ipaddress => $vip,
+    ports => '35357',
     options => {
       'option' => ['httpchk','tcpka'],
-      'balance' => 'leastconn',
-      'timeout' => [
-         'client 90m',
-         'server 90m',
-       ],
+      'balance' => 'source',
     }
   }
 
-  if $servers != undef { 
-     haproxy::balancermember { 'mysql_cluster_nova_prior':
-       listening_service => 'mysql_cluster_nova',
-       ports             => '3307',
-       server_names      => $servers[priority_hostname],
-       ipaddresses       => $servers[priority_ip],
-       options           => 'check port 9200',
-     }
-     haproxy::balancermember { 'mysql_cluster_nova_secondaries':
-       listening_service => 'mysql_cluster_nova',
-       ports             => '3307',
-       server_names      => $servers[hostnames], 
-       ipaddresses       => $servers[ips], 
-       options           => 'check port 9200 backup',
-     }
+  haproxy::balancermember { 'keystone_admin_cluster':
+     listening_service => 'keystone_admin_cluster',
+     ports             => '35357',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
   }
-  
-  haproxy::listen { 'mysql_cluster_neutron':
-    ipaddress => '0.0.0.0',
-    mode => 'tcp',
-    ports => '9306',
+
+
+ haproxy::listen { 'keystone_api_cluster':
+    ipaddress => $vip,
+    ports => '5000',
     options => {
       'option' => ['httpchk','tcpka'],
-      'balance' => 'leastconn',
-      'timeout' => [
-         'client 90m',
-         'server 90m',
-       ],
+      'balance' => 'source',
     }
   }
 
-  if $servers != undef { 
-     haproxy::balancermember { 'mysql_cluster_neutron_prior':
-       listening_service => 'mysql_cluster_neutron',
-       ports             => '3307',
-       server_names      => $servers[priority_hostname],
-       ipaddresses       => $servers[priority_ip],
-       options           => 'check port 9200',
-     }
-     haproxy::balancermember { 'mysql_cluster_neutron_secondaries':
-       listening_service => 'mysql_cluster_neutron',
-       ports             => '3307',
-       server_names      => $servers[hostnames], 
-       ipaddresses       => $servers[ips], 
-       options           => 'check port 9200 backup',
-     }
+  haproxy::balancermember { 'keystone_api_cluster':
+     listening_service => 'keystone_api_cluster',
+     ports             => '5000',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'glance_api_cluster':
+    ipaddress => $vip,
+    ports => '9292',
+    options => {
+      'option' => ['httpchk','tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'glance_api_cluster':
+     listening_service => 'glance_api_cluster',
+     ports             => '9292',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+
+ haproxy::listen { 'glance_registry_cluster':
+    ipaddress => $vip,
+    ports => '9191',
+    options => {
+      'option' => ['tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'glance_registry_cluster':
+     listening_service => 'glance_registry_cluster',
+     ports             => '9191',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
   }
 
+ haproxy::listen { 'cinder_api_cluster':
+    ipaddress => $vip,
+    ports => '8776',
+    options => {
+      'option' => ['httpchk','tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'cinder_api_cluster':
+     listening_service => 'cinder_api_cluster',
+     ports             => '8776',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'nova_api_cluster':
+    ipaddress => $vip,
+    ports => '8774',
+    options => {
+      'option' => ['httpchk','tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'nova_api_cluster':
+     listening_service => 'nova_api_cluster',
+     ports             => '8774',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'nova_metadata_api_cluster':
+    ipaddress => $vip,
+    ports => '8775',
+    options => {
+      'option' => ['tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'nova_metadata_api_cluster':
+     listening_service => 'nova_metadata_api_cluster',
+     ports             => '8775',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'nova_novncproxy_cluster':
+    ipaddress => $vip,
+    ports => '6080',
+    options => {
+      'option' => ['tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'nova_novncproxy_cluster':
+     listening_service => 'nova_novncproxy_cluster',
+     ports             => '6080',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'nova_ec2_api_cluster':
+    ipaddress => $vip,
+    ports => '8773',
+    options => {
+      'option' => ['tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'nova_ec2_api_cluster':
+     listening_service => 'nova_ec2_api_cluster',
+     ports             => '8773',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'neutron_api_cluster':
+    ipaddress => $vip,
+    ports => '9696',
+    options => {
+      'option' => ['httpchk','tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'neutron_api_cluster':
+     listening_service => 'neutron_api_cluster',
+     ports             => '9696',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'heat_api_cluster':
+    ipaddress => $vip,
+    ports => '8004',
+    options => {
+      'option' => ['httpchk','tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'heat_api_cluster':
+     listening_service => 'heat_api_cluster',
+     ports             => '8004',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'heat_api_cfn_cluster':
+    ipaddress => $vip,
+    ports => '8000',
+    options => {
+      'option' => ['httpchk','tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'heat_api_cfn_cluster':
+     listening_service => 'heat_api_cfn_cluster',
+     ports             => '8000',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'heat_api_watch_cluster':
+    ipaddress => $vip,
+    ports => '8003',
+    options => {
+      'option' => ['httpchk','tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'heat_api_watch_cluster':
+     listening_service => 'heat_api_watch_cluster',
+     ports             => '8003',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'ceilometer_api_cluster':
+    ipaddress => $vip,
+    ports => '8777',
+    options => {
+      'option' => ['tcpka'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'ceilometer_api_cluster':
+     listening_service => 'ceilometer_api_cluster',
+     ports             => '8777',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+
+ haproxy::listen { 'horizon_cluster':
+    ipaddress => $vip,
+    mode => 'http',
+    ports => '80',
+    options => {
+      'option' => ['httpchk','httpclose','forwardfor'],
+      'balance' => 'source',
+    }
+  }
+
+  haproxy::balancermember { 'horizon_cluster':
+     listening_service => 'horizon_cluster',
+     ports             => '80',
+     server_names      => $controller_hosts,
+     ipaddresses       => $controller_ips,
+     options           => 'check inter 2000 rise 2 fall 5',
+  }
+#  
+#  haproxy::listen { 'mysql_cluster_nova':
+#    ipaddress => '0.0.0.0',
+#    mode => 'tcp',
+#    ports => '7306',
+#    options => {
+#      'option' => ['httpchk','tcpka'],
+#      'balance' => 'leastconn',
+#      'timeout' => [
+#         'client 90m',
+#         'server 90m',
+#       ],
+#    }
+#  }
+#
+#  if $servers != undef { 
+#     haproxy::balancermember { 'mysql_cluster_nova_prior':
+#       listening_service => 'mysql_cluster_nova',
+#       ports             => '3307',
+#       server_names      => $servers[priority_hostname],
+#       ipaddresses       => $servers[priority_ip],
+#       options           => 'check port 9200',
+#     }
+#     haproxy::balancermember { 'mysql_cluster_nova_secondaries':
+#       listening_service => 'mysql_cluster_nova',
+#       ports             => '3307',
+#       server_names      => $servers[hostnames], 
+#       ipaddresses       => $servers[ips], 
+#       options           => 'check port 9200 backup',
+#     }
+#  }
+#  
+#  haproxy::listen { 'mysql_cluster_neutron':
+#    ipaddress => '0.0.0.0',
+#    mode => 'tcp',
+#    ports => '9306',
+#    options => {
+#      'option' => ['httpchk','tcpka'],
+#      'balance' => 'leastconn',
+#      'timeout' => [
+#         'client 90m',
+#         'server 90m',
+#       ],
+#    }
+#  }
+#
+#  if $servers != undef { 
+#     haproxy::balancermember { 'mysql_cluster_neutron_prior':
+#       listening_service => 'mysql_cluster_neutron',
+#       ports             => '3307',
+#       server_names      => $servers[priority_hostname],
+#       ipaddresses       => $servers[priority_ip],
+#       options           => 'check port 9200',
+#     }
+#     haproxy::balancermember { 'mysql_cluster_neutron_secondaries':
+#       listening_service => 'mysql_cluster_neutron',
+#       ports             => '3307',
+#       server_names      => $servers[hostnames], 
+#       ipaddresses       => $servers[ips], 
+#       options           => 'check port 9200 backup',
+#     }
+#  }
+
 # haproxy::listen { 'rabbitmq':
  #   ipaddress => '0.0.0.0',
  #   mode => 'tcp',
diff --git a/manifests/role/rhmk.pp b/manifests/role/rhmk.pp
index 70c5a3c..8bd05b1 100644
--- a/manifests/role/rhmk.pp
+++ b/manifests/role/rhmk.pp
@@ -6,6 +6,9 @@ class iaas::role::rhmk(
     $mysql_users = undef,
     $mysql_databases = undef,
     $mysql_grants = undef,
+    $haproxy_controller_hosts = undef,
+    $haproxy_controller_ips = undef,
+    $vip = undef,
   ) {
   # Base
   class { 'iaas::profile::base': } ->
@@ -17,6 +20,9 @@ class iaas::role::rhmk(
   }-> 
   class { 'iaas::profile::haproxy':
     servers => $ha_servers,
+    controller_hosts => $haproxy_controller_hosts,
+    controller_ips => $haproxy_controller_ips,
+    vip => $vip,
   }
   class { 'iaas::profile::keepalived':
     state => $keepalived_state,
-- 
GitLab