X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=overcloud-without-mergepy.yaml;h=f661d04c3a2aeac8e05fa0a75f24d82677b5d1b0;hb=9a1c402343a73e9442768e1864ed6a36c9bca3f6;hp=8cb041b79d7554b1055c96e6b9d6e886706f2f10;hpb=8dd57aa961b9aaf93d19bd71ab14746ed7a7a514;p=apex-tripleo-heat-templates.git diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml index 8cb041b7..f661d04c 100644 --- a/overcloud-without-mergepy.yaml +++ b/overcloud-without-mergepy.yaml @@ -25,6 +25,23 @@ parameters: description: The password for the ceilometer service account. type: string hidden: true + # This has to be an UUID so for now we generate it outside the template + CephClusterFSID: + default: '' + type: string + description: The Ceph cluster FSID. Must be a UUID. + CephMonKey: + default: '' + description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key. + type: string + CephAdminKey: + default: '' + description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key. + type: string + CinderEnableIscsiBackend: + default: true + description: Whether to enable or not the Iscsi backend for Cinder + type: boolean CloudName: default: '' description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org @@ -107,12 +124,42 @@ parameters: overcloud.yaml to include the deployment of VLAN ports to the control plane. type: string + NeutronComputeAgentMode: + default: 'dvr' + description: Agent mode for the neutron-l3-agent on the compute hosts + type: string + NeutronAgentMode: + default: 'dvr_snat' + description: Agent mode for the neutron-l3-agent on the controller hosts + type: string + NeutronDVR: + default: 'False' + description: Whether to configure Neutron Distributed Virtual Routers + type: string + NeutronMetadataProxySharedSecret: + default: 'unset' + description: Shared secret to prevent spoofing + 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 + NeutronMechanismDrivers: + default: 'openvswitch' + description: | + The mechanism drivers for the Neutron tenant network. To specify multiple + values, use a comma separated string, like so: 'openvswitch,l2_population' + type: string + NeutronAllowL3AgentFailover: + default: 'True' + description: Allow automatic l3-agent failover + type: string + NeutronL3HA: + default: 'False' + description: Whether to enable l3-agent HA + type: string NovaPassword: default: unset description: The password for the nova service account, used by nova-api. @@ -136,6 +183,7 @@ parameters: type: string default: unset description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change. + # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed RabbitUserName: default: guest description: The username for RabbitMQ @@ -145,6 +193,16 @@ parameters: description: The password for RabbitMQ type: string hidden: true + RabbitClientUseSSL: + default: false + description: > + Rabbit client subscriber parameter to specify + an SSL connection to the RabbitMQ host. + type: string + RabbitClientPort: + default: 5672 + description: Set rabbit subscriber port, change this if using SSL + type: number SnmpdReadonlyUserName: default: ro_snmp_user description: The user name for SNMPd with readonly rights running on all Overcloud nodes @@ -155,13 +213,16 @@ parameters: type: string hidden: true - # Controller-specific params AdminToken: default: unset description: The keystone auth secret. type: string hidden: true + CinderEnableRbdBackend: + default: false + description: Whether to enable or not the Rbd backend for Cinder + type: boolean CinderLVMLoopDeviceSize: default: 5000 description: The size of the loopback file used by the cinder LVM driver. @@ -190,7 +251,6 @@ parameters: constraints: - custom_constraint: glance.image OvercloudControlFlavor: - default: baremetal description: Flavor for control nodes to request when deploying. type: string constraints: @@ -199,6 +259,23 @@ parameters: default: 'br-ex' description: Interface where virtual ip will be assigned. type: string + EnableGalera: + default: true + description: Whether to use Galera instead of regular MariaDB. + type: boolean + EnablePacemaker: + default: true + description: If enabled services will be monitored by Pacemaker; it + will manage VIPs as well, in place of Keepalived. + type: boolean + ControllerEnableCephStorage: + default: false + description: Whether to deploy Ceph Storage (OSD) on the Controller + type: boolean + ControllerEnableSwiftStorage: + default: true + description: Whether to enable Swift Storage on the Controller + type: boolean ExtraConfig: default: {} description: | @@ -273,6 +350,15 @@ parameters: description: Keystone key for signing tokens. type: string hidden: true + KeystoneSSLCertificate: + default: '' + description: Keystone certificate for verifying token validity. + type: string + KeystoneSSLCertificateKey: + default: '' + description: Keystone key for signing tokens. + type: string + hidden: true MysqlInnodbBufferPoolSize: description: > Specifies the size of the buffer pool in megabytes. Setting to @@ -326,13 +412,21 @@ parameters: description: The password for the swift service account, used by the swift proxy services. type: string hidden: true + SwiftMountCheck: + default: 'false' + description: Value of mount_check in Swift account/container/object -server.conf + type: boolean + SwiftMinPartHours: + type: number + default: 1 + description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance. SwiftPartPower: default: 10 description: Partition Power to use when building Swift rings type: number SwiftReplicas: type: number - default: 1 + default: 3 description: How many replicas to use in the swift rings. # Compute-specific params @@ -375,6 +469,10 @@ parameters: NovaComputeLibvirtType: default: '' type: string + NovaEnableRbdBackend: + default: false + description: Whether to enable or not the Rbd backend for Nova + type: boolean NovaImage: type: string default: overcloud-compute @@ -383,36 +481,59 @@ parameters: OvercloudComputeFlavor: description: Use this flavor type: string - default: baremetal constraints: - custom_constraint: nova.flavor # Block storage specific parameters BlockStorageCount: type: number - default: 1 + default: 0 BlockStorageImage: default: overcloud-cinder-volume type: string OvercloudBlockStorageFlavor: - default: baremetal description: Flavor for block storage nodes to request when deploying. type: string + constraints: + - custom_constraint: nova.flavor # Object storage specific parameters ObjectStorageCount: type: number default: 0 OvercloudSwiftStorageFlavor: - default: baremetal description: Flavor for Swift storage nodes to request when deploying. type: string + constraints: + - custom_constraint: nova.flavor SwiftStorageImage: default: overcloud-swift-storage type: string +# Ceph storage specific parameters + CephStorageCount: + type: number + default: 0 + CephStorageImage: + default: overcloud-ceph-storage + type: string + OvercloudCephStorageFlavor: + default: baremetal + description: Flavor for Ceph storage nodes to request when deploying. + type: string + constraints: + - custom_constraint: nova.flavor + resources: + HeatAuthEncryptionKey: + type: OS::Heat::RandomString + + PcsdPassword: + type: OS::Heat::RandomString + properties: + length: 16 + Controller: type: OS::Heat::ResourceGroup properties: @@ -427,9 +548,16 @@ resources: CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize} CinderPassword: {get_param: CinderPassword} CinderISCSIHelper: {get_param: CinderISCSIHelper} + CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend} + CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend} CloudName: {get_param: CloudName} ControlVirtualInterface: {get_param: ControlVirtualInterface} ControllerExtraConfig: {get_param: controllerExtraConfig} + Debug: {get_param: Debug} + EnableGalera: {get_param: EnableGalera} + EnablePacemaker: {get_param: EnablePacemaker} + EnableCephStorage: {get_param: ControllerEnableCephStorage} + EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage} ExtraConfig: {get_param: ExtraConfig} Flavor: {get_param: OvercloudControlFlavor} GlancePort: {get_param: GlancePort} @@ -439,12 +567,15 @@ resources: GlanceLogFile: {get_param: GlanceLogFile} HeatPassword: {get_param: HeatPassword} HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword} + HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey} Image: {get_param: controllerImage} ImageUpdatePolicy: {get_param: ImageUpdatePolicy} KeyName: {get_param: KeyName} KeystoneCACertificate: {get_param: KeystoneCACertificate} KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate} KeystoneSigningKey: {get_param: KeystoneSigningKey} + KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate} + KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey} MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]} MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize} MysqlRootPassword: {get_attr: [MysqlRootPassword, value]} @@ -457,18 +588,31 @@ resources: NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice} NeutronPassword: {get_param: NeutronPassword} NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions} + NeutronDVR: {get_param: NeutronDVR} + NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret} + NeutronAgentMode: {get_param: NeutronAgentMode} + NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers} + NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover} + NeutronL3HA: {get_param: NeutronL3HA} + NeutronNetworkType: {get_param: NeutronNetworkType} + NeutronTunnelTypes: {get_param: NeutronTunnelTypes} NovaPassword: {get_param: NovaPassword} NtpServer: {get_param: NtpServer} + PcsdPassword: {get_resource: PcsdPassword} PublicVirtualInterface: {get_param: PublicVirtualInterface} - RabbitUserName: {get_param: RabbitUserName} RabbitPassword: {get_param: RabbitPassword} + RabbitUserName: {get_param: RabbitUserName} RabbitCookie: {get_attr: [RabbitCookie, value]} + RabbitClientUseSSL: {get_param: RabbitClientUseSSL} + RabbitClientPort: {get_param: RabbitClientPort} SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName} SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword} SSLCertificate: {get_param: SSLCertificate} SSLKey: {get_param: SSLKey} SSLCACertificate: {get_param: SSLCACertificate} SwiftHashSuffix: {get_param: SwiftHashSuffix} + SwiftMountCheck: {get_param: SwiftMountCheck} + SwiftMinPartHours: {get_param: SwiftMinPartHours} SwiftPartPower: {get_param: SwiftPartPower} SwiftPassword: {get_param: SwiftPassword} SwiftReplicas: { get_param: SwiftReplicas} @@ -486,6 +630,7 @@ resources: CeilometerComputeAgent: {get_param: CeilometerComputeAgent} CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret} CeilometerPassword: {get_param: CeilometerPassword} + Debug: {get_param: Debug} ExtraConfig: {get_param: ExtraConfig} Flavor: {get_param: OvercloudComputeFlavor} GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} @@ -505,36 +650,29 @@ resources: NeutronPassword: {get_param: NeutronPassword} NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge} NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface} + NeutronDVR: {get_param: NeutronDVR} + NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret} + NeutronAgentMode: {get_param: NeutronComputeAgentMode} + NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice} + NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers} + # L3 HA and Failover is not relevant for Computes, should be removed + NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover} + NeutronL3HA: {get_param: NeutronL3HA} NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} NovaComputeDriver: {get_param: NovaComputeDriver} NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig} NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType} + NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend} NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} NovaPassword: {get_param: NovaPassword} NtpServer: {get_param: NtpServer} RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} RabbitPassword: {get_param: RabbitPassword} RabbitUserName: {get_param: RabbitUserName} + RabbitClientUseSSL: {get_param: RabbitClientUseSSL} + RabbitClientPort: {get_param: RabbitClientPort} SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName} SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword} - NovaDSN: - list_join: - - '' - - - mysql://nova:unset@ - - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - - /nova - CeilometerDSN: - list_join: - - '' - - - mysql://ceilometer:unset@ - - *compute_database_host - - /ceilometer - NeutronDSN: - list_join: - - '' - - - mysql://neutron:unset@ - - *compute_database_host - - /ovs_neutron BlockStorage: type: OS::Heat::ResourceGroup @@ -543,20 +681,20 @@ resources: resource_def: type: OS::TripleO::BlockStorage properties: - AdminPassword: {get_param: AdminPassword} + Debug: {get_param: Debug} Image: {get_param: BlockStorageImage} CinderISCSIHelper: {get_param: CinderISCSIHelper} CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize} - CinderPassword: {get_param: CinderPassword} + # Purpose of the dedicated BlockStorage nodes should be to use their local LVM + CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend} 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} + RabbitClientUseSSL: {get_param: RabbitClientUseSSL} + RabbitClientPort: {get_param: RabbitClientPort} + NtpServer: {get_param: NtpServer} ObjectStorage: type: OS::Heat::ResourceGroup @@ -565,43 +703,38 @@ resources: 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} + MountCheck: {get_param: SwiftMountCheck} + MinPartHours: {get_param: SwiftMinPartHours} PartPower: {get_param: SwiftPartPower} - Password: {get_param: SwiftPassword} Image: {get_param: SwiftStorageImage} Replicas: { get_param: SwiftReplicas} + NtpServer: {get_param: NtpServer} + CephStorage: + type: OS::Heat::ResourceGroup + properties: + count: {get_param: CephStorageCount} + resource_def: + type: OS::TripleO::CephStorage + properties: + Image: {get_param: CephStorageImage} + KeyName: {get_param: KeyName} + Flavor: {get_param: OvercloudCephStorageFlavor} + NtpServer: {get_param: NtpServer} allNodesConfig: - type: OS::Heat::StructuredConfig + type: OS::TripleO::AllNodes::SoftwareConfig properties: - config: - completion-signal: {get_input: deploy_signal_id} - hosts: - list_join: - - "\n" - - - list_join: - - "\n" - - {get_attr: [Compute, hosts_entry]} - - list_join: - - "\n" - - {get_attr: [Controller, hosts_entry]} - - list_join: - - "\n" - - {get_attr: [BlockStorage, hosts_entry]} - - list_join: - - "\n" - - {get_attr: [ObjectStorage, hosts_entry]} - rabbit: - nodes: - list_join: - - ',' - - {get_attr: [Controller, hostname]} + compute_hosts: {get_attr: [Compute, hosts_entry]} + controller_hosts: {get_attr: [Controller, hosts_entry]} + controller_ips: {get_attr: [Controller, ip_address]} + block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]} + object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]} + ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]} + controller_names: {get_attr: [Controller, hostname]} MysqlRootPassword: type: OS::Heat::RandomString @@ -636,53 +769,65 @@ resources: replacement_policy: AUTO ControllerBootstrapNodeConfig: - type: OS::Heat::StructuredConfig + type: OS::TripleO::BootstrapNode::SoftwareConfig properties: - group: os-apply-config - config: - bootstrap_host: - bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]} + bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]} + bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]} ControllerBootstrapNodeDeployment: type: OS::Heat::StructuredDeployments properties: - config: {get_resource: ControllerBootstrapNodeConfig} + 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_resource: SwiftDevicesAndProxyConfig} + 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_resource: SwiftDevicesAndProxyConfig} + config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]} servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} signal_transport: NO_SIGNAL SwiftDevicesAndProxyConfig: - type: OS::Heat::StructuredConfig + type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig properties: - group: os-apply-config - config: - swift: - devices: - list_join: - - ", " - - - list_join: - - ", " - - {get_attr: [Controller, swift_device]} - - list_join: - - ", " - - {get_attr: [ObjectStorage, swift_device]} - proxy-memcache: - list_join: - - "," - - {get_attr: [Controller, swift_proxy_memcache]} + controller_swift_devices: {get_attr: [Controller, swift_device]} + object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]} + controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]} + + ComputeCephDeployment: + type: OS::Heat::StructuredDeployments + properties: + config: {get_attr: [CephClusterConfig, config_id]} + servers: {get_attr: [Compute, attributes, nova_server_resource]} + + ControllerCephDeployment: + type: OS::Heat::StructuredDeployments + properties: + config: {get_attr: [CephClusterConfig, config_id]} + servers: {get_attr: [Controller, attributes, nova_server_resource]} + + CephStorageCephDeployment: + type: OS::Heat::StructuredDeployments + properties: + config: {get_attr: [CephClusterConfig, config_id]} + servers: {get_attr: [CephStorage, attributes, nova_server_resource]} + + CephClusterConfig: + type: OS::TripleO::CephClusterConfig::SoftwareConfig + properties: + ceph_fsid: {get_param: CephClusterFSID} + ceph_mon_key: {get_param: CephMonKey} + ceph_admin_key: {get_param: CephAdminKey} + ceph_mon_names: {get_attr: [Controller, hostname]} + ceph_mon_ips: {get_attr: [Controller, ip_address]} ControllerClusterConfig: type: OS::Heat::StructuredConfig @@ -709,15 +854,63 @@ resources: ControllerAllNodesDeployment: type: OS::Heat::StructuredDeployments properties: - config: {get_resource: allNodesConfig} + config: {get_attr: [allNodesConfig, config_id]} servers: {get_attr: [Controller, attributes, nova_server_resource]} ComputeAllNodesDeployment: type: OS::Heat::StructuredDeployments properties: - config: {get_resource: allNodesConfig} + config: {get_attr: [allNodesConfig, config_id]} + servers: {get_attr: [Compute, attributes, nova_server_resource]} + + BlockStorageAllNodesDeployment: + type: OS::Heat::StructuredDeployments + properties: + config: {get_attr: [allNodesConfig, config_id]} + servers: {get_attr: [BlockStorage, attributes, nova_server_resource]} + + ObjectStorageAllNodesDeployment: + type: OS::Heat::StructuredDeployments + properties: + config: {get_attr: [allNodesConfig, config_id]} + servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} + + CephStorageAllNodesDeployment: + type: OS::Heat::StructuredDeployments + properties: + config: {get_attr: [allNodesConfig, config_id]} + servers: {get_attr: [CephStorage, attributes, nova_server_resource]} + + # Nested stack deployment runs after all other controller deployments + ControllerNodesPostDeployment: + type: OS::TripleO::ControllerPostDeployment + depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment] + properties: + servers: {get_attr: [Controller, attributes, nova_server_resource]} + + ComputeNodesPostDeployment: + type: OS::TripleO::ComputePostDeployment + depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment] + properties: servers: {get_attr: [Compute, attributes, nova_server_resource]} + ObjectStorageNodesPostDeployment: + type: OS::TripleO::ObjectStoragePostDeployment + depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment] + properties: + servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} + + BlockStorageNodesPostDeployment: + type: OS::TripleO::BlockStoragePostDeployment + depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment] + properties: + servers: {get_attr: [BlockStorage, attributes, nova_server_resource]} + + CephStorageNodesPostDeployment: + type: OS::TripleO::CephStoragePostDeployment + depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment] + properties: + servers: {get_attr: [CephStorage, attributes, nova_server_resource]} outputs: KeystoneURL: