Merge "Add ability to deploy glance at DCN/Edge sites" into stable/train

This commit is contained in:
Zuul 2020-01-10 03:43:07 +00:00 committed by Gerrit Code Review
commit 9bf3a14d59
10 changed files with 254 additions and 0 deletions

View File

@ -0,0 +1,82 @@
heat_template_version: rocky
description: >
OpenStack Glance service for DCN/Edge configured with Puppet
parameters:
ServiceData:
default: {}
description: Dictionary packing service data
type: json
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
DefaultPasswords:
default: {}
type: json
RoleName:
default: ''
description: Role name on which the service is applied
type: string
RoleParameters:
default: {}
description: Parameters specific to the role
type: json
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
EnableInternalTLS:
type: boolean
default: false
conditions:
internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
resources:
GlanceApiBase:
type: ./glance-api-container-puppet.yaml
properties:
ServiceData: {get_param: ServiceData}
ServiceNetMap: {get_param: ServiceNetMap}
DefaultPasswords: {get_param: DefaultPasswords}
EndpointMap: {get_param: EndpointMap}
RoleName: {get_param: RoleName}
RoleParameters: {get_param: RoleParameters}
outputs:
glance_api_edge_uri:
description: URI of the glance-api service runing at the edge site.
value: &glance_api_edge_uri
str_replace:
template:
"PROTOCOL://%{hiera('NETWORK')}:9292"
params:
PROTOCOL:
if:
- internal_tls_enabled
- https
- http
NETWORK: {get_param: [ServiceNetMap, GlanceApiEdgeNetwork]}
role_data:
description: Role data for the Glance API role for DCN/Edge.
value:
map_merge:
- get_attr: [GlanceApiBase, role_data]
- service_name: glance_api_edge
service_config_settings:
map_merge:
- get_attr: [GlanceApiBase, role_data, service_config_settings]
- cinder_volume:
cinder::glance::glance_api_servers: *glance_api_edge_uri
nova_compute:
nova::glance_api_servers: *glance_api_edge_uri

View File

@ -0,0 +1,123 @@
heat_template_version: rocky
description: >
OpenStack containerized HAproxy service for DCN/Edge deployments
parameters:
ServiceData:
default: {}
description: Dictionary packing service data
type: json
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
DefaultPasswords:
default: {}
type: json
RoleName:
default: ''
description: Role name on which the service is applied
type: string
RoleParameters:
default: {}
description: Parameters specific to the role
type: json
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
EnableGlanceApiProxy:
default: true
description: Configure haproxy to forward glance-api requests to glance-api
services running at the edge site.
type: boolean
EnableInternalTLS:
type: boolean
default: false
conditions:
glance_api_proxy_enabled: {equals: [{get_param: EnableGlanceApiProxy}, true]}
internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
resources:
HAProxyBase:
type: ./haproxy-container-puppet.yaml
properties:
ServiceData: {get_param: ServiceData}
ServiceNetMap: {get_param: ServiceNetMap}
DefaultPasswords: {get_param: DefaultPasswords}
EndpointMap: {get_param: EndpointMap}
RoleName: {get_param: RoleName}
RoleParameters: {get_param: RoleParameters}
outputs:
role_data:
description: Role data for the HAproxy role for DCN/Edge.
value:
map_merge:
- get_attr: [HAProxyBase, role_data]
- service_name: haproxy_edge
config_settings:
map_merge:
- get_attr: [HAProxyBase, role_data, config_settings]
- tripleo::haproxy::public_virtual_ip: null
tripleo::haproxy::aodh: false
tripleo::haproxy::barbican: false
tripleo::haproxy::ceph_grafana: false
tripleo::haproxy::ceph_rgw: false
tripleo::haproxy::cinder: false
tripleo::haproxy::designate: false
tripleo::haproxy::docker_registry: false
tripleo::haproxy::ec2_api: false
tripleo::haproxy::ec2_api_metadata: false
tripleo::haproxy::etcd: false
- if:
- glance_api_proxy_enabled
- tripleo::haproxy::glance_api: true
glance_api_vip:
str_replace:
template:
"%{hiera('NETWORK')}"
params:
NETWORK: {get_param: [ServiceNetMap, GlanceApiEdgeNetwork]}
glance_api_node_ips: "%{alias('glance_api_edge_node_ips')}"
glance_api_node_names: "%{alias('glance_api_edge_node_names')}"
- tripleo::haproxy::glance_api: false
- tripleo::haproxy::gnocchi: false
tripleo::haproxy::heat_api: false
tripleo::haproxy::heat_cfn: false
tripleo::haproxy::horizon: false
tripleo::haproxy::ironic: false
tripleo::haproxy::ironic_inspector: false
tripleo::haproxy::keystone_admin: false
tripleo::haproxy::keystone_public: false
tripleo::haproxy::kubernetes_master: false
tripleo::haproxy::manila: false
tripleo::haproxy::mistral: false
tripleo::haproxy::mysql: false
tripleo::haproxy::neutron: false
tripleo::haproxy::nova_osapi: false
tripleo::haproxy::nova_metadata: false
tripleo::haproxy::nova_novncproxy: false
tripleo::haproxy::octavia: false
tripleo::haproxy::opendaylight: false
tripleo::haproxy::openshift_master: false
tripleo::haproxy::ovn_dbs: false
tripleo::haproxy::panko: false
tripleo::haproxy::placement: false
tripleo::haproxy::rabbitmq: false
tripleo::haproxy::redis: false
tripleo::haproxy::sahara: false
tripleo::haproxy::swift_proxy_server: false
tripleo::haproxy::tacker: false
tripleo::haproxy::trove: false
tripleo::haproxy::ui: false
tripleo::haproxy::zaqar_api: false
tripleo::haproxy::zaqar_ws: false

View File

@ -22,6 +22,14 @@ parameter_defaults:
# Type: string
CinderVolumeCluster: dcn
# Enable Glance Image Cache
# Type: boolean
GlanceCacheEnabled: False
# The upper limit on cache size, in bytes, after which the cache-pruner cleans up the image cache.
# Type: number
GlanceImageCacheMaxSize: 10737418240
# Manage the network and related resources (subnets and segments) with either create, update, or delete operations (depending on the stack operation). Does not apply to ports which will always be managed as needed. Defaults to true. For multi-stack use cases where the network related resources have already been managed by a separate stack, this parameter can be set to false.
# Type: boolean
ManageNetworks: False
@ -35,4 +43,6 @@ resource_registry:
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/noop.yaml
OS::TripleO::Services::CinderVolume: ../deployment/cinder/cinder-volume-container-puppet.yaml
OS::TripleO::Services::Etcd: ../../deployment/etcd/etcd-container-puppet.yaml
OS::TripleO::Services::GlanceApiEdge: ../deployment/glance/glance-api-edge-container-puppet.yaml
OS::TripleO::Services::HAproxyEdge: ../deployment/haproxy/haproxy-edge-container-puppet.yaml
OS::TripleO::Services::NovaAZConfig: ../deployment/nova/nova-az-config.yaml

View File

@ -9,6 +9,14 @@
# Environment file for deploying a remote site of distributed compute nodes
# (DCN) in a separate stack (multi-stack) deployment.
parameter_defaults:
# Enable Glance Image Cache
# Type: boolean
GlanceCacheEnabled: False
# The upper limit on cache size, in bytes, after which the cache-pruner cleans up the image cache.
# Type: number
GlanceImageCacheMaxSize: 10737418240
# Manage the network and related resources (subnets and segments) with either create, update, or delete operations (depending on the stack operation). Does not apply to ports which will always be managed as needed. Defaults to true. For multi-stack use cases where the network related resources have already been managed by a separate stack, this parameter can be set to false.
# Type: boolean
ManageNetworks: False
@ -20,4 +28,6 @@ parameter_defaults:
resource_registry:
OS::TripleO::Network::Ports::OVNDBsVipPort: ../network/ports/noop.yaml
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/noop.yaml
OS::TripleO::Services::GlanceApiEdge: ../deployment/glance/glance-api-edge-container-puppet.yaml
OS::TripleO::Services::HAproxyEdge: ../deployment/haproxy/haproxy-edge-container-puppet.yaml
OS::TripleO::Services::NovaAZConfig: ../deployment/nova/nova-az-config.yaml

View File

@ -41,6 +41,7 @@ parameters:
CinderApiNetwork: {{ _service_nets.get('internal_api', 'ctlplane') }}
CinderIscsiNetwork: {{ _service_nets.get('storage', 'ctlplane') }}
GlanceApiNetwork: {{ _service_nets.get('internal_api', 'ctlplane') }}
GlanceApiEdgeNetwork: {{ _service_nets.get('internal_api', 'ctlplane') }}
IronicApiNetwork: ctlplane
IronicNetwork: ctlplane
IronicInspectorNetwork: ctlplane

View File

@ -331,6 +331,8 @@ resource_registry:
# see https://review.opendev.org/#/c/563443
OS::TripleO::Docker::NeutronMl2PluginBase: deployment/neutron/neutron-plugin-ml2-ovn.yaml
OS::TripleO::Services::Multipathd: OS::Heat::None
OS::TripleO::Services::GlanceApiEdge: OS::Heat::None
OS::TripleO::Services::HAproxyEdge: OS::Heat::None
# Logging
OS::TripleO::Services::Tmpwatch: deployment/logrotate/tmpwatch-install.yaml

View File

@ -0,0 +1,8 @@
---
features:
- |
Add the ability to deploy the glance-api service at DCN/Edge sites. Glance
service at the Edge shares the same database as the Glance service in the
central control plane, but allows other services such as Cinder and Nova to
access a Glance endpoint that is local to the DCN/Edge site.

View File

@ -32,6 +32,12 @@
- OS::TripleO::Services::ComputeNeutronOvsAgent
- OS::TripleO::Services::Docker
- OS::TripleO::Services::Etcd
# Include the GlanceApiEdge -OR- the HAproxyEdge service, but not both.
# Deploy GlanceApiEdge on 2-3 nodes for HA, and HAproxyEdge for each
# additional node. The HAproxyEdge service forwards glance-api requests
# to the GlanceApiEdge nodes.
- OS::TripleO::Services::GlanceApiEdge
# OS::TripleO::Services::HAproxyEdge
- OS::TripleO::Services::IpaClient
- OS::TripleO::Services::Ipsec
- OS::TripleO::Services::Iscsid

View File

@ -40,6 +40,12 @@
- OS::TripleO::Services::ComputeNeutronOvsAgent
- OS::TripleO::Services::Docker
- OS::TripleO::Services::Etcd
# Include the GlanceApiEdge -OR- the HAproxyEdge service, but not both.
# Deploy GlanceApiEdge on 2-3 nodes for HA, and HAproxyEdge for each
# additional node. The HAproxyEdge service forwards glance-api requests
# to the GlanceApiEdge nodes.
- OS::TripleO::Services::GlanceApiEdge
# OS::TripleO::Services::HAproxyEdge
- OS::TripleO::Services::IpaClient
- OS::TripleO::Services::Ipsec
- OS::TripleO::Services::Iscsid

View File

@ -5,6 +5,10 @@ environments:
Environment file for deploying a remote site of distributed compute nodes
(DCN) in a separate stack (multi-stack) deployment.
files: &dcn_files
deployment/glance/glance-api-container-puppet.yaml:
parameters:
- GlanceCacheEnabled
- GlanceImageCacheMaxSize
deployment/nova/nova-az-config.yaml:
parameters:
- NovaComputeAvailabilityZone
@ -16,6 +20,8 @@ environments:
resource_registry: &dcn_resource_registry
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/noop.yaml
OS::TripleO::Network::Ports::OVNDBsVipPort: ../network/ports/noop.yaml
OS::TripleO::Services::GlanceApiEdge: ../deployment/glance/glance-api-edge-container-puppet.yaml
OS::TripleO::Services::HAproxyEdge: ../deployment/haproxy/haproxy-edge-container-puppet.yaml
OS::TripleO::Services::NovaAZConfig: ../deployment/nova/nova-az-config.yaml
children:
- name: dcn-hci