Apache: Use conditional instead of nested stack for TLS-specific bits
Usually a nested stack is used that contains the TLS-everywhere bits (config_settings and metadata_settings). Nested stacks are very resource intensive. So, instead of doing using nested stacks, this patch changes that to use a conditional, and output the necessary config_settings and metadata_settings this way in an attempt to save resources. Change-Id: Ia7ee632383542ac012c20448ff1b4435004e57e3
This commit is contained in:
parent
69c213e3e3
commit
7d0f27980d
@ -12,7 +12,6 @@ resource_registry:
|
|||||||
OS::TripleO::Services::CertmongerUser: ../puppet/services/certmonger-user.yaml
|
OS::TripleO::Services::CertmongerUser: ../puppet/services/certmonger-user.yaml
|
||||||
|
|
||||||
OS::TripleO::Services::HAProxyInternalTLS: ../puppet/services/haproxy-internal-tls-certmonger.yaml
|
OS::TripleO::Services::HAProxyInternalTLS: ../puppet/services/haproxy-internal-tls-certmonger.yaml
|
||||||
OS::TripleO::Services::ApacheTLS: ../puppet/services/apache-internal-tls-certmonger.yaml
|
|
||||||
OS::TripleO::Services::MySQLTLS: ../puppet/services/database/mysql-internal-tls-certmonger.yaml
|
OS::TripleO::Services::MySQLTLS: ../puppet/services/database/mysql-internal-tls-certmonger.yaml
|
||||||
|
|
||||||
# We use apache as a TLS proxy
|
# We use apache as a TLS proxy
|
||||||
|
@ -120,7 +120,6 @@ resource_registry:
|
|||||||
# services
|
# services
|
||||||
OS::TripleO::Services: puppet/services/services.yaml
|
OS::TripleO::Services: puppet/services/services.yaml
|
||||||
OS::TripleO::Services::Apache: puppet/services/apache.yaml
|
OS::TripleO::Services::Apache: puppet/services/apache.yaml
|
||||||
OS::TripleO::Services::ApacheTLS: OS::Heat::None
|
|
||||||
OS::TripleO::Services::CACerts: puppet/services/ca-certs.yaml
|
OS::TripleO::Services::CACerts: puppet/services/ca-certs.yaml
|
||||||
OS::TripleO::Services::CephMds: OS::Heat::None
|
OS::TripleO::Services::CephMds: OS::Heat::None
|
||||||
OS::TripleO::Services::CephMon: OS::Heat::None
|
OS::TripleO::Services::CephMon: OS::Heat::None
|
||||||
|
@ -1,75 +0,0 @@
|
|||||||
heat_template_version: ocata
|
|
||||||
|
|
||||||
description: >
|
|
||||||
Apache service TLS configurations.
|
|
||||||
|
|
||||||
parameters:
|
|
||||||
ServiceNetMap:
|
|
||||||
default: {}
|
|
||||||
description: Mapping of service_name -> network name. Typically set
|
|
||||||
via parameter_defaults in the resource registry. This
|
|
||||||
mapping overrides those in ServiceNetMapDefaults.
|
|
||||||
type: json
|
|
||||||
# The following parameters are not needed by the template but are
|
|
||||||
# required to pass the pep8 tests
|
|
||||||
DefaultPasswords:
|
|
||||||
default: {}
|
|
||||||
type: json
|
|
||||||
EndpointMap:
|
|
||||||
default: {}
|
|
||||||
description: Mapping of service endpoint -> protocol. Typically set
|
|
||||||
via parameter_defaults in the resource registry.
|
|
||||||
type: json
|
|
||||||
|
|
||||||
resources:
|
|
||||||
|
|
||||||
ApacheNetworks:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
# NOTE(jaosorior) Get unique network names to create
|
|
||||||
# certificates for those. We skip the tenant network since
|
|
||||||
# we don't need a certificate for that, and the external
|
|
||||||
# network will be handled in another template.
|
|
||||||
yaql:
|
|
||||||
expression: list($.data.map.items().map($1[1])).distinct().where($ != external and $ != tenant)
|
|
||||||
data:
|
|
||||||
map:
|
|
||||||
get_param: ServiceNetMap
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
role_data:
|
|
||||||
description: Role data for the Apache role.
|
|
||||||
value:
|
|
||||||
service_name: apache_internal_tls_certmonger
|
|
||||||
config_settings:
|
|
||||||
generate_service_certificates: true
|
|
||||||
apache_certificates_specs:
|
|
||||||
map_merge:
|
|
||||||
repeat:
|
|
||||||
template:
|
|
||||||
httpd-NETWORK:
|
|
||||||
service_certificate: '/etc/pki/tls/certs/httpd-NETWORK.crt'
|
|
||||||
service_key: '/etc/pki/tls/private/httpd-NETWORK.key'
|
|
||||||
hostname: "%{hiera('fqdn_NETWORK')}"
|
|
||||||
principal: "HTTP/%{hiera('fqdn_NETWORK')}"
|
|
||||||
for_each:
|
|
||||||
NETWORK: {get_attr: [ApacheNetworks, value]}
|
|
||||||
metadata_settings:
|
|
||||||
repeat:
|
|
||||||
template:
|
|
||||||
- service: HTTP
|
|
||||||
network: $NETWORK
|
|
||||||
type: node
|
|
||||||
for_each:
|
|
||||||
$NETWORK: {get_attr: [ApacheNetworks, value]}
|
|
||||||
upgrade_tasks:
|
|
||||||
- name: Check if httpd is deployed
|
|
||||||
command: systemctl is-enabled httpd
|
|
||||||
tags: common
|
|
||||||
ignore_errors: True
|
|
||||||
register: httpd_enabled
|
|
||||||
- name: "PreUpgrade step0,validation: Check service httpd is running"
|
|
||||||
shell: /usr/bin/systemctl show 'httpd' --property ActiveState | grep '\bactive\b'
|
|
||||||
when: httpd_enabled.rc == 0
|
|
||||||
tags: step0,validation
|
|
@ -31,13 +31,25 @@ parameters:
|
|||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
|
||||||
ApacheTLS:
|
ApacheNetworks:
|
||||||
type: OS::TripleO::Services::ApacheTLS
|
type: OS::Heat::Value
|
||||||
properties:
|
properties:
|
||||||
ServiceNetMap: {get_param: ServiceNetMap}
|
value:
|
||||||
|
# NOTE(jaosorior) Get unique network names to create
|
||||||
|
# certificates for those. We skip the tenant network since
|
||||||
|
# we don't need a certificate for that, and the external
|
||||||
|
# is for HAProxy so it isn't used for apache either.
|
||||||
|
yaql:
|
||||||
|
expression: list($.data.map.items().map($1[1])).distinct().where($ != external and $ != tenant)
|
||||||
|
data:
|
||||||
|
map:
|
||||||
|
get_param: ServiceNetMap
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
role_data:
|
role_data:
|
||||||
@ -46,7 +58,6 @@ outputs:
|
|||||||
service_name: apache
|
service_name: apache
|
||||||
config_settings:
|
config_settings:
|
||||||
map_merge:
|
map_merge:
|
||||||
- get_attr: [ApacheTLS, role_data, config_settings]
|
|
||||||
-
|
-
|
||||||
# for the given network; replacement examples (eg. for internal_api):
|
# for the given network; replacement examples (eg. for internal_api):
|
||||||
# internal_api -> IP
|
# internal_api -> IP
|
||||||
@ -64,8 +75,31 @@ outputs:
|
|||||||
apache::mod::prefork::serverlimit: { get_param: ApacheServerLimit }
|
apache::mod::prefork::serverlimit: { get_param: ApacheServerLimit }
|
||||||
apache::mod::remoteip::proxy_ips:
|
apache::mod::remoteip::proxy_ips:
|
||||||
- "%{hiera('apache_remote_proxy_ips_network')}"
|
- "%{hiera('apache_remote_proxy_ips_network')}"
|
||||||
|
-
|
||||||
|
generate_service_certificates: true
|
||||||
|
apache_certificates_specs:
|
||||||
|
map_merge:
|
||||||
|
repeat:
|
||||||
|
template:
|
||||||
|
httpd-NETWORK:
|
||||||
|
service_certificate: '/etc/pki/tls/certs/httpd-NETWORK.crt'
|
||||||
|
service_key: '/etc/pki/tls/private/httpd-NETWORK.key'
|
||||||
|
hostname: "%{hiera('fqdn_NETWORK')}"
|
||||||
|
principal: "HTTP/%{hiera('fqdn_NETWORK')}"
|
||||||
|
for_each:
|
||||||
|
NETWORK: {get_attr: [ApacheNetworks, value]}
|
||||||
metadata_settings:
|
metadata_settings:
|
||||||
get_attr: [ApacheTLS, role_data, metadata_settings]
|
if:
|
||||||
|
- internal_tls_enabled
|
||||||
|
-
|
||||||
|
repeat:
|
||||||
|
template:
|
||||||
|
- service: HTTP
|
||||||
|
network: $NETWORK
|
||||||
|
type: node
|
||||||
|
for_each:
|
||||||
|
$NETWORK: {get_attr: [ApacheNetworks, value]}
|
||||||
|
- null
|
||||||
upgrade_tasks:
|
upgrade_tasks:
|
||||||
- name: Check if httpd is deployed
|
- name: Check if httpd is deployed
|
||||||
command: systemctl is-enabled httpd
|
command: systemctl is-enabled httpd
|
||||||
|
Loading…
Reference in New Issue
Block a user