X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=overcloud-source.yaml;h=6cceff2e8b5ca8c5dde2da3abb64b73b89e5e400;hb=eb7fe9bb9bb1298e5e2daed43622b57033c76c34;hp=068c8532efb9599b4a895acf6049d95f9c552516;hpb=723cdf75e5089dabd93f72ed2eba4aeb6a18ee75;p=apex-tripleo-heat-templates.git diff --git a/overcloud-source.yaml b/overcloud-source.yaml index 068c8532..6cceff2e 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -1,33 +1,37 @@ -Description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL +description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL server,Dedicated RabbitMQ Server,Group of Nova Computes -HeatTemplateFormatVersion: '2012-12-12' -Parameters: +heat_template_version: 2013-05-23 +parameters: AdminPassword: - Default: unset - Description: The password for the keystone admin account, used for monitoring, querying neutron etc. - Type: String - NoEcho: true + default: unset + description: The password for the keystone admin account, used for monitoring, querying neutron etc. + type: string + hidden: true AdminToken: - Default: unset - Description: The keystone auth secret. - Type: String - NoEcho: true + default: unset + description: The keystone auth secret. + type: string + hidden: true CinderPassword: - Default: unset - Description: The password for the cinder service account, used by cinder-api. - Type: String - NoEcho: true + default: unset + description: The password for the cinder service account, used by cinder-api. + type: string + hidden: true CinderISCSIHelper: - Default: tgtadm - Description: The iSCSI helper to use with cinder. - Type: String + default: tgtadm + description: The iSCSI helper to use with cinder. + type: string CinderLVMLoopDeviceSize: - Default: 5000 - Description: The size of the loopback file used by the cinder LVM driver. - Type: Number + default: 5000 + description: The size of the loopback file used by the cinder LVM driver. + type: number + Debug: + default: '' + description: Set to True to enable debugging on all services. + type: string ExtraConfig: - Default: {} - Description: | + default: {} + description: | Additional configuration to inject into the cluster. The JSON should have the following structure: {"FILEKEY": @@ -47,8 +51,8 @@ Parameters: {"config": [{"section": "default", "values": - [{"option": "compute_manager", - "value": "ironic.nova.compute.manager.ClusterComputeManager" + [{"option": "force_config_drive", + "value": "always" } ] }, @@ -62,304 +66,392 @@ Parameters: ] } } - Type: Json + type: json + controllerExtraConfig: + default: {} + description: | + Controller specific configuration to inject into the cluster. Same + structure as ExtraConfig. + type: json + NovaComputeExtraConfig: + default: {} + description: | + NovaCompute specific configuration to inject into the cluster. Same + structure as ExtraConfig. + type: json OvercloudControlFlavor: - Default: baremetal - Description: Flavor for control nodes to request when deploying. - Type: String + default: baremetal + description: Flavor for control nodes to request when deploying. + type: string OvercloudComputeFlavor: - Default: baremetal - Description: Flavor for compute nodes to request when deploying. - Type: String + default: baremetal + description: Flavor for compute nodes to request when deploying. + type: string GlancePort: - Default: 9292 - Description: Glance port. - Type: String + default: 9292 + description: Glance port. + type: string GlanceProtocol: - Default: http - Description: Protocol to use when connecting to glance, set to https for SSL. - Type: String + default: http + description: Protocol to use when connecting to glance, set to https for SSL. + type: string GlancePassword: - Default: unset - Description: The password for the glance service account, used by the glance services. - Type: String - NoEcho: true + default: unset + description: The password for the glance service account, used by the glance services. + type: string + hidden: true GlanceNotifierStrategy: - Description: Strategy to use for Glance notification queue - Type: String - Default: noop + description: Strategy to use for Glance notification queue + type: string + default: noop GlanceLogFile: - Description: The filepath of the file to use for logging messages from Glance. - Type: String - Default: '' + description: The filepath of the file to use for logging messages from Glance. + type: string + default: '' HeatPassword: - Default: unset - Description: The password for the Heat service account, used by the Heat services. - Type: String - NoEcho: true + default: unset + description: The password for the Heat service account, used by the Heat services. + type: string + hidden: true ImageUpdatePolicy: - Default: 'REBUILD_PRESERVE_EPHEMERAL' - Description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt. - Type: String + default: 'REBUILD_PRESERVE_EPHEMERAL' + description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt. + type: string KeyName: - Default: default - Description: Name of an existing EC2 KeyPair to enable SSH access to the instances - Type: String + default: default + description: Name of an existing EC2 KeyPair to enable SSH access to the instances + type: string NeutronBridgeMappings: - Description: The OVS logical->physical bridge mappings to use. - Type: String - Default: '' + description: > + The OVS logical->physical bridge mappings to use. See the Neutron + documentation for details. Defaults to mapping br-ex - the external + bridge on hosts - to a physical name 'datacentre' which can be used + to create provider networks (and we use this for the default floating + network) - if changing this either use different post-install network + scripts or be sure to keep 'datacentre' as a mapping network name. + type: string + default: "datacentre:br-ex" + NeutronNetworkVLANRanges: + default: 'datacentre' + description: > + The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the + Neutron documentation for permitted values. Defaults to permitting any + VLAN on the 'datacentre' physical network (See NeutronBridgeMappings). + type: string NeutronPassword: - Default: unset - Description: The password for the neutron service account, used by neutron agents. - Type: String - NoEcho: true + default: unset + description: The password for the neutron service account, used by neutron agents. + type: string + hidden: true CeilometerComputeAgent: - Description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly - Type: String - Default: '' - AllowedValues: ['', Present] + description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly + type: string + default: '' + constraints: + - allowed_values: ['', Present] CeilometerMeteringSecret: - Default: unset - Description: Secret shared by the ceilometer services. - Type: String - NoEcho: true + default: unset + description: Secret shared by the ceilometer services. + type: string + hidden: true CeilometerPassword: - Default: unset - Description: The password for the ceilometer service account. - Type: String - NoEcho: true + default: unset + description: The password for the ceilometer service account. + type: string + hidden: true SnmpdReadonlyUserName: - Default: ro_snmp_user - Description: The user name for SNMPd with readonly rights running on all Overcloud nodes - Type: String + default: ro_snmp_user + description: The user name for SNMPd with readonly rights running on all Overcloud nodes + type: string SnmpdReadonlyUserPassword: - Default: unset - Description: The user password for SNMPd with readonly rights running on all Overcloud nodes - Type: String - NoEcho: true + default: unset + description: The user password for SNMPd with readonly rights running on all Overcloud nodes + type: string + hidden: true CloudName: - Default: '' - Description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org - Type: String + default: '' + description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org + type: string NovaComputeDriver: - Default: libvirt.LibvirtDriver - Type: String + default: libvirt.LibvirtDriver + type: string NovaComputeLibvirtType: - Default: '' - Type: String + default: '' + type: string NovaImage: - Type: String - Default: overcloud-compute + type: string + default: overcloud-compute NovaPassword: - Default: unset - Description: The password for the nova service account, used by nova-api. - Type: String - NoEcho: true + default: unset + description: The password for the nova service account, used by nova-api. + type: string + hidden: true NeutronFlatNetworks: - Type: String - Default: '' - Description: If set, flat networks to configure in neutron plugins. + type: string + default: 'datacentre' + description: > + If set, flat networks to configure in neutron plugins. Defaults to + 'datacentre' to permit external network creation. HypervisorNeutronPhysicalBridge: - Default: '' - Description: An OVS bridge to create on each hypervisor. - Type: String + default: 'br-ex' + description: > + An OVS bridge to create on each hypervisor. This defaults to br-ex the + same as the control plane nodes, as we have a uniform configuration of + the openvswitch agent. Typically should not need to be changed. + type: string HypervisorNeutronPublicInterface: - Default: '' - Description: What interface to add to the HypervisorNeutronPhysicalBridge. - Type: String + default: 'eth0' + description: What interface to add to the HypervisorNeutronPhysicalBridge. + type: string NeutronPublicInterface: - Default: eth0 - Description: What interface to bridge onto br-ex for network nodes. - Type: String + default: eth0 + description: What interface to bridge onto br-ex for network nodes. + type: string NeutronPublicInterfaceDefaultRoute: - Default: '' - Description: A custom default route for the NeutronPublicInterface. - Type: String + default: '' + description: A custom default route for the NeutronPublicInterface. + type: string NeutronPublicInterfaceIP: - Default: '' - Description: A custom IP address to put onto the NeutronPublicInterface. - Type: String + default: '' + description: A custom IP address to put onto the NeutronPublicInterface. + type: string + NeutronPublicInterfaceTag: + default: '' + description: > + VLAN tag for creating a public VLAN. The tag will be used to + create an access port on the exterior bridge for each control plane node, + and that port will be given the IP address returned by neutron from the + public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling + overcloud.yaml to include the deployment of VLAN ports to the control + plane. + type: string NeutronPublicInterfaceRawDevice: - Default: '' - Description: If set, the public interface is a vlan with this device as the raw device. - Type: String + default: '' + description: If set, the public interface is a vlan with this device as the raw device. + type: string NeutronControlPlaneID: - Default: '' - Type: String - Description: Neutron ID for ctlplane network. + default: '' + type: string + description: Neutron ID for ctlplane network. NeutronDnsmasqOptions: - Default: 'dhcp-option-force=26,1400' - Description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead. - Type: String + default: 'dhcp-option-force=26,1400' + description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead. + type: string + NeutronNetworkType: + default: 'gre' + description: The tenant network type for Neutron, either gre or vxlan. + type: string + NeutronTunnelTypes: + default: 'gre' + description: | + The tunnel types for the Neutron tenant network. To specify multiple + values, use a comma separated string, like so: 'gre,vxlan' + type: string controllerImage: - Type: String - Default: overcloud-control + type: string + default: overcloud-control NtpServer: - Type: String - Default: '' + type: string + default: '' RabbitUserName: - Default: guest - Description: The username for RabbitMQ - Type: String + default: guest + description: The username for RabbitMQ + type: string RabbitPassword: - Default: guest - Description: The password for RabbitMQ - Type: String - NoEcho: true + default: guest + description: The password for RabbitMQ + type: string + hidden: true RabbitCookieSalt: - Type: String - Default: unset - Description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change. + type: string + default: unset + description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change. HeatStackDomainAdminPassword: - Description: Password for heat_domain_admin user. - Type: String - Default: '' - NoEcho: true + description: Password for heat_domain_admin user. + type: string + default: '' + hidden: true LiveUpdateUserName: - Type: String - Description: The live-update username for the undercloud Glance API. - Default: '' + type: string + description: The live-update username for the undercloud Glance API. + default: '' LiveUpdateTenantName: - Type: String - Description: The live-update tenant name for the undercloud Glance API. - Default: '' + type: string + description: The live-update tenant name for the undercloud Glance API. + default: '' LiveUpdateHost: - Type: String - Description: The IP address for the undercloud Glance API. - Default: '' + 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. - NoEcho: true + type: string + default: '' + description: The live-update password for the undercloud Glance API. + hidden: true LiveUpdateComputeImage: - Type: String - Description: The image ID for live-updates to the overcloud compute nodes. - Default: '' + type: string + description: The image ID for live-updates to the overcloud compute nodes. + default: '' MysqlInnodbBufferPoolSize: - Description: > + description: > Specifies the size of the buffer pool in megabytes. Setting to zero should be interpreted as "no value" and will defer to the lower level default. - Type: Number - Default: 0 + type: number + default: 0 ControlVirtualInterface: - Default: 'br-ex' - Description: Interface where virtual ip will be assigned. - Type: String + default: 'br-ex' + description: Interface where virtual ip will be assigned. + type: string ControlFixedIPs: - Default: [] - Description: Should be used for arbitrary ips. - Type: Json + default: [] + description: Should be used for arbitrary ips. + type: json PublicVirtualFixedIPs: - Default: [] - Description: | + default: [] + description: > Control the IP allocation for the PublicVirtualInterface port. E.g. [{'ip_address':'1.2.3.4'}] - Type: Json + type: json PublicVirtualInterface: - Default: 'br-ex' - Description: > + default: 'br-ex' + description: > Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used. - Type: String + type: string PublicVirtualNetwork: - Default: 'ctlplane' - Type: String - Description: > + default: 'ctlplane' + type: string + description: > Neutron network to allocate public virtual IP port on. KeystoneCACertificate: - Default: '' - Description: Keystone self-signed certificate authority certificate. - Type: String + default: '' + description: Keystone self-signed certificate authority certificate. + type: string KeystoneSigningCertificate: - Default: '' - Description: Keystone certificate for verifying token validity. - Type: String + default: '' + description: Keystone certificate for verifying token validity. + type: string KeystoneSigningKey: - Default: '' - Description: Keystone key for signing tokens. - Type: String - NoEcho: true -Resources: + default: '' + description: Keystone key for signing tokens. + type: string + hidden: true + DefaultSignalTransport: + default: CFN_SIGNAL + description: Transport to use for software-config signals. + type: string + constraints: + - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ] +resources: ControlVirtualIP: - Type: OS::Neutron::Port - Properties: + type: OS::Neutron::Port + properties: name: control_virtual_ip - network_id: {Ref: NeutronControlPlaneID} + network_id: {get_param: NeutronControlPlaneID} fixed_ips: - Ref: ControlFixedIPs + get_param: ControlFixedIPs MysqlClusterUniquePart: - Type: OS::Heat::RandomString - Properties: + type: OS::Heat::RandomString + properties: + length: 10 + MysqlRootPassword: + type: OS::Heat::RandomString + properties: length: 10 PublicVirtualIP: - Type: OS::Neutron::Port - Properties: + type: OS::Neutron::Port + properties: name: public_virtual_ip - network: {Ref: PublicVirtualNetwork} + network: {get_param: PublicVirtualNetwork} fixed_ips: - Ref: PublicVirtualFixedIPs + get_param: PublicVirtualFixedIPs RabbitCookie: - Type: OS::Heat::RandomString - Properties: + type: OS::Heat::RandomString + properties: length: 20 salt: - Ref: RabbitCookieSalt - NovaCompute0Config: - Type: FileInclude + get_param: RabbitCookieSalt + NovaCompute0Deployment: + type: FileInclude Path: nova-compute-instance.yaml - SubKey: Resources.NovaCompute0Deploy - Parameters: - NovaApiHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} - KeystoneHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} - NeutronHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} - GlanceHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} - NovaDSN: {"Fn::Join": ['', ['mysql://nova:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/nova']]} - CeilometerDSN: {"Fn::Join": ['', ['mysql://ceilometer:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/ceilometer']]} - NeutronDSN: {"Fn::Join": ['', ['mysql://neutron:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/ovs_neutron']]} - NeutronNetworkType: "gre" + SubKey: resources.NovaCompute0Deployment + parameters: + DefaultSignalTransport: + get_param: DefaultSignalTransport + NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + NovaDSN: + Fn::Join: + - '' + - - mysql://nova:unset@ + - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + - /nova + NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} + CeilometerDSN: + Fn::Join: + - '' + - - mysql://ceilometer:unset@ + - *compute_database_host + - /ceilometer + NeutronDSN: + Fn::Join: + - '' + - - mysql://neutron:unset@ + - *compute_database_host + - /ovs_neutron + NeutronNetworkType: + get_param: NeutronNetworkType + NeutronTunnelTypes: + get_param: NeutronTunnelTypes NeutronEnableTunnelling: "True" NeutronFlatNetworks: - Ref: NeutronFlatNetworks - NeutronNetworkVLANRanges: "" + get_param: NeutronFlatNetworks + NeutronNetworkVLANRanges: + get_param: NeutronNetworkVLANRanges NeutronPhysicalBridge: - Ref: HypervisorNeutronPhysicalBridge + get_param: HypervisorNeutronPhysicalBridge NeutronPublicInterface: - Ref: HypervisorNeutronPublicInterface + get_param: HypervisorNeutronPublicInterface NeutronBridgeMappings: - Ref: NeutronBridgeMappings - NovaCompute0AllNodes: - Type: FileInclude + get_param: NeutronBridgeMappings + NovaCompute0AllNodesDeployment: + type: FileInclude Path: nova-compute-instance.yaml - SubKey: Resources.NovaCompute0AllNodesDeploy - Parameters: - AllNodesConfig: {Ref: allNodesConfig} - NovaCompute0Passthrough: - Type: OS::Heat::StructuredDeployment - Properties: - config: {Ref: NovaComputePassthrough} - server: {Ref: NovaCompute0} - signal_transport: NO_SIGNAL - input_values: - passthrough_config: {Ref: ExtraConfig} + SubKey: resources.NovaCompute0AllNodesDeployment + parameters: + AllNodesConfig: {get_resource: allNodesConfig} NovaCompute0: - Type: FileInclude + type: FileInclude + Path: nova-compute-instance.yaml + SubKey: resources.NovaCompute0 + NovaCompute0Passthrough: + type: FileInclude + Path: nova-compute-instance.yaml + SubKey: resources.NovaCompute0Passthrough + parameters: + passthrough_config: {get_param: ExtraConfig} + NovaCompute0PassthroughSpecific: + type: FileInclude Path: nova-compute-instance.yaml - SubKey: Resources.NovaCompute0 + SubKey: resources.NovaCompute0PassthroughSpecific + parameters: + passthrough_config_specific: {get_param: NovaComputeExtraConfig} controllerConfig: - Type: OS::Heat::StructuredConfig - Properties: + type: OS::Heat::StructuredConfig + properties: group: os-apply-config config: admin-password: - Ref: AdminPassword + get_param: AdminPassword admin-token: - Ref: AdminToken + get_param: AdminToken bootstack: public_interface_ip: - Ref: NeutronPublicInterfaceIP + get_param: NeutronPublicInterfaceIP bootstrap_host: bootstrap_nodeid: Fn::Select: @@ -370,18 +462,27 @@ Resources: controller0: - Fn::Select: - name - - Fn::GetAtt: + - get_attr: - controller0 - show nodeid: {get_input: bootstack_nodeid} + database: + host: &database_host + {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} cinder: - db: mysql://cinder:unset@localhost/cinder + db: + Fn::Join: + - '' + - - mysql://cinder:unset@ + - *database_host + - /cinder + debug: {get_param: Debug} volume_size_mb: - Ref: CinderLVMLoopDeviceSize + get_param: CinderLVMLoopDeviceSize service-password: - Ref: CinderPassword + get_param: CinderPassword iscsi-helper: - Ref: CinderISCSIHelper + get_param: CinderISCSIHelper controller-address: get_input: controller_host corosync: @@ -390,7 +491,7 @@ Resources: nodes: Merge::Map: controller0: - ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [controller0, networks]} ]} ] } + ip: {get_attr: [controller0, networks, ctlplane, 0]} pacemaker: stonith_enabled : false recheck_interval : 5 @@ -400,30 +501,42 @@ Resources: registry: host: {get_input: controller_virtual_ip} backend: swift - db: mysql://glance:unset@localhost/glance + db: + Fn::Join: + - '' + - - mysql://glance:unset@ + - *database_host + - /glance + debug: {get_param: Debug} host: get_input: controller_virtual_ip port: - Ref: GlancePort + get_param: GlancePort protocol: - Ref: GlanceProtocol + get_param: GlanceProtocol service-password: - Ref: GlancePassword + get_param: GlancePassword swift-store-user: service:glance swift-store-key: - Ref: GlancePassword + get_param: GlancePassword notifier-strategy: - Ref: GlanceNotifierStrategy + get_param: GlanceNotifierStrategy log-file: - Ref: GlanceLogFile + get_param: GlanceLogFile heat: admin_password: - Ref: HeatPassword + get_param: HeatPassword admin_tenant_name: service admin_user: heat auth_encryption_key: unset___________ - db: mysql://heat:unset@localhost/heat - stack_domain_admin_password: {Ref: HeatStackDomainAdminPassword} + db: + Fn::Join: + - '' + - - mysql://heat:unset@ + - *database_host + - /heat + debug: {get_param: Debug} + stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword} watch_server_url: {get_input: heat.watch_server_url} metadata_server_url: {get_input: heat.metadata_server_url} waitcondition_server_url: {get_input: heat.waitcondition_server_url} @@ -433,99 +546,131 @@ Resources: nodes: Merge::Map: controller0: - {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] } + {get_attr: [controller0, show, name]} keystone: - db: mysql://keystone:unset@localhost/keystone + db: + Fn::Join: + - '' + - - mysql://keystone:unset@ + - *database_host + - /keystone + debug: {get_param: Debug} host: get_input: controller_virtual_ip - ca_certificate: {Ref: KeystoneCACertificate} - signing_key: {Ref: KeystoneSigningKey} - signing_certificate: {Ref: KeystoneSigningCertificate} + ca_certificate: {get_param: KeystoneCACertificate} + signing_key: {get_param: KeystoneSigningKey} + signing_certificate: {get_param: KeystoneSigningCertificate} mysql: - innodb_buffer_pool_size: {Ref: MysqlInnodbBufferPoolSize} + innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize} + local_bind: true + root-password: {get_resource: MysqlRootPassword} nodes: Merge::Map: controller0: - ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [controller0, networks]} ]} ] } + ip: {get_attr: [controller0, networks, ctlplane, 0]} cluster_name: Fn::Join: - '-' - - 'tripleo' - - {Ref: MysqlClusterUniquePart} + - {get_resource: MysqlClusterUniquePart} neutron: - flat-networks: {Ref: NeutronFlatNetworks} + debug: {get_param: Debug} + flat-networks: {get_param: NeutronFlatNetworks} host: {get_input: controller_virtual_ip} metadata_proxy_shared_secret: unset ovs: enable_tunneling: 'True' local_ip: get_input: controller_host - bridge_mappings: {Ref: NeutronBridgeMappings} + network_vlan_ranges: {get_param: NeutronNetworkVLANRanges} + bridge_mappings: {get_param: NeutronBridgeMappings} public_interface: - Ref: NeutronPublicInterface + get_param: NeutronPublicInterface public_interface_raw_device: - Ref: NeutronPublicInterfaceRawDevice + get_param: NeutronPublicInterfaceRawDevice public_interface_route: - Ref: NeutronPublicInterfaceDefaultRoute + get_param: NeutronPublicInterfaceDefaultRoute + public_interface_tag: + get_param: NeutronPublicInterfaceTag physical_bridge: br-ex - tenant_network_type: gre - ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8 + tenant_network_type: + get_param: NeutronNetworkType + tunnel_types: + get_param: NeutronTunnelTypes + ovs_db: + Fn::Join: + - '' + - - mysql://neutron:unset@ + - *database_host + - /ovs_neutron?charset=utf8 service-password: - Ref: NeutronPassword + get_param: NeutronPassword dnsmasq-options: - Ref: NeutronDnsmasqOptions + get_param: NeutronDnsmasqOptions ceilometer: - db: mysql://ceilometer:unset@localhost/ceilometer - metering_secret: {Ref: CeilometerMeteringSecret} + db: + Fn::Join: + - '' + - - mysql://ceilometer:unset@ + - *database_host + - /ceilometer + debug: {get_param: Debug} + metering_secret: {get_param: CeilometerMeteringSecret} service-password: - Ref: CeilometerPassword + get_param: CeilometerPassword snmpd: export_MIB: UCD-SNMP-MIB readonly_user_name: - Ref: SnmpdReadonlyUserName + get_param: SnmpdReadonlyUserName readonly_user_password: - Ref: SnmpdReadonlyUserPassword + get_param: SnmpdReadonlyUserPassword nova: compute_driver: libvirt.LibvirtDriver - db: mysql://nova:unset@localhost/nova + db: + Fn::Join: + - '' + - - mysql://nova:unset@ + - *database_host + - /nova default_floating_pool: ext-net host: {get_input: controller_virtual_ip} metadata-proxy: true service-password: - Ref: NovaPassword + get_param: NovaPassword rabbit: + host: {get_input: controller_virtual_ip} username: - Ref: RabbitUserName + get_param: RabbitUserName password: - Ref: RabbitPassword + get_param: RabbitPassword cookie: - Fn::GetAtt: + get_attr: - RabbitCookie - value ntp: servers: - - {server: {Ref: NtpServer}, fudge: "stratum 0"} + - {server: {get_param: NtpServer}, fudge: "stratum 0"} virtual_interfaces: instances: - vrrp_instance_name: VI_CONTROL virtual_router_id: 51 keepalive_interface: - Ref: ControlVirtualInterface + get_param: ControlVirtualInterface priority: 101 virtual_ips: - - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + - ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} interface: - Ref: ControlVirtualInterface + get_param: ControlVirtualInterface - vrrp_instance_name: VI_PUBLIC virtual_router_id: 52 keepalive_interface: - Ref: PublicVirtualInterface + get_param: PublicVirtualInterface priority: 101 virtual_ips: - - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]} + - ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} interface: - Ref: PublicVirtualInterface + get_param: PublicVirtualInterface vrrp_sync_groups: - name: VG1 members: @@ -533,31 +678,31 @@ Resources: - VI_PUBLIC keepalived: keepalive_interface: - Ref: PublicVirtualInterface + get_param: PublicVirtualInterface priority: 101 virtual_ips: - - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} interface: - Ref: ControlVirtualInterface + get_param: ControlVirtualInterface - - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]} + ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} interface: - Ref: PublicVirtualInterface + get_param: PublicVirtualInterface haproxy: nodes: Merge::Map: controller0: - ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [controller0, networks]} ]} ] } - name: {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] } + ip: {get_attr: [controller0, networks, ctlplane, 0]} + name: {get_attr: [controller0, show, name]} net_binds: - - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + - ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} services: - name: keystone_admin port: 35357 net_binds: &public_binds - - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} - - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]} + - ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + - ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} - name: keystone_public port: 5000 net_binds: *public_binds @@ -585,6 +730,13 @@ Resources: - name: heat_cfn port: 8000 net_binds: *public_binds + - name: mysql + port: 3306 + extra_server_params: + - backup + options: + - timeout client 0 + - timeout server 0 - name: nova_ec2 port: 8773 - name: nova_osapi @@ -599,74 +751,74 @@ Resources: - name: swift_proxy_server port: 8080 net_binds: *public_binds + - name: rabbitmq + port: 5672 + options: + - timeout client 0 + - timeout server 0 controllerPassthrough: - Type: OS::Heat::StructuredConfig - Properties: + type: OS::Heat::StructuredConfig + properties: group: os-apply-config config: {get_input: passthrough_config} + controllerPassthroughSpecific: + type: OS::Heat::StructuredConfig + properties: + group: os-apply-config + config: {get_input: passthrough_config_specific} controller0: - Type: OS::Nova::Server - Properties: + type: OS::Nova::Server + properties: image: - Ref: controllerImage + get_param: controllerImage image_update_policy: - Ref: ImageUpdatePolicy + get_param: ImageUpdatePolicy flavor: - Ref: OvercloudControlFlavor + get_param: OvercloudControlFlavor key_name: - Ref: KeyName + get_param: KeyName networks: - network: ctlplane user_data_format: SOFTWARE_CONFIG - controller0AllNodesConfig: - Type: OS::Heat::StructuredDeployment - Properties: - config: {Ref: allNodesConfig} - server: {Ref: controller0} + controller0AllNodesDeployment: + depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0PassthroughSpecific] + type: OS::Heat::StructuredDeployment + properties: + signal_transport: {get_param: DefaultSignalTransport} + config: {get_resource: allNodesConfig} + server: {get_resource: controller0} controller0Deployment: - Type: OS::Heat::StructuredDeployment - Properties: + type: OS::Heat::StructuredDeployment + properties: signal_transport: NO_SIGNAL - config: {Ref: controllerConfig} - server: {Ref: controller0} + config: {get_resource: controllerConfig} + server: {get_resource: controller0} input_values: - bootstack_nodeid: - Fn::Select: - - name - - Fn::GetAtt: - - controller0 - - show - controller_host: - Fn::Select: - - 0 - - Fn::Select: - - ctlplane - - Fn::GetAtt: - - controller0 - - networks + bootstack_nodeid: {get_attr: [controller0, show, name]} + controller_host: {get_attr: [controller0, networks, ctlplane, 0]} controller_virtual_ip: - {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} heat.watch_server_url: Fn::Join: - '' - - 'http://' - - {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - ':8003' heat.metadata_server_url: Fn::Join: - '' - - 'http://' - - {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - ':8000' heat.waitcondition_server_url: Fn::Join: - '' - - 'http://' - - {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - ':8000/v1/waitcondition' allNodesConfig: - Type: OS::Heat::StructuredConfig - Properties: + type: OS::Heat::StructuredConfig + properties: config: completion-signal: {get_input: deploy_signal_id} hosts: @@ -678,25 +830,35 @@ Resources: NovaCompute0: Fn::Join: - ' ' - - - Fn::Select: - - 0 - - Fn::Select: - - ctlplane - - Fn::GetAtt: - - NovaCompute0 - - networks - - Fn::Select: - - name - - Fn::GetAtt: - - NovaCompute0 - - show + - - {get_attr: [NovaCompute0, networks, ctlplane, 0]} + - {get_attr: [NovaCompute0, show, name]} - Fn::Join: - '.' - - - Fn::Select: - - name - - Fn::GetAtt: - - NovaCompute0 - - show + - - {get_attr: [NovaCompute0, show, name]} + - 'novalocal' + - Fn::Join: + - "\n" + - Merge::Map: + BlockStorage0: + Fn::Join: + - ' ' + - - {get_attr: [BlockStorage0, networks, ctlplane, 0]} + - {get_attr: [BlockStorage0, show, name]} + - Fn::Join: + - '.' + - - {get_attr: [BlockStorage0, show, name]} + - 'novalocal' + - Fn::Join: + - "\n" + - Merge::Map: + SwiftStorage0: + Fn::Join: + - ' ' + - - {get_attr: [SwiftStorage0, networks, ctlplane, 0]} + - {get_attr: [SwiftStorage0, show, name]} + - Fn::Join: + - '.' + - - {get_attr: [SwiftStorage0, show, name]} - 'novalocal' - Fn::Join: - "\n" @@ -704,64 +866,54 @@ Resources: controller0: Fn::Join: - ' ' - - - Fn::Select: - - 0 - - Fn::Select: - - ctlplane - - Fn::GetAtt: - - controller0 - - networks - - Fn::Select: - - name - - Fn::GetAtt: - - controller0 - - show + - - {get_attr: [controller0, networks, ctlplane, 0]} + - {get_attr: [controller0, show, name]} - Fn::Join: - '.' - - - Fn::Select: - - name - - Fn::GetAtt: - - controller0 - - show + - - {get_attr: [controller0, show, name]} - 'novalocal' - - {Ref: CloudName} + - {get_param: CloudName} rabbit: nodes: Fn::Join: - ',' - Merge::Map: controller0: - {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] } + {get_attr: [controller0, show, name]} controller0SSLDeployment: - Type: OS::Heat::StructuredDeployment - Properties: - config: {Ref: SSLConfig} - server: {Ref: controller0} + type: OS::Heat::StructuredDeployment + properties: + config: {get_resource: SSLConfig} + server: {get_resource: controller0} signal_transport: NO_SIGNAL input_values: - ssl_certificate: {Ref: SSLCertificate} - ssl_key: {Ref: SSLKey} - ssl_ca_certificate: {Ref: SSLCACertificate} + controller_host: {get_attr: [controller0, networks, ctlplane, 0]} + ssl_certificate: {get_param: SSLCertificate} + ssl_key: {get_param: SSLKey} + ssl_ca_certificate: {get_param: SSLCACertificate} controller0Passthrough: - Type: OS::Heat::StructuredDeployment - Properties: - config: {Ref: controllerPassthrough} - server: {Ref: controller0} + type: OS::Heat::StructuredDeployment + properties: + config: {get_resource: controllerPassthrough} + server: {get_resource: controller0} signal_transport: NO_SIGNAL input_values: - passthrough_config: {Ref: ExtraConfig} -Outputs: + passthrough_config: {get_param: ExtraConfig} + controller0PassthroughSpecific: + depends_on: [controller0Passthrough] + type: OS::Heat::StructuredDeployment + properties: + config: {get_resource: controllerPassthroughSpecific} + server: {get_resource: controller0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config_specific: {get_param: controllerExtraConfig} +outputs: KeystoneURL: - Description: URL for the Overcloud Keystone service - Value: + description: URL for the Overcloud Keystone service + value: Fn::Join: - '' - - http:// - - Fn::Select: - - ip_address - - Fn::Select: - - 0 - - Fn::GetAtt: - - ControlVirtualIP - - fixed_ips + - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - :5000/v2.0/