Switch deploy steps to tripleo_free

The tripleo_free strategy should allow the tasks to run freely for a
given playbook that defines using the tripleo_free strategy. The defaul
strategy is a linear one that will execute each task across all servers
prior to moving to the next task. The tripleo_free strategy will execute
the tasks on servers without syncryonizing the tasks within a given
playbook. Because TripleO uses step concepts in our deployment, we
already have the syncronization points in the main playbook. The outer
playbook should be done linearly but the deployment steps themselves
should be done freely.

The tripleo_free playbook won't stop execution on all hosts if one host
fails or becomes unreachable. It will however end the play exeuction if
any error occurs on any host. This is similar to the deployment failures
we used to have with Heat where a failure on any single node would stop
the deployment at a given deployment step.  A future improvement of this
will be to add logic to handle a failure percentage on a given TripleO
role to only stop the playbook if the failure percentage exceeds a
defined amount. Currently any failure will stop a playbook but may not
stop later tasks from executing on the rest of the hosts. We will likely
need to implement a tripleo_linear strategy based on the upstream linear
strategy to understand these failure percentages as well.

NOTE: During the testing of this, we identified two issues with the free
strategy in ansible itself. We will need those fixes landed in the
version of ansible prior to being able to land this.

Depends-On: https://github.com/ansible/ansible/pull/69730
Depends-On: https://github.com/ansible/ansible/pull/69524
Change-Id: Ib4a02a192377aafab5970647d74977cb1189bcae
This commit is contained in:
Alex Schultz 2020-04-30 13:23:32 -06:00 committed by Emilien Macchi
parent e46d997c4a
commit a5f9740759
1 changed files with 7 additions and 0 deletions

View File

@ -497,6 +497,7 @@ outputs:
- common_roles
- hosts: {{primary_role_name}}:DEPLOY_TARGET_HOST
strategy: tripleo_free
name: Deploy step tasks for step 0
become: true
gather_facts: "{% raw %}{{ gather_facts | default(false) }}{% endraw %}"
@ -521,6 +522,7 @@ outputs:
- step0
- hosts: {{primary_role_name}}:DEPLOY_TARGET_HOST
strategy: tripleo_free
name: Server pre deployment steps
gather_facts: "{% raw %}{{ gather_facts | default(false) }}{% endraw %}"
any_errors_fatal: yes
@ -531,6 +533,7 @@ outputs:
- pre_deploy_steps
- hosts: {{primary_role_name}}:DEPLOY_TARGET_HOST
strategy: tripleo_free
name: Server deployments
gather_facts: "{% raw %}{{ gather_facts | default(false) }}{% endraw %}"
any_errors_fatal: yes
@ -657,6 +660,7 @@ outputs:
{% endraw %}
- hosts: {{primary_role_name}}:DEPLOY_TARGET_HOST
strategy: tripleo_free
name: Host prep steps
become: true
gather_facts: "{% raw %}{{ gather_facts | default(false) }}{% endraw %}"
@ -692,6 +696,7 @@ outputs:
{%- for step in range(1,deploy_steps_max) %}
- hosts: DEPLOY_SOURCE_HOST
strategy: tripleo_free
name: External deployment step {{step}}
gather_facts: "{% raw %}{{ gather_facts | default(false) }}{% endraw %}"
any_errors_fatal: yes
@ -721,6 +726,7 @@ outputs:
- step{{step}}
- hosts: {{primary_role_name}}:DEPLOY_TARGET_HOST
strategy: tripleo_free
name: Deploy step tasks for {{step}}
become: true
gather_facts: "{% raw %}{{ gather_facts | default(false) }}{% endraw %}"
@ -801,6 +807,7 @@ outputs:
{%- endfor %}
- hosts: {{primary_role_name}}:DEPLOY_TARGET_HOST
strategy: tripleo_free
name: Server Post Deployments
become: true
gather_facts: "{% raw %}{{ gather_facts | default(false) }}{% endraw %}"