Move role deployment steps into puppet/post.yaml
authorSteven Hardy <shardy@redhat.com>
Mon, 5 Sep 2016 17:40:35 +0000 (18:40 +0100)
committerSteven Hardy <shardy@redhat.com>
Fri, 9 Sep 2016 10:04:12 +0000 (11:04 +0100)
To enable steps to be aligned between roles, we need to define
dependencies between the steps, which is only possible if we
move the steps out of distinct nested stacks so we can use
depends_on to serialized the steps for all roles.

Note that we may be able to further refactor later to remove the
per-role -config.yaml nested stacks as well.

Change-Id: Ia2ea559e8eeb64763908f75705e3728ee90b5744
Partially-Implements: blueprint custom-roles

12 files changed:
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/blockstorage-config.yaml [new file with mode: 0644]
puppet/ceph-storage-post.yaml [deleted file]
puppet/cephstorage-config.yaml [new file with mode: 0644]
puppet/cinder-storage-post.yaml [deleted file]
puppet/compute-config.yaml [new file with mode: 0644]
puppet/compute-post.yaml [deleted file]
puppet/controller-post.yaml [deleted file]
puppet/objectstorage-config.yaml [new file with mode: 0644]
puppet/post.yaml [new file with mode: 0644]
puppet/swift-storage-post.yaml [deleted file]

index b0723dd..f758161 100644 (file)
@@ -10,21 +10,29 @@ resource_registry:
   OS::TripleO::ObjectStorage::Net::SoftwareConfig: net-config-noop.yaml
   OS::TripleO::CephStorage: puppet/ceph-storage.yaml
   OS::TripleO::CephStorage::Net::SoftwareConfig: net-config-noop.yaml
-  OS::TripleO::ControllerPostDeployment: puppet/controller-post.yaml
   # set to controller-config-pacemaker.yaml to enable pacemaker
   OS::TripleO::ControllerConfig: puppet/controller-config.yaml
-  OS::TripleO::ComputePostDeployment: puppet/compute-post.yaml
-  OS::TripleO::ObjectStoragePostDeployment: puppet/swift-storage-post.yaml
-  OS::TripleO::BlockStoragePostDeployment: puppet/cinder-storage-post.yaml
-  OS::TripleO::CephStoragePostDeployment: puppet/ceph-storage-post.yaml
+  OS::TripleO::PostDeploySteps: puppet/post.yaml
+  OS::TripleO::ComputeConfig: puppet/compute-config.yaml
+  OS::TripleO::BlockStorageConfig: puppet/blockstorage-config.yaml
+  OS::TripleO::ObjectStorageConfig: puppet/objectstorage-config.yaml
+  OS::TripleO::CephStorageConfig: puppet/cephstorage-config.yaml
   OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
   OS::TripleO::DefaultPasswords: default_passwords.yaml
 
   # Tasks (for internal TripleO usage)
   OS::TripleO::Tasks::UpdateWorkflow: OS::Heat::None
   OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
-  OS::TripleO::Tasks::ControllerPrePuppet: OS::Heat::None
-  OS::TripleO::Tasks::ControllerPostPuppet: OS::Heat::None
+  OS::TripleO::Tasks::ControllerPreConfig: OS::Heat::None
+  OS::TripleO::Tasks::ControllerPostConfig: OS::Heat::None
+  OS::TripleO::Tasks::ComputePreConfig: OS::Heat::None
+  OS::TripleO::Tasks::ComputePostConfig: OS::Heat::None
+  OS::TripleO::Tasks::BlockStoragePreConfig: OS::Heat::None
+  OS::TripleO::Tasks::BlockStoragePostConfig: OS::Heat::None
+  OS::TripleO::Tasks::ObjectStoragePreConfig: OS::Heat::None
+  OS::TripleO::Tasks::ObjectStoragePostConfig: OS::Heat::None
+  OS::TripleO::Tasks::CephStoragePreConfig: OS::Heat::None
+  OS::TripleO::Tasks::CephStoragePostConfig: OS::Heat::None
 
 
   OS::TripleO::Server: OS::Nova::Server
index 97bfe01..3d18214 100644 (file)
@@ -988,42 +988,22 @@ resources:
       objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
       cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
 
-  # Nested stack deployment runs after all other controller deployments
-  ControllerNodesPostDeployment:
-    type: OS::TripleO::ControllerPostDeployment
-    depends_on: [ControllerAllNodesDeployment]
+  # Post deployment steps for all roles
+  AllNodesDeploySteps:
+    type: OS::TripleO::PostDeploySteps
     properties:
-      servers: {get_attr: [Controller, attributes, nova_server_resource]}
-      RoleData: {get_attr: [ControllerServiceChain, role_data]}
-
-  ComputeNodesPostDeployment:
-    type: OS::TripleO::ComputePostDeployment
-    depends_on: [ComputeAllNodesDeployment]
-    properties:
-      servers: {get_attr: [Compute, attributes, nova_server_resource]}
-      RoleData: {get_attr: [ComputeServiceChain, role_data]}
-
-  ObjectStorageNodesPostDeployment:
-    type: OS::TripleO::ObjectStoragePostDeployment
-    depends_on: [ObjectStorageAllNodesDeployment]
-    properties:
-      servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
-      RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
-
-  BlockStorageNodesPostDeployment:
-    type: OS::TripleO::BlockStoragePostDeployment
-    depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
-    properties:
-      servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
-      RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
-
-  CephStorageNodesPostDeployment:
-    type: OS::TripleO::CephStoragePostDeployment
-    depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
-    properties:
-      servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
-      RoleData: {get_attr: [CephStorageServiceChain, role_data]}
-
+      servers:
+        Controller: {get_attr: [Controller, attributes, nova_server_resource]}
+        Compute: {get_attr: [Compute, attributes, nova_server_resource]}
+        BlockStorage: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+        ObjectStorage: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+        CephStorage: {get_attr: [CephStorage, attributes, nova_server_resource]}
+      role_data:
+        Controller: {get_attr: [ControllerServiceChain, role_data]}
+        Compute: {get_attr: [ComputeServiceChain, role_data]}
+        BlockStorage: {get_attr: [BlockStorageServiceChain, role_data]}
+        ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data]}
+        CephStorage: {get_attr: [CephStorageServiceChain, role_data]}
 
 outputs:
   ManagedEndpoints:
diff --git a/puppet/blockstorage-config.yaml b/puppet/blockstorage-config.yaml
new file mode 100644 (file)
index 0000000..9b31b44
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2015-04-30
+
+description: >
+  A software config which runs manifests/overcloud_volume.pp
+
+parameters:
+  ConfigDebug:
+    default: false
+    description: Whether to run config management (e.g. Puppet) in debug mode.
+    type: boolean
+  StepConfig:
+     type: string
+     description: Config manifests that will be used to step through the deployment.
+     default: ''
+
+resources:
+
+  BlockStoragePuppetConfigImpl:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: puppet
+      options:
+        enable_debug: {get_param: ConfigDebug}
+        enable_hiera: True
+        enable_facter: False
+        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
+      outputs:
+      - name: result
+      config:
+        list_join:
+        - ''
+        - - get_file: manifests/overcloud_volume.pp
+          - {get_param: StepConfig}
+
+outputs:
+  OS::stack_id:
+    description: The software config which runs overcloud_controller.pp
+    value: {get_resource: BlockStoragePuppetConfigImpl}
diff --git a/puppet/ceph-storage-post.yaml b/puppet/ceph-storage-post.yaml
deleted file mode 100644 (file)
index df6b724..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: >
-  OpenStack ceph storage node post deployment for Puppet
-
-parameters:
-  ConfigDebug:
-    default: false
-    description: Whether to run config management (e.g. Puppet) in debug mode.
-    type: boolean
-  servers:
-    type: json
-  RoleData:
-    type: json
-    default: {}
-  DeployIdentifier:
-     type: string
-     default: ''
-     description: Value which changes if the node configuration may need to be re-applied
-
-resources:
-
-  CephStorageArtifactsConfig:
-    type: deploy-artifacts.yaml
-
-  CephStorageArtifactsDeploy:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      servers:  {get_param: servers}
-      config: {get_resource: CephStorageArtifactsConfig}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-  CephStoragePuppetConfig:
-    type: OS::Heat::SoftwareConfig
-    properties:
-      group: puppet
-      options:
-        enable_debug: {get_param: ConfigDebug}
-        enable_hiera: True
-        enable_facter: False
-        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
-      inputs:
-      - name: step
-      outputs:
-      - name: result
-      config:
-        list_join:
-        - ''
-        - - get_file: manifests/overcloud_cephstorage.pp
-          - {get_param: [RoleData, step_config]}
-
-  CephStorageDeployment_Step2:
-    type: OS::Heat::StructuredDeployments
-    depends_on: CephStorageArtifactsDeploy
-    properties:
-      name: CephStorageDeployment_Step2
-      servers:  {get_param: servers}
-      config: {get_resource: CephStoragePuppetConfig}
-      input_values:
-        step: 2
-        update_identifier: {get_param: DeployIdentifier}
-
-  CephStorageDeployment_Step3:
-    type: OS::Heat::StructuredDeployments
-    depends_on: CephStorageDeployment_Step2
-    properties:
-      name: CephStorageDeployment_Step3
-      servers:  {get_param: servers}
-      config: {get_resource: CephStoragePuppetConfig}
-      input_values:
-        step: 3
-        update_identifier: {get_param: DeployIdentifier}
-
-  # Note, this should come last, so use depends_on to ensure
-  # this is created after any other resources.
-  ExtraConfig:
-    depends_on: CephStorageDeployment_Step3
-    type: OS::TripleO::NodeExtraConfigPost
-    properties:
-        servers: {get_param: servers}
diff --git a/puppet/cephstorage-config.yaml b/puppet/cephstorage-config.yaml
new file mode 100644 (file)
index 0000000..4bad4a1
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2015-04-30
+
+description: >
+  A software config which runs manifests/overcloud_cephstorage.pp
+
+parameters:
+  ConfigDebug:
+    default: false
+    description: Whether to run config management (e.g. Puppet) in debug mode.
+    type: boolean
+  StepConfig:
+     type: string
+     description: Config manifests that will be used to step through the deployment.
+     default: ''
+
+resources:
+
+  CephStoragePuppetConfigImpl:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: puppet
+      options:
+        enable_debug: {get_param: ConfigDebug}
+        enable_hiera: True
+        enable_facter: False
+        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
+      outputs:
+      - name: result
+      config:
+        list_join:
+        - ''
+        - - get_file: manifests/overcloud_cephstorage.pp
+          - {get_param: StepConfig}
+
+outputs:
+  OS::stack_id:
+    description: The software config which runs overcloud_controller.pp
+    value: {get_resource: CephStoragePuppetConfigImpl}
diff --git a/puppet/cinder-storage-post.yaml b/puppet/cinder-storage-post.yaml
deleted file mode 100644 (file)
index 0620bc6..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-heat_template_version: 2015-04-30
-description: 'OpenStack cinder storage post deployment for Puppet'
-
-parameters:
-  ConfigDebug:
-    default: false
-    description: Whether to run config management (e.g. Puppet) in debug mode.
-    type: boolean
-  servers:
-    type: json
-  DeployIdentifier:
-     type: string
-     default: ''
-     description: Value which changes if the node configuration may need to be re-applied
-  RoleData:
-    type: json
-    default: {}
-
-resources:
-
-  VolumeArtifactsConfig:
-    type: deploy-artifacts.yaml
-
-  VolumeArtifactsDeploy:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      servers:  {get_param: servers}
-      config: {get_resource: VolumeArtifactsConfig}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-  VolumePuppetConfig:
-    type: OS::Heat::SoftwareConfig
-    depends_on: VolumeArtifactsDeploy
-    properties:
-      group: puppet
-      options:
-        enable_debug: {get_param: ConfigDebug}
-        enable_hiera: True
-        enable_facter: False
-        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
-      inputs:
-      - name: step
-      outputs:
-      - name: result
-      config:
-        list_join:
-        - ''
-        - - get_file: manifests/overcloud_volume.pp
-          - {get_param: [RoleData, step_config]}
-
-  VolumeDeployment_Step2:
-    type: OS::Heat::StructuredDeployments
-    depends_on: VolumeArtifactsDeploy
-    properties:
-      name: VolumeDeployment_Step2
-      servers:  {get_param: servers}
-      config: {get_resource: VolumePuppetConfig}
-      input_values:
-        step: 2
-        update_identifier: {get_param: DeployIdentifier}
-
-  VolumeDeployment_Step3:
-    type: OS::Heat::StructuredDeployments
-    depends_on: VolumeDeployment_Step2
-    properties:
-      name: VolumeDeployment_Step3
-      servers:  {get_param: servers}
-      config: {get_resource: VolumePuppetConfig}
-      input_values:
-        step: 3
-        update_identifier: {get_param: DeployIdentifier}
-
-  VolumeDeployment_Step4:
-    type: OS::Heat::StructuredDeployments
-    depends_on: VolumeDeployment_Step3
-    properties:
-      name: VolumeDeployment_Step4
-      servers:  {get_param: servers}
-      config: {get_resource: VolumePuppetConfig}
-      input_values:
-        step: 4
-        update_identifier: {get_param: DeployIdentifier}
-
-  # Note, this should come last, so use depends_on to ensure
-  # this is created after any other resources.
-  ExtraConfig:
-    depends_on: VolumeDeployment_Step4
-    type: OS::TripleO::NodeExtraConfigPost
-    properties:
-        servers: {get_param: servers}
diff --git a/puppet/compute-config.yaml b/puppet/compute-config.yaml
new file mode 100644 (file)
index 0000000..9e128d3
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2015-04-30
+
+description: >
+  A software config which runs manifests/overcloud_compute.pp
+
+parameters:
+  ConfigDebug:
+    default: false
+    description: Whether to run config management (e.g. Puppet) in debug mode.
+    type: boolean
+  StepConfig:
+     type: string
+     description: Config manifests that will be used to step through the deployment.
+     default: ''
+
+resources:
+
+  ComputePuppetConfigImpl:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: puppet
+      options:
+        enable_debug: {get_param: ConfigDebug}
+        enable_hiera: True
+        enable_facter: False
+        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
+      outputs:
+      - name: result
+      config:
+        list_join:
+        - ''
+        - - get_file: manifests/overcloud_compute.pp
+          - {get_param: StepConfig}
+
+outputs:
+  OS::stack_id:
+    description: The software config which runs overcloud_controller.pp
+    value: {get_resource: ComputePuppetConfigImpl}
diff --git a/puppet/compute-post.yaml b/puppet/compute-post.yaml
deleted file mode 100644 (file)
index 358ec5a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: >
-  OpenStack compute node post deployment for Puppet.
-
-parameters:
-  ConfigDebug:
-    default: false
-    description: Whether to run config management (e.g. Puppet) in debug mode.
-    type: boolean
-  servers:
-    type: json
-  RoleData:
-    type: json
-    default: {}
-  DeployIdentifier:
-     type: string
-     default: ''
-     description: Value which changes if the node configuration may need to be re-applied
-
-resources:
-
-  ComputeArtifactsConfig:
-    type: deploy-artifacts.yaml
-
-  ComputeArtifactsDeploy:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      servers:  {get_param: servers}
-      config: {get_resource: ComputeArtifactsConfig}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-  ComputePuppetConfig:
-    type: OS::Heat::SoftwareConfig
-    properties:
-      group: puppet
-      options:
-        enable_debug: {get_param: ConfigDebug}
-        enable_hiera: True
-        enable_facter: False
-        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
-      inputs:
-      - name: step
-      outputs:
-      - name: result
-      config:
-        list_join:
-        - ''
-        - - get_file: manifests/overcloud_compute.pp
-          - {get_param: [RoleData, step_config]}
-
-  ComputeServicesBaseDeployment_Step2:
-    type: OS::Heat::StructuredDeployments
-    depends_on: [ComputeArtifactsDeploy]
-    properties:
-      name: ComputeServicesBaseDeployment_Step2
-      servers:  {get_param: servers}
-      config: {get_resource: ComputePuppetConfig}
-      input_values:
-        step: 2
-        update_identifier: {get_param: DeployIdentifier}
-
-  ComputeOvercloudServicesDeployment_Step3:
-    type: OS::Heat::StructuredDeployments
-    depends_on: ComputeServicesBaseDeployment_Step2
-    properties:
-      name: ComputeOvercloudServicesDeployment_Step3
-      servers:  {get_param: servers}
-      config: {get_resource: ComputePuppetConfig}
-      input_values:
-        step: 3
-        update_identifier: {get_param: DeployIdentifier}
-
-  ComputeOvercloudServicesDeployment_Step4:
-    type: OS::Heat::StructuredDeployments
-    depends_on: ComputeOvercloudServicesDeployment_Step3
-    properties:
-      name: ComputeOvercloudServicesDeployment_Step4
-      servers:  {get_param: servers}
-      config: {get_resource: ComputePuppetConfig}
-      input_values:
-        step: 4
-        update_identifier: {get_param: DeployIdentifier}
-
-  # Note, this should come last, so use depends_on to ensure
-  # this is created after any other resources.
-  ExtraConfig:
-    depends_on: ComputeOvercloudServicesDeployment_Step4
-    type: OS::TripleO::NodeExtraConfigPost
-    properties:
-        servers: {get_param: servers}
-
diff --git a/puppet/controller-post.yaml b/puppet/controller-post.yaml
deleted file mode 100644 (file)
index c97c3bc..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: >
-  OpenStack controller node post deployment for Puppet.
-
-parameters:
-  ConfigDebug:
-    default: false
-    description: Whether to run config management (e.g. Puppet) in debug mode.
-    type: boolean
-  servers:
-    type: json
-  RoleData:
-    type: json
-    default: {}
-  DeployIdentifier:
-     type: string
-     default: ''
-     description: Value which changes if the node configuration may need to be re-applied
-
-resources:
-
-  ControllerArtifactsConfig:
-    type: deploy-artifacts.yaml
-
-  ControllerArtifactsDeploy:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      servers:  {get_param: servers}
-      config: {get_resource: ControllerArtifactsConfig}
-
-  ControllerPrePuppet:
-    type: OS::TripleO::Tasks::ControllerPrePuppet
-    properties:
-      servers:  {get_param: servers}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-  ControllerPuppetConfig:
-    type: OS::TripleO::ControllerConfig
-    properties:
-      StepConfig: {get_param: [RoleData, step_config]}
-
-  # Step through a series of Puppet runs using the same manifest.
-  # NOTE: To enable stepping through the deployments via heat hooks,
-  # you must observe the glob naming defined in overcloud-steps.yaml
-  # e.g all Deployment resources should have a *Deployment_StepN suffix
-  ControllerLoadBalancerDeployment_Step1:
-    type: OS::Heat::StructuredDeployments
-    depends_on: [ControllerPrePuppet, ControllerArtifactsDeploy]
-    properties:
-      name: ControllerLoadBalancerDeployment_Step1
-      servers:  {get_param: servers}
-      config: {get_resource: ControllerPuppetConfig}
-      input_values:
-        step: 1
-        update_identifier: {get_param: DeployIdentifier}
-
-  ControllerServicesBaseDeployment_Step2:
-    type: OS::Heat::StructuredDeployments
-    depends_on: ControllerLoadBalancerDeployment_Step1
-    properties:
-      name: ControllerServicesBaseDeployment_Step2
-      servers:  {get_param: servers}
-      config: {get_resource: ControllerPuppetConfig}
-      input_values:
-        step: 2
-        update_identifier: {get_param: DeployIdentifier}
-
-  ControllerOvercloudServicesDeployment_Step3:
-    type: OS::Heat::StructuredDeployments
-    depends_on: ControllerServicesBaseDeployment_Step2
-    properties:
-      name: ControllerOvercloudServicesDeployment_Step3
-      servers:  {get_param: servers}
-      config: {get_resource: ControllerPuppetConfig}
-      input_values:
-        step: 3
-        update_identifier: {get_param: DeployIdentifier}
-
-  ControllerOvercloudServicesDeployment_Step4:
-    type: OS::Heat::StructuredDeployments
-    depends_on: ControllerOvercloudServicesDeployment_Step3
-    properties:
-      name: ControllerOvercloudServicesDeployment_Step4
-      servers:  {get_param: servers}
-      config: {get_resource: ControllerPuppetConfig}
-      input_values:
-        step: 4
-        update_identifier: {get_param: DeployIdentifier}
-
-  ControllerOvercloudServicesDeployment_Step5:
-    type: OS::Heat::StructuredDeployments
-    depends_on: ControllerOvercloudServicesDeployment_Step4
-    properties:
-      name: ControllerOvercloudServicesDeployment_Step5
-      servers:  {get_param: servers}
-      config: {get_resource: ControllerPuppetConfig}
-      input_values:
-        step: 5
-        update_identifier: {get_param: DeployIdentifier}
-
-  ControllerPostPuppet:
-    type: OS::TripleO::Tasks::ControllerPostPuppet
-    depends_on: ControllerOvercloudServicesDeployment_Step5
-    properties:
-      servers:  {get_param: servers}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-  # Note, this should come last, so use depends_on to ensure
-  # this is created after any other resources.
-  ExtraConfig:
-    depends_on: ControllerPostPuppet
-    type: OS::TripleO::NodeExtraConfigPost
-    properties:
-        servers: {get_param: servers}
diff --git a/puppet/objectstorage-config.yaml b/puppet/objectstorage-config.yaml
new file mode 100644 (file)
index 0000000..1dee8e6
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2015-04-30
+
+description: >
+  A software config which runs manifests/overcloud_object.pp
+
+parameters:
+  ConfigDebug:
+    default: false
+    description: Whether to run config management (e.g. Puppet) in debug mode.
+    type: boolean
+  StepConfig:
+     type: string
+     description: Config manifests that will be used to step through the deployment.
+     default: ''
+
+resources:
+
+  ObjectStoragePuppetConfigImpl:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: puppet
+      options:
+        enable_debug: {get_param: ConfigDebug}
+        enable_hiera: True
+        enable_facter: False
+        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
+      outputs:
+      - name: result
+      config:
+        list_join:
+        - ''
+        - - get_file: manifests/overcloud_object.pp
+          - {get_param: StepConfig}
+
+outputs:
+  OS::stack_id:
+    description: The software config which runs overcloud_controller.pp
+    value: {get_resource: ObjectStoragePuppetConfigImpl}
diff --git a/puppet/post.yaml b/puppet/post.yaml
new file mode 100644 (file)
index 0000000..8f57b34
--- /dev/null
@@ -0,0 +1,644 @@
+heat_template_version: 2016-10-14
+
+description: >
+  Post-deploy configuration steps via puppet for all roles,
+  Controller, Compute, BlockStorage, SwiftStorage and CephStorage.
+
+parameters:
+  servers:
+    type: json
+    description: Mapping of Role name e.g Controller to a list of servers
+
+  role_data:
+    type: json
+    description: Mapping of Role name e.g Controller to the per-role data
+
+  DeployIdentifier:
+    default: ''
+    type: string
+    description: >
+      Setting this to a unique value will re-run any deployment tasks which
+      perform configuration on a Heat stack-update.
+
+resources:
+  # Post deployment steps for all roles
+  # A single config is re-applied with an incrementing step number
+  # Controller Role steps
+  ControllerArtifactsConfig:
+    type: deploy-artifacts.yaml
+
+  ControllerArtifactsDeploy:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      servers:  {get_param: [servers, Controller]}
+      config: {get_resource: ControllerArtifactsConfig}
+
+  ControllerPreConfig:
+    type: OS::TripleO::Tasks::ControllerPreConfig
+    properties:
+      servers: {get_param: [servers, Controller]}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  ControllerConfig:
+    type: OS::TripleO::ControllerConfig
+    properties:
+      StepConfig: {get_param: [role_data, Controller, step_config]}
+
+  # Step through a series of configuration steps
+  ControllerDeployment_Step1:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on: [ControllerPreConfig, ControllerArtifactsDeploy]
+    properties:
+      name: ControllerDeployment_Step1
+      servers: {get_param: [servers, Controller]}
+      config: {get_resource: ControllerConfig}
+      input_values:
+        step: 1
+        update_identifier: {get_param: DeployIdentifier}
+
+  ControllerDeployment_Step2:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step1
+      - ComputeDeployment_Step1
+      - BlockStorageDeployment_Step1
+      - ObjectStorageDeployment_Step1
+      - CephStorageDeployment_Step1
+    properties:
+      name: ControllerDeployment_Step2
+      servers: {get_param: [servers, Controller]}
+      config: {get_resource: ControllerConfig}
+      input_values:
+        step: 2
+        update_identifier: {get_param: DeployIdentifier}
+
+  ControllerDeployment_Step3:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step2
+      - ComputeDeployment_Step2
+      - BlockStorageDeployment_Step2
+      - ObjectStorageDeployment_Step2
+      - CephStorageDeployment_Step2
+    properties:
+      name: ControllerDeployment_Step3
+      servers: {get_param: [servers, Controller]}
+      config: {get_resource: ControllerConfig}
+      input_values:
+        step: 3
+        update_identifier: {get_param: DeployIdentifier}
+
+  ControllerDeployment_Step4:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step3
+      - ComputeDeployment_Step3
+      - BlockStorageDeployment_Step3
+      - ObjectStorageDeployment_Step3
+      - CephStorageDeployment_Step3
+    properties:
+      name: ControllerDeployment_Step4
+      servers: {get_param: [servers, Controller]}
+      config: {get_resource: ControllerConfig}
+      input_values:
+        step: 4
+        update_identifier: {get_param: DeployIdentifier}
+
+  ControllerDeployment_Step5:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step4
+      - ComputeDeployment_Step4
+      - BlockStorageDeployment_Step4
+      - ObjectStorageDeployment_Step4
+      - CephStorageDeployment_Step4
+    properties:
+      name: ControllerDeployment_Step5
+      servers: {get_param: [servers, Controller]}
+      config: {get_resource: ControllerConfig}
+      input_values:
+        step: 5
+        update_identifier: {get_param: DeployIdentifier}
+
+  ControllerPostConfig:
+    type: OS::TripleO::Tasks::ControllerPostConfig
+    depends_on:
+      - ControllerDeployment_Step5
+      - ComputeDeployment_Step5
+      - BlockStorageDeployment_Step5
+      - ObjectStorageDeployment_Step5
+      - CephStorageDeployment_Step5
+    properties:
+      servers:  {get_param: servers}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  # Note, this should come last, so use depends_on to ensure
+  # this is created after any other resources.
+  ControllerExtraConfigPost:
+    depends_on:
+      - ControllerPostConfig
+      - ComputePostConfig
+      - BlockStoragePostConfig
+      - ObjectStoragePostConfig
+      - CephStoragePostConfig
+    type: OS::TripleO::NodeExtraConfigPost
+    properties:
+        servers: {get_param: [servers, Controller]}
+
+  # Compute Role steps
+  ComputeArtifactsConfig:
+    type: deploy-artifacts.yaml
+
+  ComputeArtifactsDeploy:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      servers:  {get_param: [servers, Compute]}
+      config: {get_resource: ComputeArtifactsConfig}
+
+  ComputePreConfig:
+    type: OS::TripleO::Tasks::ComputePreConfig
+    properties:
+      servers: {get_param: [servers, Compute]}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  ComputeConfig:
+    type: OS::TripleO::ComputeConfig
+    properties:
+      StepConfig: {get_param: [role_data, Compute, step_config]}
+
+  # Step through a series of configuration steps
+  ComputeDeployment_Step1:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on: [ComputePreConfig, ComputeArtifactsDeploy]
+    properties:
+      name: ComputeDeployment_Step1
+      servers: {get_param: [servers, Compute]}
+      config: {get_resource: ComputeConfig}
+      input_values:
+        step: 1
+        update_identifier: {get_param: DeployIdentifier}
+
+  ComputeDeployment_Step2:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step1
+      - ComputeDeployment_Step1
+      - BlockStorageDeployment_Step1
+      - ObjectStorageDeployment_Step1
+      - CephStorageDeployment_Step1
+    properties:
+      name: ComputeDeployment_Step2
+      servers: {get_param: [servers, Compute]}
+      config: {get_resource: ComputeConfig}
+      input_values:
+        step: 2
+        update_identifier: {get_param: DeployIdentifier}
+
+  ComputeDeployment_Step3:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step2
+      - ComputeDeployment_Step2
+      - BlockStorageDeployment_Step2
+      - ObjectStorageDeployment_Step2
+      - CephStorageDeployment_Step2
+    properties:
+      name: ComputeDeployment_Step3
+      servers: {get_param: [servers, Compute]}
+      config: {get_resource: ComputeConfig}
+      input_values:
+        step: 3
+        update_identifier: {get_param: DeployIdentifier}
+
+  ComputeDeployment_Step4:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step3
+      - ComputeDeployment_Step3
+      - BlockStorageDeployment_Step3
+      - ObjectStorageDeployment_Step3
+      - CephStorageDeployment_Step3
+    properties:
+      name: ComputeDeployment_Step4
+      servers: {get_param: [servers, Compute]}
+      config: {get_resource: ComputeConfig}
+      input_values:
+        step: 4
+        update_identifier: {get_param: DeployIdentifier}
+
+  ComputeDeployment_Step5:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step4
+      - ComputeDeployment_Step4
+      - BlockStorageDeployment_Step4
+      - ObjectStorageDeployment_Step4
+      - CephStorageDeployment_Step4
+    properties:
+      name: ComputeDeployment_Step5
+      servers: {get_param: [servers, Compute]}
+      config: {get_resource: ComputeConfig}
+      input_values:
+        step: 5
+        update_identifier: {get_param: DeployIdentifier}
+
+  ComputePostConfig:
+    type: OS::TripleO::Tasks::ComputePostConfig
+    depends_on:
+      - ControllerDeployment_Step5
+      - ComputeDeployment_Step5
+      - BlockStorageDeployment_Step5
+      - ObjectStorageDeployment_Step5
+      - CephStorageDeployment_Step5
+    properties:
+      servers:  {get_param: servers}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  # Note, this should come last, so use depends_on to ensure
+  # this is created after any other resources.
+  ComputeExtraConfigPost:
+    depends_on:
+      - ControllerPostConfig
+      - ComputePostConfig
+      - BlockStoragePostConfig
+      - ObjectStoragePostConfig
+      - CephStoragePostConfig
+    type: OS::TripleO::NodeExtraConfigPost
+    properties:
+      servers: {get_param: [servers, Compute]}
+
+  # BlockStorage Role steps
+  BlockStorageArtifactsConfig:
+    type: deploy-artifacts.yaml
+
+  BlockStorageArtifactsDeploy:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      servers:  {get_param: [servers, BlockStorage]}
+      config: {get_resource: BlockStorageArtifactsConfig}
+
+  BlockStoragePreConfig:
+    type: OS::TripleO::Tasks::BlockStoragePreConfig
+    properties:
+      servers: {get_param: [servers, BlockStorage]}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  BlockStorageConfig:
+    type: OS::TripleO::BlockStorageConfig
+    properties:
+      StepConfig: {get_param: [role_data, BlockStorage, step_config]}
+
+  # Step through a series of configuration steps
+  BlockStorageDeployment_Step1:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on: [BlockStoragePreConfig, BlockStorageArtifactsDeploy]
+    properties:
+      name: BlockStorageDeployment_Step1
+      servers: {get_param: [servers, BlockStorage]}
+      config: {get_resource: BlockStorageConfig}
+      input_values:
+        step: 1
+        update_identifier: {get_param: DeployIdentifier}
+
+  BlockStorageDeployment_Step2:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step1
+      - ComputeDeployment_Step1
+      - BlockStorageDeployment_Step1
+      - ObjectStorageDeployment_Step1
+      - CephStorageDeployment_Step1
+    properties:
+      name: BlockStorageDeployment_Step2
+      servers: {get_param: [servers, BlockStorage]}
+      config: {get_resource: BlockStorageConfig}
+      input_values:
+        step: 2
+        update_identifier: {get_param: DeployIdentifier}
+
+  BlockStorageDeployment_Step3:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step2
+      - ComputeDeployment_Step2
+      - BlockStorageDeployment_Step2
+      - ObjectStorageDeployment_Step2
+      - CephStorageDeployment_Step2
+    properties:
+      name: BlockStorageDeployment_Step3
+      servers: {get_param: [servers, BlockStorage]}
+      config: {get_resource: BlockStorageConfig}
+      input_values:
+        step: 3
+        update_identifier: {get_param: DeployIdentifier}
+
+  BlockStorageDeployment_Step4:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step3
+      - ComputeDeployment_Step3
+      - BlockStorageDeployment_Step3
+      - ObjectStorageDeployment_Step3
+      - CephStorageDeployment_Step3
+    properties:
+      name: BlockStorageDeployment_Step4
+      servers: {get_param: [servers, BlockStorage]}
+      config: {get_resource: BlockStorageConfig}
+      input_values:
+        step: 4
+        update_identifier: {get_param: DeployIdentifier}
+
+  BlockStorageDeployment_Step5:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step4
+      - ComputeDeployment_Step4
+      - BlockStorageDeployment_Step4
+      - ObjectStorageDeployment_Step4
+      - CephStorageDeployment_Step4
+    properties:
+      name: BlockStorageDeployment_Step5
+      servers: {get_param: [servers, BlockStorage]}
+      config: {get_resource: BlockStorageConfig}
+      input_values:
+        step: 5
+        update_identifier: {get_param: DeployIdentifier}
+
+  BlockStoragePostConfig:
+    type: OS::TripleO::Tasks::BlockStoragePostConfig
+    depends_on:
+      - ControllerDeployment_Step5
+      - ComputeDeployment_Step5
+      - BlockStorageDeployment_Step5
+      - ObjectStorageDeployment_Step5
+      - CephStorageDeployment_Step5
+    properties:
+      servers:  {get_param: servers}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  # Note, this should come last, so use depends_on to ensure
+  # this is created after any other resources.
+  BlockStorageExtraConfigPost:
+    depends_on:
+      - ControllerPostConfig
+      - ComputePostConfig
+      - BlockStoragePostConfig
+      - ObjectStoragePostConfig
+      - CephStoragePostConfig
+    type: OS::TripleO::NodeExtraConfigPost
+    properties:
+        servers: {get_param: [servers, BlockStorage]}
+
+  # ObjectStorage Role steps
+  ObjectStorageArtifactsConfig:
+    type: deploy-artifacts.yaml
+
+  ObjectStorageArtifactsDeploy:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      servers:  {get_param: [servers, ObjectStorage]}
+      config: {get_resource: ObjectStorageArtifactsConfig}
+
+  ObjectStoragePreConfig:
+    type: OS::TripleO::Tasks::ObjectStoragePreConfig
+    properties:
+      servers: {get_param: [servers, ObjectStorage]}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  ObjectStorageConfig:
+    type: OS::TripleO::ObjectStorageConfig
+    properties:
+      StepConfig: {get_param: [role_data, ObjectStorage, step_config]}
+
+  # Step through a series of configuration steps
+  ObjectStorageDeployment_Step1:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on: [ObjectStoragePreConfig, ObjectStorageArtifactsDeploy]
+    properties:
+      name: ObjectStorageDeployment_Step1
+      servers: {get_param: [servers, ObjectStorage]}
+      config: {get_resource: ObjectStorageConfig}
+      input_values:
+        step: 1
+        update_identifier: {get_param: DeployIdentifier}
+
+  ObjectStorageDeployment_Step2:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step1
+      - ComputeDeployment_Step1
+      - BlockStorageDeployment_Step1
+      - ObjectStorageDeployment_Step1
+      - CephStorageDeployment_Step1
+    properties:
+      name: ObjectStorageDeployment_Step2
+      servers: {get_param: [servers, ObjectStorage]}
+      config: {get_resource: ObjectStorageConfig}
+      input_values:
+        step: 2
+        update_identifier: {get_param: DeployIdentifier}
+
+  ObjectStorageDeployment_Step3:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step2
+      - ComputeDeployment_Step2
+      - BlockStorageDeployment_Step2
+      - ObjectStorageDeployment_Step2
+      - CephStorageDeployment_Step2
+    properties:
+      name: ObjectStorageDeployment_Step3
+      servers: {get_param: [servers, ObjectStorage]}
+      config: {get_resource: ObjectStorageConfig}
+      input_values:
+        step: 3
+        update_identifier: {get_param: DeployIdentifier}
+
+  ObjectStorageDeployment_Step4:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step3
+      - ComputeDeployment_Step3
+      - BlockStorageDeployment_Step3
+      - ObjectStorageDeployment_Step3
+      - CephStorageDeployment_Step3
+    properties:
+      name: ObjectStorageDeployment_Step4
+      servers: {get_param: [servers, ObjectStorage]}
+      config: {get_resource: ObjectStorageConfig}
+      input_values:
+        step: 4
+        update_identifier: {get_param: DeployIdentifier}
+
+  ObjectStorageDeployment_Step5:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step4
+      - ComputeDeployment_Step4
+      - BlockStorageDeployment_Step4
+      - ObjectStorageDeployment_Step4
+      - CephStorageDeployment_Step4
+    properties:
+      name: ObjectStorageDeployment_Step5
+      servers: {get_param: [servers, ObjectStorage]}
+      config: {get_resource: ObjectStorageConfig}
+      input_values:
+        step: 5
+        update_identifier: {get_param: DeployIdentifier}
+
+  ObjectStoragePostConfig:
+    type: OS::TripleO::Tasks::ObjectStoragePostConfig
+    depends_on:
+      - ControllerDeployment_Step5
+      - ComputeDeployment_Step5
+      - BlockStorageDeployment_Step5
+      - ObjectStorageDeployment_Step5
+      - CephStorageDeployment_Step5
+    properties:
+      servers:  {get_param: servers}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  # Note, this should come last, so use depends_on to ensure
+  # this is created after any other resources.
+  ObjectStorageExtraConfigPost:
+    depends_on:
+      - ControllerPostConfig
+      - ComputePostConfig
+      - BlockStoragePostConfig
+      - ObjectStoragePostConfig
+      - CephStoragePostConfig
+    type: OS::TripleO::NodeExtraConfigPost
+    properties:
+        servers: {get_param: [servers, ObjectStorage]}
+
+  # CephStorage Role steps
+  CephStorageArtifactsConfig:
+    type: deploy-artifacts.yaml
+
+  CephStorageArtifactsDeploy:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      servers:  {get_param: [servers, CephStorage]}
+      config: {get_resource: CephStorageArtifactsConfig}
+
+  CephStoragePreConfig:
+    type: OS::TripleO::Tasks::CephStoragePreConfig
+    properties:
+      servers: {get_param: [servers, CephStorage]}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  CephStorageConfig:
+    type: OS::TripleO::CephStorageConfig
+    properties:
+      StepConfig: {get_param: [role_data, CephStorage, step_config]}
+
+  # Step through a series of configuration steps
+  CephStorageDeployment_Step1:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on: [CephStoragePreConfig, CephStorageArtifactsDeploy]
+    properties:
+      name: CephStorageDeployment_Step1
+      servers: {get_param: [servers, CephStorage]}
+      config: {get_resource: CephStorageConfig}
+      input_values:
+        step: 1
+        update_identifier: {get_param: DeployIdentifier}
+
+  CephStorageDeployment_Step2:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step1
+      - ComputeDeployment_Step1
+      - BlockStorageDeployment_Step1
+      - ObjectStorageDeployment_Step1
+      - CephStorageDeployment_Step1
+    properties:
+      name: CephStorageDeployment_Step2
+      servers: {get_param: [servers, CephStorage]}
+      config: {get_resource: CephStorageConfig}
+      input_values:
+        step: 2
+        update_identifier: {get_param: DeployIdentifier}
+
+  CephStorageDeployment_Step3:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step2
+      - ComputeDeployment_Step2
+      - BlockStorageDeployment_Step2
+      - ObjectStorageDeployment_Step2
+      - CephStorageDeployment_Step2
+    properties:
+      name: CephStorageDeployment_Step3
+      servers: {get_param: [servers, CephStorage]}
+      config: {get_resource: CephStorageConfig}
+      input_values:
+        step: 3
+        update_identifier: {get_param: DeployIdentifier}
+
+  CephStorageDeployment_Step4:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step3
+      - ComputeDeployment_Step3
+      - BlockStorageDeployment_Step3
+      - ObjectStorageDeployment_Step3
+      - CephStorageDeployment_Step3
+    properties:
+      name: CephStorageDeployment_Step4
+      servers: {get_param: [servers, CephStorage]}
+      config: {get_resource: CephStorageConfig}
+      input_values:
+        step: 4
+        update_identifier: {get_param: DeployIdentifier}
+
+  CephStorageDeployment_Step5:
+    type: OS::Heat::StructuredDeploymentGroup
+    depends_on:
+      - ControllerDeployment_Step4
+      - ComputeDeployment_Step4
+      - BlockStorageDeployment_Step4
+      - ObjectStorageDeployment_Step4
+      - CephStorageDeployment_Step4
+    properties:
+      name: CephStorageDeployment_Step5
+      servers: {get_param: [servers, CephStorage]}
+      config: {get_resource: CephStorageConfig}
+      input_values:
+        step: 5
+        update_identifier: {get_param: DeployIdentifier}
+
+  CephStoragePostConfig:
+    type: OS::TripleO::Tasks::CephStoragePostConfig
+    depends_on:
+      - ControllerDeployment_Step5
+      - ComputeDeployment_Step5
+      - BlockStorageDeployment_Step5
+      - ObjectStorageDeployment_Step5
+      - CephStorageDeployment_Step5
+    properties:
+      servers:  {get_param: servers}
+      input_values:
+        update_identifier: {get_param: DeployIdentifier}
+
+  # Note, this should come last, so use depends_on to ensure
+  # this is created after any other resources.
+  CephStorageExtraConfigPost:
+    depends_on:
+      - ControllerPostConfig
+      - ComputePostConfig
+      - BlockStoragePostConfig
+      - ObjectStoragePostConfig
+      - CephStoragePostConfig
+    type: OS::TripleO::NodeExtraConfigPost
+    properties:
+        servers: {get_param: [servers, CephStorage]}
diff --git a/puppet/swift-storage-post.yaml b/puppet/swift-storage-post.yaml
deleted file mode 100644 (file)
index ebc54ab..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-heat_template_version: 2015-04-30
-description: 'OpenStack swift storage node post deployment for Puppet'
-
-parameters:
-  ConfigDebug:
-    default: false
-    description: Whether to run config management (e.g. Puppet) in debug mode.
-    type: boolean
-  servers:
-    type: json
-  RoleData:
-    type: json
-    default: {}
-  DeployIdentifier:
-     type: string
-     default: ''
-     description: Value which changes if the node configuration may need to be re-applied
-
-resources:
-
-  StorageArtifactsConfig:
-    type: deploy-artifacts.yaml
-
-  StorageArtifactsDeploy:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      servers:  {get_param: servers}
-      config: {get_resource: StorageArtifactsConfig}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-  StoragePuppetConfig:
-    type: OS::Heat::SoftwareConfig
-    properties:
-      group: puppet
-      options:
-        enable_debug: {get_param: ConfigDebug}
-        enable_hiera: True
-        enable_facter: False
-        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
-      inputs:
-      - name: step
-      outputs:
-      - name: result
-      config:
-        list_join:
-        - ''
-        - - get_file: manifests/overcloud_object.pp
-          - {get_param: [RoleData, step_config]}
-
-  StorageRingbuilderDeployment_Step2:
-    type: OS::Heat::StructuredDeployments
-    depends_on: StorageArtifactsDeploy
-    properties:
-      name: StorageRingbuilderDeployment_Step2
-      servers:  {get_param: servers}
-      config: {get_resource: StoragePuppetConfig}
-      input_values:
-        step: 2
-        update_identifier: {get_param: DeployIdentifier}
-
-  StorageRingbuilderDeployment_Step3:
-    type: OS::Heat::StructuredDeployments
-    depends_on: StorageRingbuilderDeployment_Step2
-    properties:
-      name: StorageRingbuilderDeployment_Step3
-      servers:  {get_param: servers}
-      config: {get_resource: StoragePuppetConfig}
-      input_values:
-        step: 3
-        update_identifier: {get_param: DeployIdentifier}
-
-  StorageDeployment_Step4:
-    type: OS::Heat::StructuredDeployments
-    depends_on: StorageRingbuilderDeployment_Step3
-    properties:
-      name: StorageDeployment_Step4
-      servers:  {get_param: servers}
-      config: {get_resource: StoragePuppetConfig}
-      input_values:
-        step: 4
-        update_identifier: {get_param: DeployIdentifier}
-
-  # Note, this should come last, so use depends_on to ensure
-  # this is created after any other resources.
-  ExtraConfig:
-    depends_on: StorageDeployment_Step4
-    type: OS::TripleO::NodeExtraConfigPost
-    properties:
-        servers: {get_param: servers}
-