Parameter to enable/disable controller swift store
[apex-tripleo-heat-templates.git] / overcloud-without-mergepy.yaml
index d07d685..f661d04 100644 (file)
@@ -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
@@ -139,6 +156,10 @@ parameters:
     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.
@@ -162,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
@@ -191,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.
@@ -234,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: |
@@ -370,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
@@ -419,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
@@ -433,7 +487,7 @@ parameters:
 # Block storage specific parameters
   BlockStorageCount:
     type: number
-    default: 1
+    default: 0
   BlockStorageImage:
     default: overcloud-cinder-volume
     type: string
@@ -456,8 +510,30 @@ 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
+
+  PcsdPassword:
+    type: OS::Heat::RandomString
+    properties:
+      length: 16
+
   Controller:
     type: OS::Heat::ResourceGroup
     properties:
@@ -472,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}
@@ -484,6 +567,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}
@@ -509,13 +593,15 @@ resources:
           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}
@@ -525,6 +611,8 @@ resources:
           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}
@@ -542,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]}
@@ -566,25 +655,24 @@ 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}
           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}
-          CeilometerDSN:
-            list_join:
-              - ''
-              - - mysql://ceilometer:unset@
-                - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
-                - /ceilometer
 
   BlockStorage:
     type: OS::Heat::ResourceGroup
@@ -593,16 +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}
           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
@@ -611,47 +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]}
-        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
@@ -686,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
@@ -759,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: