X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=overcloud-without-mergepy.yaml;h=be324524a186196ef94b68684d532d8f4ea141b1;hb=2f5d1a609e9863beff19d021dae184aecbe75e2c;hp=b7f529a343bf2fa9c0b2677db0684e375fcf42c9;hpb=dd80103568c275ca8405c5a146a3bb010e1a7fc7;p=apex-tripleo-heat-templates.git diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml index b7f529a3..be324524 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. + CephMonKey: + default: '' + description: The Ceph monitors key. + type: string + CephAdminKey: + default: '' + description: The Ceph admin client 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 @@ -195,13 +212,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. @@ -431,6 +451,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 @@ -468,8 +492,25 @@ parameters: 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 + Controller: type: OS::Heat::ResourceGroup properties: @@ -484,6 +525,8 @@ 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} @@ -496,6 +539,7 @@ 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} @@ -581,12 +625,14 @@ resources: 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} @@ -606,6 +652,8 @@ resources: Image: {get_param: BlockStorageImage} CinderISCSIHelper: {get_param: CinderISCSIHelper} CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize} + # 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} Flavor: {get_param: OvercloudBlockStorageFlavor} @@ -630,36 +678,28 @@ resources: 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]} - sysctl: - net.ipv4.tcp_keepalive_time: 5 - net.ipv4.tcp_keepalive_probes: 5 - net.ipv4.tcp_keepalive_intvl: 1 + 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 @@ -694,53 +734,64 @@ 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]} 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 @@ -767,15 +818,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 + 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: