Configure ControllerServices via resource chains
This patch wires in a new for Mitaka Heat feature that allows us to dynamically include a set of nested stacks representing individual services via a Heat resource chain. Follow on patches will use this interface to decompose the controller role into isolated services. Co-Authored-By: Steve Hardy <shardy@redhat.com> Depends-On: If510abe260ea7852dfe2d1f7f92b529979483068 Change-Id: I84c97a76159704c2d6c963bc4b26e365764b1366
This commit is contained in:
parent
98f19c17a6
commit
0bcf693a73
@ -122,6 +122,9 @@ resource_registry:
|
||||
# validation resources
|
||||
OS::TripleO::AllNodes::Validation: all-nodes-validation.yaml
|
||||
|
||||
# services
|
||||
OS::TripleO::Services: puppet/services/services.yaml
|
||||
|
||||
parameter_defaults:
|
||||
EnablePackageInstall: false
|
||||
SoftwareConfigTransport: POLL_TEMP_URL
|
||||
|
@ -1,4 +1,4 @@
|
||||
heat_template_version: 2015-04-30
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
Deploy an OpenStack environment, consisting of several node types (roles),
|
||||
@ -711,6 +711,13 @@ parameters:
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
|
||||
ControllerServices:
|
||||
default: []
|
||||
description: A list of service resources (configured in the Heat
|
||||
resource_registry) which represent nested stacks
|
||||
for each service that should get installed on the Controllers.
|
||||
type: comma_delimited_list
|
||||
|
||||
# Block storage specific parameters
|
||||
BlockStorageCount:
|
||||
type: number
|
||||
@ -892,6 +899,13 @@ resources:
|
||||
SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
|
||||
PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
|
||||
|
||||
ControllerServiceChain:
|
||||
type: OS::TripleO::Services
|
||||
properties:
|
||||
Services: {get_param: ControllerServices}
|
||||
EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
|
||||
MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
|
||||
|
||||
Controller:
|
||||
type: OS::Heat::ResourceGroup
|
||||
depends_on: Networks
|
||||
@ -1043,6 +1057,7 @@ resources:
|
||||
NodeIndex: '%index%'
|
||||
ServerMetadata: {get_param: ServerMetadata}
|
||||
SchedulerHints: {get_param: ControllerSchedulerHints}
|
||||
ServiceConfigSettings: {get_attr: [ControllerServiceChain, config_settings]}
|
||||
|
||||
Compute:
|
||||
type: OS::Heat::ResourceGroup
|
||||
@ -1611,6 +1626,7 @@ resources:
|
||||
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
|
||||
controller_config: {get_attr: [Controller, attributes, config_identifier]}
|
||||
deployment_identifier: {get_param: DeployIdentifier}
|
||||
StepConfig: {get_attr: [ControllerServiceChain, step_config]}
|
||||
|
||||
ComputeNodesPostDeployment:
|
||||
type: OS::TripleO::ComputePostDeployment
|
||||
|
@ -8,6 +8,10 @@ parameters:
|
||||
default: false
|
||||
description: Whether to run config management (e.g. Puppet) in debug mode.
|
||||
type: boolean
|
||||
StepConfig:
|
||||
type: string
|
||||
description: Config manifests that will be used to step through the deployment.
|
||||
default: ''
|
||||
|
||||
resources:
|
||||
|
||||
@ -26,6 +30,7 @@ resources:
|
||||
- ''
|
||||
- - get_file: manifests/overcloud_controller_pacemaker.pp
|
||||
- get_file: manifests/ringbuilder.pp
|
||||
- {get_param: StepConfig}
|
||||
|
||||
outputs:
|
||||
OS::stack_id:
|
||||
|
@ -8,6 +8,10 @@ parameters:
|
||||
default: false
|
||||
description: Whether to run config management (e.g. Puppet) in debug mode.
|
||||
type: boolean
|
||||
StepConfig:
|
||||
type: string
|
||||
description: Config manifests that will be used to step through the deployment.
|
||||
default: ''
|
||||
|
||||
resources:
|
||||
|
||||
@ -26,6 +30,7 @@ resources:
|
||||
- ''
|
||||
- - get_file: manifests/overcloud_controller.pp
|
||||
- get_file: manifests/ringbuilder.pp
|
||||
- {get_param: StepConfig}
|
||||
|
||||
outputs:
|
||||
OS::stack_id:
|
||||
|
@ -13,7 +13,10 @@ parameters:
|
||||
NodeConfigIdentifiers:
|
||||
type: json
|
||||
description: Value which changes if the node configuration may need to be re-applied
|
||||
|
||||
StepConfig:
|
||||
type: string
|
||||
description: Config manifests that will be used to step through the deployment.
|
||||
default: ''
|
||||
|
||||
resources:
|
||||
|
||||
@ -35,6 +38,8 @@ resources:
|
||||
|
||||
ControllerPuppetConfig:
|
||||
type: OS::TripleO::ControllerConfig
|
||||
properties:
|
||||
StepConfig: {get_param: StepConfig}
|
||||
|
||||
# Step through a series of Puppet runs using the same manifest.
|
||||
# NOTE: To enable stepping through the deployments via heat hooks,
|
||||
|
@ -790,6 +790,9 @@ parameters:
|
||||
type: json
|
||||
description: Optional scheduler hints to pass to nova
|
||||
default: {}
|
||||
ServiceConfigSettings:
|
||||
type: json
|
||||
default: {}
|
||||
|
||||
resources:
|
||||
|
||||
@ -1294,6 +1297,7 @@ resources:
|
||||
- heat_config_%{::deploy_config_name}
|
||||
- controller_extraconfig
|
||||
- extraconfig
|
||||
- service_configs
|
||||
- controller
|
||||
- database
|
||||
- object
|
||||
@ -1316,6 +1320,8 @@ resources:
|
||||
- neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
|
||||
- neutron_plumgrid_data # Optionally provided by ControllerExtraConfigPre
|
||||
datafiles:
|
||||
service_configs:
|
||||
mapped_data: {get_param: ServiceConfigSettings}
|
||||
controller_extraconfig:
|
||||
mapped_data: {get_param: ControllerExtraConfig}
|
||||
extraconfig:
|
||||
|
50
puppet/services/README.rst
Normal file
50
puppet/services/README.rst
Normal file
@ -0,0 +1,50 @@
|
||||
========
|
||||
services
|
||||
========
|
||||
|
||||
A TripleO nested stack Heat template that encapsulates generic configuration
|
||||
data to configure a specific service. This generally includes everything
|
||||
needed to configure the service excluding the local bind ports which
|
||||
are still managed in the per-node role templates directly (controller.yaml,
|
||||
compute.yaml, etc.). All other (global) service settings go into
|
||||
the puppet/service templates.
|
||||
|
||||
Input Parameters
|
||||
----------------
|
||||
|
||||
Each service may define its own input parameters and defaults.
|
||||
Operators will use the parameter_defaults section of any Heat
|
||||
environment to set per service parameters.
|
||||
|
||||
Config Settings
|
||||
---------------
|
||||
|
||||
Each service may define a config_settings output variable which returns
|
||||
Hiera settings to be configured.
|
||||
|
||||
Steps
|
||||
-----
|
||||
|
||||
Each service may define an output variable which returns a puppet manifest
|
||||
snippet that will run at each of the following steps. Earlier manifests
|
||||
are re-asserted when applying latter ones.
|
||||
|
||||
* config_settings: Custom hiera settings for this service.
|
||||
|
||||
* step_config: A puppet manifest that is used to step through the deployment
|
||||
sequence. Each sequence is given a "step" (via hiera('step') that provides
|
||||
information for when puppet classes should activate themselves.
|
||||
|
||||
Steps correlate to the following:
|
||||
|
||||
1) Load Balancer configuration
|
||||
|
||||
2) Core Services (Database/Rabbit/NTP/etc.)
|
||||
|
||||
3) Early Openstack Service setup (Ringbuilder, etc.)
|
||||
|
||||
4) General OpenStack Services
|
||||
|
||||
5) Service activation (Pacemaker)
|
||||
|
||||
6) Fencing (Pacemaker)
|
40
puppet/services/services.yaml
Normal file
40
puppet/services/services.yaml
Normal file
@ -0,0 +1,40 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
Utility stack to convert an array of services into a set of combined
|
||||
role configs.
|
||||
|
||||
parameters:
|
||||
Services:
|
||||
default: []
|
||||
description: |
|
||||
List nested stack service templates.
|
||||
type: comma_delimited_list
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
MysqlVirtualIPUri:
|
||||
default: ''
|
||||
type: string
|
||||
description: The URI virtual IP for the MySQL service.
|
||||
|
||||
resources:
|
||||
|
||||
ServiceChain:
|
||||
type: OS::Heat::ResourceChain
|
||||
properties:
|
||||
resources: {get_param: Services}
|
||||
concurrent: true
|
||||
resource_properties:
|
||||
EndpointMap: {get_param: EndpointMap}
|
||||
MysqlVirtualIPUri: {get_param: MysqlVirtualIPUri}
|
||||
|
||||
outputs:
|
||||
config_settings:
|
||||
description: Configuration settings.
|
||||
value: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
|
||||
step_config:
|
||||
description: Step configuration.
|
||||
value: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]}
|
Loading…
x
Reference in New Issue
Block a user