Merge "Add golden configuration sizing and placement classes"
diff --git a/galera/server/database/ssl/octavia.yml b/galera/server/database/ssl/octavia.yml
new file mode 100644
index 0000000..a41c202
--- /dev/null
+++ b/galera/server/database/ssl/octavia.yml
@@ -0,0 +1,4 @@
+parameters:
+  _param:
+    mysql_octavia_ssl_option:
+      - SSL: True
diff --git a/galera/server/database/x509/octavia.yml b/galera/server/database/x509/octavia.yml
new file mode 100644
index 0000000..3c69bc7
--- /dev/null
+++ b/galera/server/database/x509/octavia.yml
@@ -0,0 +1,7 @@
+parameters:
+  _param:
+    mysql_octavia_client_ssl_x509_subject: '/C=cz/CN=mysql-octavia-client/L=Prague/O=Mirantis'
+    mysql_octavia_client_ssl_x509_issuer: '/C=cz/CN=Salt Master CA/L=Prague/O=Mirantis'
+    mysql_octavia_ssl_option:
+      - SUBJECT: ${_param:mysql_octavia_client_ssl_x509_subject}
+      - ISSUER: ${_param:mysql_octavia_client_ssl_x509_issuer}
diff --git a/octavia/api/cluster.yml b/octavia/api/cluster.yml
index 5b0f0ca..66622e3 100644
--- a/octavia/api/cluster.yml
+++ b/octavia/api/cluster.yml
@@ -1,5 +1,7 @@
 classes:
 - service.octavia.api.cluster
+- system.salt.minion.cert.mysql.clients.openstack.octavia
+- system.salt.minion.cert.rabbitmq.clients.openstack.octavia
 - system.haproxy.proxy.listen.openstack.octavia
 parameters:
   octavia:
@@ -10,8 +12,22 @@
         address: ${_param:cluster_local_address}
       database:
         host: ${_param:openstack_database_address}
+        x509:
+          enabled: ${_param:openstack_mysql_x509_enabled}
+          ca_file: ${_param:mysql_octavia_ssl_ca_file}
+          key_file: ${_param:mysql_octavia_client_ssl_key_file}
+          cert_file: ${_param:mysql_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:galera_ssl_enabled}
       identity:
         region: ${_param:openstack_region}
         protocol: ${_param:cluster_internal_protocol}
       message_queue:
         host: ${_param:openstack_message_queue_address}
+        x509:
+          enabled: ${_param:openstack_rabbitmq_x509_enabled}
+          ca_file: ${_param:rabbitmq_octavia_ssl_ca_file}
+          key_file: ${_param:rabbitmq_octavia_client_ssl_key_file}
+          cert_file: ${_param:rabbitmq_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:rabbitmq_ssl_enabled}
diff --git a/octavia/api/single.yml b/octavia/api/single.yml
index ff76e76..54e0abb 100644
--- a/octavia/api/single.yml
+++ b/octavia/api/single.yml
@@ -1,8 +1,8 @@
 classes:
 - service.octavia.api.single
+- system.salt.minion.cert.mysql.clients.openstack.octavia
+- system.salt.minion.cert.rabbitmq.clients.openstack.octavia
 parameters:
-  _param:
-    internal_protocol: 'http'
   octavia:
     api:
       enabled: true
@@ -11,8 +11,22 @@
         address: ${_param:single_address}
       database:
         host: ${_param:openstack_database_address}
+        x509:
+          enabled: ${_param:openstack_mysql_x509_enabled}
+          ca_file: ${_param:mysql_octavia_ssl_ca_file}
+          key_file: ${_param:mysql_octavia_client_ssl_key_file}
+          cert_file: ${_param:mysql_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:galera_ssl_enabled}
       identity:
         region: ${_param:openstack_region}
-        protocol: ${_param:internal_protocol}
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         host: ${_param:openstack_message_queue_address}
+        x509:
+          enabled: ${_param:openstack_rabbitmq_x509_enabled}
+          ca_file: ${_param:rabbitmq_octavia_ssl_ca_file}
+          key_file: ${_param:rabbitmq_octavia_client_ssl_key_file}
+          cert_file: ${_param:rabbitmq_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:rabbitmq_ssl_enabled}
diff --git a/octavia/manager/cluster.yml b/octavia/manager/cluster.yml
index 4422871..0e71b5c 100644
--- a/octavia/manager/cluster.yml
+++ b/octavia/manager/cluster.yml
@@ -1,6 +1,7 @@
 classes:
 - service.octavia.manager.cluster
-
+- system.salt.minion.cert.mysql.clients.openstack.octavia
+- system.salt.minion.cert.rabbitmq.clients.openstack.octavia
 parameters:
   octavia:
     manager:
@@ -12,8 +13,22 @@
         group: octavia
       database:
         host: ${_param:openstack_database_address}
+        x509:
+          enabled: ${_param:openstack_mysql_x509_enabled}
+          ca_file: ${_param:mysql_octavia_ssl_ca_file}
+          key_file: ${_param:mysql_octavia_client_ssl_key_file}
+          cert_file: ${_param:mysql_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:galera_ssl_enabled}
       identity:
         region: ${_param:openstack_region}
         protocol: ${_param:cluster_internal_protocol}
       message_queue:
         host: ${_param:openstack_message_queue_address}
+        x509:
+          enabled: ${_param:openstack_rabbitmq_x509_enabled}
+          ca_file: ${_param:rabbitmq_octavia_ssl_ca_file}
+          key_file: ${_param:rabbitmq_octavia_client_ssl_key_file}
+          cert_file: ${_param:rabbitmq_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:rabbitmq_ssl_enabled}
diff --git a/octavia/manager/single.yml b/octavia/manager/single.yml
index 6071764..73c2ffe 100644
--- a/octavia/manager/single.yml
+++ b/octavia/manager/single.yml
@@ -1,8 +1,13 @@
 classes:
 - service.octavia.manager.single
+- system.salt.minion.cert.mysql.clients.openstack.octavia
+- system.salt.minion.cert.rabbitmq.clients.openstack.octavia
+
 parameters:
   _param:
-    internal_protocol: 'http'
+    # Require for proper rabbitmq ssl key rendering
+    cluster_local_address: ${_param:single_address}
+
   octavia:
     manager:
       enabled: true
@@ -13,8 +18,22 @@
         group: octavia
       database:
         host: ${_param:openstack_database_address}
+        x509:
+          enabled: ${_param:openstack_mysql_x509_enabled}
+          ca_file: ${_param:mysql_octavia_ssl_ca_file}
+          key_file: ${_param:mysql_octavia_client_ssl_key_file}
+          cert_file: ${_param:mysql_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:galera_ssl_enabled}
       identity:
         region: ${_param:openstack_region}
-        protocol: ${_param:internal_protocol}
+        protocol: ${_param:cluster_internal_protocol}
       message_queue:
         host: ${_param:openstack_message_queue_address}
+        x509:
+          enabled: ${_param:openstack_rabbitmq_x509_enabled}
+          ca_file: ${_param:rabbitmq_octavia_ssl_ca_file}
+          key_file: ${_param:rabbitmq_octavia_client_ssl_key_file}
+          cert_file: ${_param:rabbitmq_octavia_client_ssl_cert_file}
+        ssl:
+          enabled: ${_param:rabbitmq_ssl_enabled}
diff --git a/salt/minion/cert/mysql/clients/openstack/octavia.yml b/salt/minion/cert/mysql/clients/openstack/octavia.yml
new file mode 100644
index 0000000..465bbbf
--- /dev/null
+++ b/salt/minion/cert/mysql/clients/openstack/octavia.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    salt_minion_ca_authority: salt_master_ca
+    mysql_octavia_client_ssl_key_file: /etc/octavia/ssl/mysql/client-key.pem
+    mysql_octavia_client_ssl_cert_file: /etc/octavia/ssl/mysql/client-cert.pem
+    mysql_octavia_ssl_ca_file: /etc/octavia/ssl/mysql/ca-cert.pem
+  salt:
+    minion:
+      cert:
+        mysql-octavia-client:
+          enabled: ${_param:openstack_mysql_x509_enabled}
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: mysql-octavia-client
+          signing_policy: cert_client
+          alternative_names: >
+            IP:${_param:cluster_local_address},
+            DNS:${_param:cluster_local_address},
+            DNS:${linux:system:name},
+            DNS:${linux:network:fqdn}
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: ${_param:mysql_octavia_client_ssl_key_file}
+          cert_file: ${_param:mysql_octavia_client_ssl_cert_file}
+          ca_file: ${_param:mysql_octavia_ssl_ca_file}
+          user: octavia
+          group: octavia
+          mode: 640
diff --git a/salt/minion/cert/rabbitmq/clients/openstack/octavia.yml b/salt/minion/cert/rabbitmq/clients/openstack/octavia.yml
new file mode 100644
index 0000000..cfab240
--- /dev/null
+++ b/salt/minion/cert/rabbitmq/clients/openstack/octavia.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    salt_minion_ca_authority: salt_master_ca
+    rabbitmq_octavia_client_ssl_key_file: /etc/octavia/ssl/rabbitmq/client-key.pem
+    rabbitmq_octavia_client_ssl_cert_file: /etc/octavia/ssl/rabbitmq/client-cert.pem
+    rabbitmq_octavia_ssl_ca_file: /etc/octavia/ssl/rabbitmq/ca-cert.pem
+  salt:
+    minion:
+      cert:
+        rabbitmq-octavia-client:
+          enabled: ${_param:openstack_rabbitmq_x509_enabled}
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: rabbitmq-octavia-client
+          signing_policy: cert_client
+          alternative_names: >
+            IP:${_param:cluster_local_address},
+            DNS:${_param:cluster_local_address},
+            DNS:${linux:system:name},
+            DNS:${linux:network:fqdn}
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: ${_param:rabbitmq_octavia_client_ssl_key_file}
+          cert_file: ${_param:rabbitmq_octavia_client_ssl_cert_file}
+          ca_file: ${_param:rabbitmq_octavia_ssl_ca_file}
+          user: octavia
+          group: octavia
+          mode: 640