Add allNodesConfig to Swift storage nodes
[apex-tripleo-heat-templates.git] / overcloud-without-mergepy.yaml
index 80fd202..8532081 100644 (file)
@@ -194,7 +194,18 @@ parameters:
     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
     type: string
     hidden: true
-
+  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
 
   # Controller-specific params
   AdminToken:
@@ -468,6 +479,18 @@ 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
+
 resources:
 
   Controller:
@@ -603,16 +626,15 @@ resources:
       resource_def:
         type: OS::TripleO::BlockStorage
         properties:
-          AdminPassword: {get_param: AdminPassword}
           Image: {get_param: BlockStorageImage}
           CinderISCSIHelper: {get_param: CinderISCSIHelper}
           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
-          CinderPassword: {get_param: CinderPassword}
           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}
+          NtpServer: {get_param: NtpServer}
 
   ObjectStorage:
     type: OS::Heat::ResourceGroup
@@ -629,37 +651,32 @@ resources:
           PartPower: {get_param: SwiftPartPower}
           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}
+          CephClusterFSID: {get_param: CephClusterFSID}
+          CephMonKey: {get_param: CephMonKey}
+          CephAdminKey: {get_param: CephAdminKey}
+          CephMonitors: {get_attr: [Controller, corosync_node]}
 
   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]}
+      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 +711,37 @@ 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]}
 
   ControllerClusterConfig:
     type: OS::Heat::StructuredConfig
@@ -767,15 +768,51 @@ 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]}
+
+  # Nested stack deployment runs after all other controller deployments
+  ControllerNodesPostDeployment:
+    type: OS::TripleO::ControllerPostDeployment
+    depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment]
+    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: BlockStorageAllNodesDeployment
+    properties:
+      servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
 
 outputs:
   KeystoneURL: