Consolidate puppet/docker deployments with one deploy steps workflow
authorSteven Hardy <shardy@redhat.com>
Thu, 13 Jul 2017 12:40:48 +0000 (13:40 +0100)
committerAthlan-Guyot sofer <sathlang@redhat.com>
Fri, 11 Aug 2017 17:25:02 +0000 (17:25 +0000)
If we consolidate these we can focus on one implementation (the new ansible
based one used for docker-steps)

Change-Id: Iec0ad2278d62040bf03613fc9556b199c6a80546
Depends-On: Ifa2afa915e0fee368fb2506c02de75bf5efe82d5

15 files changed:
common/deploy-steps-playbook.yaml [moved from docker/deploy-steps-playbook.yaml with 100% similarity]
common/deploy-steps.j2 [moved from docker/docker-steps.j2 with 99% similarity]
common/major_upgrade_steps.j2.yaml [moved from puppet/major_upgrade_steps.j2.yaml with 100% similarity]
common/post-upgrade.j2.yaml [moved from docker/post-upgrade.j2.yaml with 86% similarity]
common/post.j2.yaml [new file with mode: 0644]
docker/post.j2.yaml [deleted file]
environments/docker-services-tls-everywhere.yaml
environments/docker.yaml
environments/major-upgrade-composable-steps-docker.yaml
environments/major-upgrade-converge-docker.yaml
environments/major-upgrade-converge.yaml
overcloud-resource-registry-puppet.j2.yaml
puppet/post-upgrade.j2.yaml [deleted file]
puppet/post.j2.yaml [deleted file]
puppet/puppet-steps.j2 [deleted file]

similarity index 99%
rename from docker/docker-steps.j2
rename to common/deploy-steps.j2
index 05ff794..e5d7e98 100644 (file)
@@ -159,7 +159,7 @@ resources:
                 connection: local
                 vars:
                   puppet_config: {get_param: [role_data, {{role.name}}, puppet_config]}
-                  docker_puppet_script: {get_file: docker-puppet.py}
+                  docker_puppet_script: {get_file: ../docker/docker-puppet.py}
                   docker_puppet_tasks: {get_param: [role_data, {{role.name}}, docker_puppet_tasks]}
                   docker_startup_configs: {get_param: [role_data, {{role.name}}, docker_config]}
                   kolla_config: {get_param: [role_data, {{role.name}}, kolla_config]}
similarity index 86%
rename from docker/post-upgrade.j2.yaml
rename to common/post-upgrade.j2.yaml
index 4477f86..7cd6abd 100644 (file)
@@ -1,4 +1,4 @@
 # Note the include here is the same as post.j2.yaml but the data used at
 # # the time of rendering is different if any roles disable upgrades
 {% set roles = roles|rejectattr('disable_upgrade_deployment')|list -%}
-{% include 'docker-steps.j2' %}
+{% include 'deploy-steps.j2' %}
diff --git a/common/post.j2.yaml b/common/post.j2.yaml
new file mode 100644 (file)
index 0000000..8a70dfa
--- /dev/null
@@ -0,0 +1 @@
+{% include 'deploy-steps.j2' %}
diff --git a/docker/post.j2.yaml b/docker/post.j2.yaml
deleted file mode 100644 (file)
index fd95621..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{% include 'docker-steps.j2' %}
index d474332..49d02e6 100644 (file)
@@ -41,6 +41,3 @@ resource_registry:
   OS::TripleO::Services::SwiftProxy: ../docker/services/swift-proxy.yaml
   OS::TripleO::Services::SwiftRingBuilder: ../docker/services/swift-ringbuilder.yaml
   OS::TripleO::Services::SwiftStorage: ../docker/services/swift-storage.yaml
-
-  OS::TripleO::PostDeploySteps: ../docker/post.yaml
-  OS::TripleO::PostUpgradeSteps: ../docker/post-upgrade.yaml
index 336a0b3..9b977f6 100644 (file)
@@ -61,6 +61,3 @@ resource_registry:
   # OS::TripleO::Services::CinderScheduler: ../docker/services/cinder-scheduler.yaml
   # OS::TripleO::Services::CinderBackup: ../docker/services/cinder-backup.yaml
   # OS::TripleO::Services::CinderVolume: ../docker/services/cinder-volume.yaml
-
-  OS::TripleO::PostDeploySteps: ../docker/post.yaml
-  OS::TripleO::PostUpgradeSteps: ../docker/post-upgrade.yaml
index 20340c7..888e270 100644 (file)
@@ -1,8 +1,5 @@
 resource_registry:
-  # FIXME(shardy) do we need to break major_upgrade_steps.yaml apart to
-  # enable docker specific logic, or is just overridding PostUpgradeSteps
-  # enough (as we want to share the ansible tasks steps etc)
-  OS::TripleO::PostDeploySteps: ../puppet/major_upgrade_steps.yaml
+  OS::TripleO::PostDeploySteps: ../common/major_upgrade_steps.yaml
 parameter_defaults:
   EnableConfigPurge: false
   StackUpdateType: UPGRADE
index 163d1de..668f8a9 100644 (file)
@@ -1,7 +1,7 @@
 # Use this to reset any mappings only used for upgrades after the
 # update of all nodes is completed
 resource_registry:
-  OS::TripleO::PostDeploySteps: ../docker/post.yaml
+  OS::TripleO::PostDeploySteps: ../common/post.yaml
 parameter_defaults:
   EnableConfigPurge: false
   StackUpdateType: ''
index d222fb8..668f8a9 100644 (file)
@@ -1,7 +1,7 @@
 # Use this to reset any mappings only used for upgrades after the
 # update of all nodes is completed
 resource_registry:
-  OS::TripleO::PostDeploySteps: ../puppet/post.yaml
+  OS::TripleO::PostDeploySteps: ../common/post.yaml
 parameter_defaults:
   EnableConfigPurge: false
   StackUpdateType: ''
index 0b4b4fe..fdf3bf6 100644 (file)
@@ -1,8 +1,8 @@
 resource_registry:
 
   OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
-  OS::TripleO::PostDeploySteps: puppet/post.yaml
-  OS::TripleO::PostUpgradeSteps: puppet/post-upgrade.yaml
+  OS::TripleO::PostDeploySteps: common/post.yaml
+  OS::TripleO::PostUpgradeSteps: common/post-upgrade.yaml
   OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
   OS::TripleO::AllNodesDeployment: OS::Heat::StructuredDeployments
   OS::TripleO::Hosts::SoftwareConfig: hosts-config.yaml
@@ -17,7 +17,7 @@ resource_registry:
 
 {% for role in roles %}
   OS::TripleO::{{role.name}}::PreNetworkConfig: OS::Heat::None
-  OS::TripleO::{{role.name}}PostDeploySteps: puppet/post.yaml
+  OS::TripleO::{{role.name}}PostDeploySteps: common/post.yaml
   OS::TripleO::{{role.name}}: puppet/{{role.name.lower()}}-role.yaml
   OS::TripleO::{{role.name}}Config: puppet/{{role.name.lower()}}-config.yaml
   OS::TripleO::Tasks::{{role.name}}PreConfig: OS::Heat::None
diff --git a/puppet/post-upgrade.j2.yaml b/puppet/post-upgrade.j2.yaml
deleted file mode 100644 (file)
index bdd1e61..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-heat_template_version: pike
-
-description: >
-  Post-upgrade configuration steps via puppet for all roles
-  where upgrade is not disabled as defined in ../roles_data.yaml
-
-parameters:
-  servers:
-    type: json
-    description: Mapping of Role name e.g Controller to a list of servers
-  stack_name:
-    type: string
-    description: Name of the topmost stack
-  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.
-  ctlplane_service_ips:
-    type: json
-
-resources:
-# Note the include here is the same as post.j2.yaml but the data used at
-# the time of rendering is different if any roles disable upgrades
-{% set roles = roles|rejectattr('disable_upgrade_deployment')|list -%}
-{% include 'puppet-steps.j2' %}
diff --git a/puppet/post.j2.yaml b/puppet/post.j2.yaml
deleted file mode 100644 (file)
index 67e1ecf..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-heat_template_version: pike
-
-description: >
-  Post-deploy configuration steps via puppet for all roles,
-  as defined in ../roles_data.yaml
-
-parameters:
-  servers:
-    type: json
-    description: Mapping of Role name e.g Controller to a list of servers
-  stack_name:
-    type: string
-    description: Name of the topmost stack
-  role_data:
-    type: json
-    description: Mapping of Role name e.g Controller to the per-role data
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-  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.
-  ctlplane_service_ips:
-    type: json
-
-{% include 'puppet-steps.j2' %}
diff --git a/puppet/puppet-steps.j2 b/puppet/puppet-steps.j2
deleted file mode 100644 (file)
index f7651a5..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-{% set deploy_steps_max = 6 %}
-conditions:
-{% for step in range(1, deploy_steps_max) %}
-  WorkflowTasks_Step{{step}}_Enabled:
-    or:
-    {%- for role in roles %}
-      - not:
-          equals:
-            - get_param: [role_data, {{role.name}}, service_workflow_tasks, step{{step}}]
-            - ''
-      - False
-    {%- endfor %}
-{% endfor %}
-
-resources:
-  # Post deployment steps for all roles
-  # A single config is re-applied with an incrementing step number
-{% for role in roles %}
-  # {{role.name}} Role post-deploy steps
-  {{role.name}}ArtifactsConfig:
-    type: deploy-artifacts.yaml
-
-  {{role.name}}ArtifactsDeploy:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      name: {{role.name}}ArtifactsDeploy
-      servers:  {get_param: [servers, {{role.name}}]}
-      config: {get_resource: {{role.name}}ArtifactsConfig}
-
-  {{role.name}}PreConfig:
-    type: OS::TripleO::Tasks::{{role.name}}PreConfig
-    properties:
-      servers: {get_param: [servers, {{role.name}}]}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-  {{role.name}}Config:
-    type: OS::TripleO::{{role.name}}Config
-    properties:
-      StepConfig: {get_param: [role_data, {{role.name}}, step_config]}
-
-  # Step through a series of configuration steps
-{% for step in range(1, deploy_steps_max) %}
-  {{role.name}}Deployment_Step{{step}}:
-    type: OS::Heat::StructuredDeploymentGroup
-    depends_on:
-      - WorkflowTasks_Step{{step}}_Execution
-    # TODO(gfidente): the following if/else condition
-    # replicates what is already defined for the
-    # WorkflowTasks_StepX resource and can be remove
-    # if https://bugs.launchpad.net/heat/+bug/1700569
-    # is fixed.
-    {%- if step == 1 %}
-    {%- for dep in roles %}
-      - {{dep.name}}PreConfig
-      - {{dep.name}}ArtifactsDeploy
-    {%- endfor %}
-    {%- else %}
-    {%- for dep in roles %}
-      - {{dep.name}}Deployment_Step{{step -1}}
-    {%- endfor %}
-    {%- endif %}
-    properties:
-      name: {{role.name}}Deployment_Step{{step}}
-      servers: {get_param: [servers, {{role.name}}]}
-      config: {get_resource: {{role.name}}Config}
-      input_values:
-        step: {{step}}
-        update_identifier: {get_param: DeployIdentifier}
-{% endfor %}
-
-  # Note, this should be the last step to execute configuration changes.
-  # Ensure that all {{role.name}}ExtraConfigPost steps are executed
-  # after all the previous deployment steps.
-  {{role.name}}ExtraConfigPost:
-    depends_on:
-  {%- for dep in roles %}
-      - {{dep.name}}Deployment_Step5
-  {%- endfor %}
-    type: OS::TripleO::NodeExtraConfigPost
-    properties:
-        servers: {get_param: [servers, {{role.name}}]}
-
-  # The {{role.name}}PostConfig steps are in charge of
-  # quiescing all services, i.e. in the Controller case,
-  # we should run a full service reload.
-  {{role.name}}PostConfig:
-    type: OS::TripleO::Tasks::{{role.name}}PostConfig
-    depends_on:
-  {%- for dep in roles %}
-      - {{dep.name}}ExtraConfigPost
-  {%- endfor %}
-    properties:
-      servers: {get_param: servers}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-
-
-{% endfor %}
-
-# BEGIN service_workflow_tasks handling
-{% for step in range(1, deploy_steps_max) %}
-  WorkflowTasks_Step{{step}}:
-    type: OS::Mistral::Workflow
-    condition: WorkflowTasks_Step{{step}}_Enabled
-    depends_on:
-    {%- if step == 1 %}
-    {%- for dep in roles %}
-      - {{dep.name}}PreConfig
-      - {{dep.name}}ArtifactsDeploy
-    {%- endfor %}
-    {%- else %}
-    {%- for dep in roles %}
-      - {{dep.name}}Deployment_Step{{step -1}}
-    {%- endfor %}
-    {%- endif %}
-    properties:
-      name: {list_join: [".", ["tripleo", {get_param: stack_name}, "workflowtasks", "step{{step}}"]]}
-      type: direct
-      tasks:
-        yaql:
-          expression: $.data.where($ != '').select($.get('step{{step}}')).where($ != null).flatten()
-          data:
-          {%- for role in roles %}
-            - get_param: [role_data, {{role.name}}, service_workflow_tasks]
-          {%- endfor %}
-
-  WorkflowTasks_Step{{step}}_Execution:
-    type: OS::Mistral::ExternalResource
-    condition: WorkflowTasks_Step{{step}}_Enabled
-    depends_on: WorkflowTasks_Step{{step}}
-    properties:
-      actions:
-        CREATE:
-          workflow: { get_resource: WorkflowTasks_Step{{step}} }
-          params:
-            env:
-              service_ips: { get_param: ctlplane_service_ips }
-              role_merged_configs:
-                {%- for r in roles %}
-                {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
-                {%- endfor %}
-            evaluate_env: false
-        UPDATE:
-          workflow: { get_resource: WorkflowTasks_Step{{step}} }
-          params:
-            env:
-              service_ips: { get_param: ctlplane_service_ips }
-              role_merged_configs:
-                {%- for r in roles %}
-                {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
-                {%- endfor %}
-            evaluate_env: false
-      always_update: true
-{% endfor %}
-# END service_workflow_tasks handling