X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=nova-compute-instance.yaml;h=00658ff259b2eb3a68c4001b26dec279545ab6bc;hb=bf62abdc07ec9255122ff1a9155cf9fb809cda09;hp=55665dce8a157260254f38fb0fe4b286a9663a90;hpb=ff0959a200cfad26d0c688bf293e3ebeb365ff48;p=apex-tripleo-heat-templates.git diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml index 55665dce..00658ff2 100644 --- a/nova-compute-instance.yaml +++ b/nova-compute-instance.yaml @@ -1,195 +1,252 @@ -HeatTemplateFormatVersion: '2012-12-12' -Description: 'Nova Compute' -Parameters: +heat_template_version: 2013-05-23 +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 - Flavor: - Description: Use this flavor - Type: String - Default: baremetal + default: unset + description: The password for the keystone admin account, used for monitoring, querying neutron etc. + type: string + hidden: true + ExtraConfig: + description: | + Additional configuration to inject into the cluster. The JSON should have + the following structure: + {"FILEKEY": + {"config": + [{"section": "SECTIONNAME", + "values": + [{"option": "OPTIONNAME", + "value": "VALUENAME" + } + ] + } + ] + } + } + For instance: + {"nova": + {"config": + [{"section": "default", + "values": + [{"option": "compute_manager", + "value": "ironic.nova.compute.manager.ClusterComputeManager" + } + ] + }, + {"section": "cells", + "values": + [{"option": "driver", + "value": "nova.cells.rpc_driver.CellsRPCDriver" + } + ] + } + ] + } + } + type: json + 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 + default: 'REBUILD_PRESERVE_EPHEMERAL' + 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 + type: string + default: overcloud-compute + NtpServer: + type: string + default: '' KeystoneHost: - Type: String + type: string NeutronFlatNetworks: - Type: String - Default: '' - Description: If set, flat networks to configure in neutron plugins. + type: string + default: '' + description: If set, flat networks to configure in neutron plugins. NeutronHost: - Type: String + type: string NeutronPhysicalBridge: - Default: '' - Description: An OVS bridge to create for accessing external networks. - Type: String + 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 + default: '' + description: A port to add to the NeutronPhysicalBridge. + type: string RabbitHost: - Type: String + type: string RabbitUserName: - Type: String + type: string RabbitPassword: - Type: String - NoEcho: true + 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 + SnmpdReadonlyUserPassword: + default: unset + description: The user password for SNMPd with readonly rights running on all Overcloud nodes + type: string + hidden: true NovaComputeDriver: - Type: String - Default: libvirt.LibvirtDriver + type: string + default: libvirt.LibvirtDriver NovaComputeLibvirtType: - Type: String - Default: '' + type: string + default: '' NovaApiHost: - Type: String + type: string 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 GlanceHost: - Type: String + type: string + GlancePort: + 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 CeilometerDSN: - Type: String + type: string NovaDSN: - Type: String + type: string NeutronDSN: - Type: String + type: string NeutronBridgeMappings: - Type: String + type: string NeutronNetworkVLANRanges: - Type: String + type: string NeutronNetworkType: - Type: String + 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 + type: string + AllNodesConfig: + type: string + description: OS::Heat::Config to use for all nodes deployment + LiveUpdateUserName: + 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: '' + 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 + LiveUpdateComputeImage: + type: string + description: The image ID for live-updates to the overcloud compute nodes. + default: '' + DefaultSignalTransport: + default: CFN_SIGNAL + description: Transport to use for software-config signals. + type: string + constraints: + - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ] +resources: NovaCompute0: - Type: OS::Nova::Server - Properties: + type: OS::Nova::Server + properties: image: - {Ref: NovaImage} + {get_param: NovaImage} image_update_policy: - Ref: ImageUpdatePolicy - flavor: {Ref: Flavor} - 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} + get_param: ImageUpdatePolicy + flavor: {get_param: OvercloudComputeFlavor} + key_name: {get_param: KeyName} + networks: + - network: ctlplane + user_data_format: SOFTWARE_CONFIG + NovaCompute0Deployment: + depends_on: [controller0AllNodesDeployment] + type: OS::Heat::StructuredDeployment + properties: + signal_transport: NO_SIGNAL + config: {get_resource: NovaComputeConfig} + server: {get_resource: NovaCompute0} + input_values: + nova_compute_driver: {get_param: NovaComputeDriver} + nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType} + nova_dsn: {get_param: NovaDSN} + nova_api_host: {get_param: NovaApiHost} + nova_password: {get_param: NovaPassword} + ceilometer_dsn: {get_param: CeilometerDSN} + ceilometer_metering_secret: {get_param: CeilometerMeteringSecret} + ceilometer_password: {get_param: CeilometerPassword} + ceilometer_compute_agent: {get_param: CeilometerComputeAgent} + snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName} + snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword} + glance_host: {get_param: GlanceHost} + glance_port: {get_param: GlancePort} + glance_protocol: {get_param: GlanceProtocol} + keystone_host: {get_param: KeystoneHost} + neutron_flat_networks: {get_param: NeutronFlatNetworks} + neutron_host: {get_param: NeutronHost} + neutron_dsn: {get_param: NeutronDSN} + neutron_local_ip: {get_attr: [NovaCompute0, networks, ctlplane, 0]} + neutron_tenant_network_type: {get_param: NeutronNetworkType} + neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges} + neutron_bridge_mappings: {get_param: NeutronBridgeMappings} + neutron_enable_tunneling: {get_param: NeutronEnableTunnelling} + neutron_physical_bridge: {get_param: NeutronPhysicalBridge} + neutron_public_interface: {get_param: NeutronPublicInterface} + neutron_password: {get_param: NeutronPassword} + admin_password: {get_param: AdminPassword} + rabbit_host: {get_param: RabbitHost} + rabbit_username: {get_param: RabbitUserName} + rabbit_password: {get_param: RabbitPassword} + live_update_host: {get_param: LiveUpdateHost} + live_update_username: {get_param: LiveUpdateUserName} + live_update_password: {get_param: LiveUpdatePassword} + live_update_tenant_name: {get_param: LiveUpdateTenantName} + nova_image: {get_param: NovaImage} + live_update_image_id: {get_param: LiveUpdateComputeImage} + ntp_server: {get_param: NtpServer} + NovaCompute0AllNodesDeployment: + depends_on: [NovaCompute0Passthrough] + type: OS::Heat::StructuredDeployment + properties: + signal_transport: {get_param: DefaultSignalTransport} + config: {get_param: AllNodesConfig} + server: {get_resource: NovaCompute0} + NovaCompute0Passthrough: + depends_on: [NovaCompute0Deployment] + type: OS::Heat::StructuredDeployment + properties: + config: {get_resource: NovaComputePassthrough} + server: {get_resource: NovaCompute0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config: {get_param: ExtraConfig}