HeatTemplateFormatVersion: '2012-12-12' Description: 'Nova Compute' Parameters: AdminPassword: Default: unset Description: The password for the keystone admin account, used for monitoring, querying neutron etc. Type: String NoEcho: true KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instances Type: String Default: default OvercloudComputeFlavor: Description: Use this flavor Type: String Default: baremetal ImageUpdatePolicy: Default: 'REPLACE' Description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt. Type: String NovaImage: Type: String Default: overcloud-compute KeystoneHost: Type: String NeutronFlatNetworks: Type: String Default: '' Description: If set, flat networks to configure in neutron plugins. NeutronHost: Type: String NeutronPhysicalBridge: Default: '' Description: An OVS bridge to create for accessing external networks. Type: String NeutronPublicInterface: Default: '' Description: A port to add to the NeutronPhysicalBridge. Type: String RabbitHost: Type: String RabbitUserName: Type: String RabbitPassword: Type: String NoEcho: true CeilometerComputeAgent: Description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly Type: String Default: '' AllowedValues: ['', Present] CeilometerMeteringSecret: Default: unset Description: Secret shared by the ceilometer services. Type: String NoEcho: true CeilometerPassword: Default: unset Description: The password for the ceilometer service account. Type: String NoEcho: true NovaComputeDriver: Type: String Default: libvirt.LibvirtDriver NovaComputeLibvirtType: Type: String Default: '' NovaApiHost: Type: String NovaPassword: Default: unset Description: The password for the nova service account, used by nova-api. Type: String NoEcho: true GlanceHost: Type: String CeilometerDSN: Type: String NovaDSN: Type: String NeutronDSN: Type: String NeutronBridgeMappings: Type: String NeutronNetworkVLANRanges: Type: String NeutronNetworkType: Type: String NeutronEnableTunnelling: Type: String StaticHosts: Default: '' Description: Static content to append to /etc/hosts Type: String Resources: ComputeAccessPolicy: Type: OS::Heat::AccessPolicy Properties: AllowedResources: [ NovaCompute0 ] ComputeUser: Type: AWS::IAM::User Properties: Policies: [ { Ref: ComputeAccessPolicy } ] NovaCompute0Key: Type: AWS::IAM::AccessKey Properties: UserName: Ref: ComputeUser NovaCompute0CompletionCondition: Type: AWS::CloudFormation::WaitCondition DependsOn: notCompute0 Properties: Handle: {Ref: NovaCompute0CompletionHandle} Count: '1' Timeout: '1800' NovaCompute0CompletionHandle: Type: AWS::CloudFormation::WaitConditionHandle NovaCompute0: Type: OS::Nova::Server Properties: image: {Ref: NovaImage} image_update_policy: Ref: ImageUpdatePolicy flavor: {Ref: OvercloudComputeFlavor} key_name: {Ref: KeyName} Metadata: os-collect-config: cfn: access_key_id: Ref: NovaCompute0Key secret_access_key: Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ] stack_name: {Ref: 'AWS::StackName'} path: NovaCompute0Config.Metadata OpenStack::ImageBuilder::Elements: [ nova-compute ] NovaCompute0Config: Type: AWS::AutoScaling::LaunchConfiguration Properties: InstanceType: '0' ImageId: '0' Metadata: completion-handle: Ref: NovaCompute0CompletionHandle os-collect-config: cfn: access_key_id: Ref: NovaCompute0Key secret_access_key: Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ] stack_name: {Ref: 'AWS::StackName'} path: NovaCompute0Config.Metadata nova: compute_driver: {Ref: NovaComputeDriver} compute_libvirt_type: {Ref: NovaComputeLibvirtType} db: {Ref: NovaDSN} host: {Ref: NovaApiHost} service-password: Ref: NovaPassword ceilometer: db: {Ref: CeilometerDSN} metering_secret: {Ref: CeilometerMeteringSecret} service-password: {Ref: CeilometerPassword} compute_agent: {Ref: CeilometerComputeAgent} glance: host: {Ref: GlanceHost} hosts: {Ref: StaticHosts} keystone: host: {Ref: KeystoneHost} neutron: flat-networks: {Ref: NeutronFlatNetworks} host: {Ref: NeutronHost} ovs_db: {Ref: NeutronDSN} ovs: local_ip: Fn::Select: - 0 - Fn::Select: - ctlplane - Fn::GetAtt: - NovaCompute0 - networks tenant_network_type: {Ref: NeutronNetworkType} network_vlan_ranges: {Ref: NeutronNetworkVLANRanges} bridge_mappings: {Ref: NeutronBridgeMappings} enable_tunneling: {Ref: NeutronEnableTunnelling} physical_bridge: {Ref: NeutronPhysicalBridge} public_interface: {Ref: NeutronPublicInterface} service-password: Ref: NeutronPassword admin-password: {Ref: AdminPassword} rabbit: host: {Ref: RabbitHost} username: {Ref: RabbitUserName} password: {Ref: RabbitPassword}