default: ''
description: Set to True to enable debugging on all services.
type: string
- DefaultSignalTransport:
- default: CFN_SIGNAL
- description: Transport to use for software-config signals.
- type: string
- constraints:
- - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
GlancePort:
default: "9292"
description: Glance port.
type: string
constraints:
- custom_constraint: nova.keypair
+ NeutronExternalNetworkBridge:
+ description: Name of bridge used for external network traffic.
+ type: string
+ default: 'br-ex'
NeutronBridgeMappings:
description: >
The OVS logical->physical bridge mappings to use. See the Neutron
default: 'br-ex'
description: Interface where virtual ip will be assigned.
type: string
+ EnableFencing:
+ default: false
+ description: Whether to enable fencing in Pacemaker or not.
+ type: boolean
EnableGalera:
default: true
description: Whether to use Galera instead of regular MariaDB.
}
}
type: json
+ FencingConfig:
+ default: {}
+ description: |
+ Pacemaker fencing configuration. The JSON should have
+ the following structure:
+ {
+ "devices": [
+ {
+ "agent": "AGENT_NAME",
+ "host_mac": "HOST_MAC_ADDRESS",
+ "params": {"PARAM_NAME": "PARAM_VALUE"}
+ }
+ ]
+ }
+ For instance:
+ {
+ "devices": [
+ {
+ "agent": "fence_xvm",
+ "host_mac": "52:54:00:aa:bb:cc",
+ "params": {
+ "multicast_address": "225.0.0.12",
+ "port": "baremetal_0",
+ "manage_fw": true,
+ "manage_key_file": true,
+ "key_file": "/etc/fence_xvm.key",
+ "key_file_password": "abcdef"
+ }
+ }
+ ]
+ }
+ type: json
GlanceLogFile:
description: The filepath of the file to use for logging messages from Glance.
type: string
- custom_constraint: nova.flavor
ServiceNetMap:
default:
- NeutronLocalIp: tenant
+ NeutronTenantNetwork: tenant
CeilometerApiNetwork: internal_api
MongoDbNetwork: internal_api
CinderApiNetwork: internal_api
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ # If you want to remove a specific node from a resource group, you can pass
+ # the node name or id as a <Group>RemovalPolicies parameter, for example:
+ # ComputeRemovalPolicies: [{'resource_list': ['0']}]
+ ControllerRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from ControllerResourceGroup when
+ doing an update which requires removal of specific resources.
+ ComputeRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from ComputeResourceGroup when
+ doing an update which requires removal of specific resources.
+ BlockStorageRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from BlockStorageResourceGroup when
+ doing an update which requires removal of specific resources.
+ ObjectStorageRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from ObjectStorageResourceGroup when
+ doing an update which requires removal of specific resources.
+ CephStorageRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from CephStorageResourceGroup when
+ doing an update which requires removal of specific resources.
resources:
depends_on: Networks
properties:
count: {get_param: ControllerCount}
+ removal_policies: {get_param: ControllerRemovalPolicies}
resource_def:
type: OS::TripleO::Controller
properties:
ControlVirtualInterface: {get_param: ControlVirtualInterface}
ControllerExtraConfig: {get_param: controllerExtraConfig}
Debug: {get_param: Debug}
+ EnableFencing: {get_param: EnableFencing}
EnableGalera: {get_param: EnableGalera}
EnableCephStorage: {get_param: ControllerEnableCephStorage}
EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
ExtraConfig: {get_param: ExtraConfig}
+ FencingConfig: {get_param: FencingConfig}
Flavor: {get_param: OvercloudControlFlavor}
GlancePort: {get_param: GlancePort}
GlanceProtocol: {get_param: GlanceProtocol}
NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
+ NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
NeutronPublicInterface: {get_param: NeutronPublicInterface}
depends_on: Networks
properties:
count: {get_param: ComputeCount}
+ removal_policies: {get_param: ComputeRemovalPolicies}
resource_def:
type: OS::TripleO::Compute
properties:
depends_on: Networks
properties:
count: {get_param: BlockStorageCount}
+ removal_policies: {get_param: BlockStorageRemovalPolicies}
resource_def:
type: OS::TripleO::BlockStorage
properties:
# Purpose of the dedicated BlockStorage nodes should be to use their local LVM
CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
CinderPassword: {get_param: CinderPassword}
- VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
KeyName: {get_param: KeyName}
Flavor: {get_param: OvercloudBlockStorageFlavor}
+ VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ GlancePort: {get_param: GlancePort}
+ GlanceProtocol: {get_param: GlanceProtocol}
+ GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
RabbitPassword: {get_param: RabbitPassword}
RabbitUserName: {get_param: RabbitUserName}
RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
template: {get_param: BlockStorageHostnameFormat}
params:
'%stackname%': {get_param: 'OS::stack_name'}
+ ServiceNetMap: {get_param: ServiceNetMap}
+ MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
ObjectStorage:
type: OS::Heat::ResourceGroup
depends_on: Networks
properties:
count: {get_param: ObjectStorageCount}
+ removal_policies: {get_param: ObjectStorageRemovalPolicies}
resource_def:
type: OS::TripleO::ObjectStorage
properties:
depends_on: Networks
properties:
count: {get_param: CephStorageCount}
+ removal_policies: {get_param: CephStorageRemovalPolicies}
resource_def:
type: OS::TripleO::CephStorage
properties:
properties:
config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
servers: {get_attr: [Controller, attributes, nova_server_resource]}
- signal_transport: NO_SIGNAL
ControllerSwiftDeployment:
type: OS::Heat::StructuredDeployments
properties:
config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
servers: {get_attr: [Controller, attributes, nova_server_resource]}
- signal_transport: NO_SIGNAL
ObjectStorageSwiftDeployment:
type: OS::Heat::StructuredDeployments
properties:
config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
- signal_transport: NO_SIGNAL
SwiftDevicesAndProxyConfig:
type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
ControllerClusterConfig:
type: OS::Heat::StructuredConfig
properties:
+ group: os-apply-config
config:
corosync:
nodes: {get_attr: [Controller, corosync_node]}
properties:
config: {get_resource: ControllerClusterConfig}
servers: {get_attr: [Controller, attributes, nova_server_resource]}
- signal_transport: NO_SIGNAL
ControllerAllNodesDeployment:
type: OS::Heat::StructuredDeployments
depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
properties:
servers: {get_attr: [Controller, attributes, nova_server_resource]}
+ NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
ComputeNodesPostDeployment:
type: OS::TripleO::ComputePostDeployment
depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
properties:
servers: {get_attr: [Compute, attributes, nova_server_resource]}
+ NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
ObjectStorageNodesPostDeployment:
type: OS::TripleO::ObjectStoragePostDeployment
depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
properties:
servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+ NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
+
BlockStorageNodesPostDeployment:
type: OS::TripleO::BlockStoragePostDeployment
depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
properties:
servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+ NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
CephStorageNodesPostDeployment:
type: OS::TripleO::CephStoragePostDeployment
depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
properties:
servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+ NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
outputs:
KeystoneURL: