Make sure PrePuppet runs before any Deployment_Step
authorMichele Baldessari <michele@acksyn.org>
Fri, 17 Mar 2017 14:36:50 +0000 (15:36 +0100)
committerMichele Baldessari <michele@acksyn.org>
Sat, 18 Mar 2017 21:38:25 +0000 (22:38 +0100)
We used to have this in mitaka:
https://github.com/openstack/tripleo-heat-templates/blob/stable/mitaka/puppet/controller-post.yaml#L45

but we lost it along the way. The problem without this change is that we
are open to the following race:
1) ControllerDeployment_Step1 is started and manages to do a successful
   "systemctl start pacemaker"
2) PrePuppet gets called and in the HA deployment calls
   pacemaker_maintenance_mode.sh
3) pacemaker_maintenance_mode.sh will set the maintenance-mode=true
   property because the pacemaker service is already up:
   https://github.com/openstack/tripleo-heat-templates/blob/master/extraconfig/tasks/pacemaker_maintenance_mode.sh#L8-L9
4) If the maintenance property is set to true at this stage, the
   creation of any resource will take place but they won't really
   start.

Note that this is not a straight cherry pick from commit
bae48e60b3cb9b5f21490997ca39c1e0e23fd195 because in ocata only
ControllerPrePuppet exists and not {{role.name}}PrePuppet like in
pike.

Change-Id: Icb7495edd00385b2975dd42f63085d20292ef9a9
Closes-Bug: #1673795
Co-Authored-By: Jiri Stransky <jstransk@redhat.com>
puppet/puppet-steps.j2

index 4eca233..cfa70f7 100644 (file)
@@ -43,7 +43,9 @@
 {% for step in range(1, 6) %}
   {{role.name}}Deployment_Step{{step}}:
     type: OS::Heat::StructuredDeploymentGroup
-  {% if step == 1 %}
+  {% if step == 1 and role.name == 'Controller' %}
+    depends_on: [ControllerPrePuppet, {{role.name}}PreConfig, {{role.name}}ArtifactsDeploy]
+  {% elif step == 1 and role.name != 'Controller' %}
     depends_on: [{{role.name}}PreConfig, {{role.name}}ArtifactsDeploy]
   {% else %}
     depends_on: