default: default
description: Name of an existing EC2 KeyPair to enable SSH access to the instances
type: string
+ constraints:
+ - custom_constraint: nova.keypair
NeutronBridgeMappings:
description: >
The OVS logical->physical bridge mappings to use. See the Neutron
type: string
hidden: true
NeutronPublicInterface:
- default: eth0
+ default: nic1
description: What interface to bridge onto br-ex for network nodes.
type: string
NeutronPublicInterfaceTag:
controllerImage:
type: string
default: overcloud-control
+ constraints:
+ - custom_constraint: glance.image
OvercloudControlFlavor:
default: baremetal
description: Flavor for control nodes to request when deploying.
type: string
+ constraints:
+ - custom_constraint: nova.flavor
ControlVirtualInterface:
default: 'br-ex'
description: Interface where virtual ip will be assigned.
the openvswitch agent. Typically should not need to be changed.
type: string
HypervisorNeutronPublicInterface:
- default: 'eth0'
+ default: nic1
description: What interface to add to the HypervisorNeutronPhysicalBridge.
type: string
- LiveUpdateComputeImage:
- type: string
- description: The image ID for live-updates to the overcloud compute nodes.
- default: ''
- LiveUpdateHost:
- type: string
- description: The IP address for the undercloud Glance API.
- default: ''
- LiveUpdatePassword:
- type: string
- default: ''
- description: The live-update password for the undercloud Glance API.
- hidden: true
- LiveUpdateTenantName:
- type: string
- description: The live-update tenant name for the undercloud Glance API.
- default: ''
- LiveUpdateUserName:
- type: string
- description: The live-update username for the undercloud Glance API.
- default: ''
NeutronNetworkVLANRanges:
default: 'datacentre'
description: >
NovaImage:
type: string
default: overcloud-compute
+ constraints:
+ - custom_constraint: glance.image
OvercloudComputeFlavor:
description: Use this flavor
type: string
default: baremetal
+ constraints:
+ - custom_constraint: nova.flavor
+# Block storage specific parameters
+ BlockStorageCount:
+ type: number
+ default: 1
+ BlockStorageImage:
+ default: overcloud-cinder-volume
+ type: string
+ OvercloudBlockStorageFlavor:
+ default: baremetal
+ description: Flavor for block storage nodes to request when deploying.
+ type: string
+
+# Object storage specific parameters
+ ObjectStorageCount:
+ type: number
+ default: 0
+ OvercloudSwiftStorageFlavor:
+ default: baremetal
+ description: Flavor for Swift storage nodes to request when deploying.
+ type: string
+ SwiftStorageImage:
+ default: overcloud-swift-storage
+ type: string
resources:
SSLCertificate: {get_param: SSLCertificate}
SSLKey: {get_param: SSLKey}
SSLCACertificate: {get_param: SSLCACertificate}
+ SwiftHashSuffix: {get_param: SwiftHashSuffix}
+ SwiftPartPower: {get_param: SwiftPartPower}
+ SwiftPassword: {get_param: SwiftPassword}
+ SwiftReplicas: { get_param: SwiftReplicas}
VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
KeyName: {get_param: KeyName}
KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
- LiveUpdateComputeImage: {get_param: LiveUpdateComputeImage}
- LiveUpdateHost: {get_param: LiveUpdateHost}
- LiveUpdatePassword: {get_param: LiveUpdatePassword}
- LiveUpdateTenantName: {get_param: LiveUpdateTenantName}
- LiveUpdateUserName: {get_param: LiveUpdateUserName}
NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
- *compute_database_host
- /ovs_neutron
+ BlockStorage:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: {get_param: BlockStorageCount}
+ resource_def:
+ type: OS::TripleO::BlockStorage
+ properties:
+ AdminPassword: {get_param: AdminPassword}
+ Image: {get_param: BlockStorageImage}
+ CinderISCSIHelper: {get_param: CinderISCSIHelper}
+ CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
+ CinderPassword: {get_param: CinderPassword}
+ VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ KeyName: {get_param: KeyName}
+ NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
+ NeutronNetworkType: {get_param: NeutronNetworkType}
+ NeutronPassword: {get_param: NeutronPassword}
+ NeutronPublicInterface: {get_param: NeutronPublicInterface}
+ Flavor: {get_param: OvercloudBlockStorageFlavor}
+ RabbitPassword: {get_param: RabbitPassword}
+ RabbitUserName: {get_param: RabbitUserName}
+
+ ObjectStorage:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: {get_param: ObjectStorageCount}
+ resource_def:
+ type: OS::TripleO::ObjectStorage
+ properties:
+ ControllerIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ KeyName: {get_param: KeyName}
+ NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
+ NeutronNetworkType: {get_param: NeutronNetworkType}
+ Flavor: {get_param: OvercloudSwiftStorageFlavor}
+ HashSuffix: {get_param: SwiftHashSuffix}
+ PartPower: {get_param: SwiftPartPower}
+ Password: {get_param: SwiftPassword}
+ Image: {get_param: SwiftStorageImage}
+ Replicas: { get_param: SwiftReplicas}
+
+
allNodesConfig:
type: OS::Heat::StructuredConfig
properties:
- list_join:
- "\n"
- {get_attr: [Controller, hosts_entry]}
- # TODO: ADD BLOCK STORAGE ENTRY HERE
- # TODO: ADD SWIFT STORAGE ENTRY HERE
+ - list_join:
+ - "\n"
+ - {get_attr: [BlockStorage, hosts_entry]}
+ - list_join:
+ - "\n"
+ - {get_attr: [ObjectStorage, hosts_entry]}
rabbit:
nodes:
list_join:
ControllerSwiftDeployment:
type: OS::Heat::StructuredDeployments
properties:
- config: {get_resource: ControllerSwiftConfig}
+ config: {get_resource: SwiftDevicesAndProxyConfig}
servers: {get_attr: [Controller, attributes, nova_server_resource]}
signal_transport: NO_SIGNAL
- input_values:
- swift_hash_suffix: {get_param: SwiftHashSuffix}
- swift_password: {get_param: SwiftPassword}
- swift_part_power: {get_param: SwiftPartPower}
- swift_replicas: { get_param: SwiftReplicas}
- ControllerSwiftConfig:
+ ObjectStorageSwiftDeployment:
+ type: OS::Heat::StructuredDeployments
+ properties:
+ config: {get_resource: SwiftDevicesAndProxyConfig}
+ servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+ signal_transport: NO_SIGNAL
+
+ SwiftDevicesAndProxyConfig:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
- {get_attr: [Controller, swift_device]}
- list_join:
- ", "
- # TODO: replace the empty list with this:
- # - {get_attr: [ObjectStorage, swift_device]}
- # Once we have the swift/object-storage role
- - []
- hash: { get_input: swift_hash_suffix }
- part-power: { get_input: swift_part_power }
+ - {get_attr: [ObjectStorage, swift_device]}
proxy-memcache:
list_join:
- ","
- {get_attr: [Controller, swift_proxy_memcache]}
- replicas: {get_input: swift_replicas }
- service-password: { get_input: swift_password }
ControllerClusterConfig:
type: OS::Heat::StructuredConfig