Move HAProxy's public TLS logic from controller to service template
authorJuan Antonio Osorio Robles <jaosorior@redhat.com>
Mon, 7 Aug 2017 11:25:38 +0000 (14:25 +0300)
committerJuan Antonio Osorio Robles <jaosorior@redhat.com>
Fri, 11 Aug 2017 04:07:38 +0000 (04:07 +0000)
This de-couples public TLS from controllers to now run wherever HAProxy
is deployed.

Partially-Implements: blueprint composable-networks
Change-Id: I9e84a25a363899acf103015527787bdd8248949f

puppet/controller-role.yaml
puppet/extraconfig/tls/tls-cert-inject.yaml
puppet/role.role.j2.yaml
puppet/services/haproxy.yaml

index 38589a4..ab81d1a 100644 (file)
@@ -563,7 +563,6 @@ resources:
           extraconfig: {get_param: ExtraConfig}
           controller:
             # Misc
-            tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
             fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
             fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
index 8cba435..e81b114 100644 (file)
@@ -7,6 +7,7 @@ description: >
 parameters:
   # Can be overridden via parameter_defaults in the environment
   SSLCertificate:
+    default: ''
     description: >
       The content of the SSL certificate (without Key) in PEM format.
     type: string
index 23d8896..f1abf8d 100644 (file)
@@ -513,9 +513,6 @@ resources:
             fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
             fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
             fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
-  {%- if 'primary' in role.tags and 'controller' in role.tags %}
-            tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
-  {%- endif -%}
 
   # Resource for site-specific injection of root certificate
   NodeTLSCAData:
index a37135d..6b2d028 100644 (file)
@@ -57,6 +57,16 @@ parameters:
   MonitoringSubscriptionHaproxy:
     default: 'overcloud-haproxy'
     type: string
+  SSLCertificate:
+    default: ''
+    description: >
+      The content of the SSL certificate (without Key) in PEM format.
+    type: string
+  DeployedSSLCertificatePath:
+    default: '/etc/pki/tls/private/overcloud_endpoint.pem'
+    description: >
+        The filepath of the certificate as it will be stored in the controller.
+    type: string
   InternalTLSCAFile:
     default: '/etc/ipa/ca.crt'
     type: string
@@ -68,6 +78,14 @@ parameters:
     description: Specifies the default CRL PEM file to use for revocation if
                  TLS is used for services in the internal network.
 
+conditions:
+
+  public_tls_enabled:
+    not:
+      equals:
+      - {get_param: SSLCertificate}
+      - ""
+
 resources:
 
   HAProxyPublicTLS:
@@ -98,8 +116,6 @@ outputs:
       monitoring_subscription: {get_param: MonitoringSubscriptionHaproxy}
       config_settings:
         map_merge:
-          - get_attr: [HAProxyPublicTLS, role_data, config_settings]
-          - get_attr: [HAProxyInternalTLS, role_data, config_settings]
           - tripleo.haproxy.firewall_rules:
               '107 haproxy stats':
                 dport: 1993
@@ -115,6 +131,12 @@ outputs:
               map_merge:
                 - get_attr: [HAProxyPublicTLS, role_data, certificates_specs]
                 - get_attr: [HAProxyInternalTLS, role_data, certificates_specs]
+          - if:
+              - public_tls_enabled
+              - tripleo::haproxy::service_certificate: {get_param: DeployedSSLCertificatePath}
+              - {}
+          - get_attr: [HAProxyPublicTLS, role_data, config_settings]
+          - get_attr: [HAProxyInternalTLS, role_data, config_settings]
       step_config: |
         include ::tripleo::profile::base::haproxy
       upgrade_tasks: