tripleo-common/workbooks/package_update.yaml
Mathieu Bultel a5a4434f37 Get the config for update outside of package update
Manage the config outside of the package update
tasks. Mistral doesn't wait for the heat stack update
to finish so we config uploaded to swift can be
different is heat stack update is not finished

Closes-Bug: #1738142

Change-Id: I8a92e4f4cfe8e3567e71f9ab60b4aef4142c3874
2017-12-14 11:53:47 +01:00

225 lines
6.4 KiB
YAML

---
version: '2.0'
name: tripleo.package_update.v1
description: TripleO update workflows
workflows:
# Updates a workload cloud stack
package_update_plan:
description: Take a container and perform a package update with possible breakpoints
input:
- container
- container_registry
- ceph_ansible_playbook
- timeout: 240
- queue_name: tripleo
- skip_deploy_identifier: False
- config_dir: '/tmp/'
tags:
- tripleo-common-managed
tasks:
update_plan:
action: tripleo.plan.update_from_dir
input:
container: <% $.container %>
on-success: update
on-error: set_update_failed
update:
action: tripleo.package_update.update_stack container=<% $.container %> timeout=<% $.timeout %> container_registry=<% $.container_registry %> ceph_ansible_playbook=<% $.ceph_ansible_playbook %>
input:
timeout: <% $.timeout %>
container: <% $.container %>
container_registry: <% $.container_registry %>
ceph_ansible_playbook: <% $.ceph_ansible_playbook %>
on-success: clean_plan
on-error: set_update_failed
clean_plan:
action: tripleo.plan.update_plan_environment
input:
container: <% $.container %>
parameter: CephAnsiblePlaybook
env_key: parameter_defaults
delete: true
on-success: send_message
on-error: set_update_failed
set_update_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(update).result %>
send_message:
action: zaqar.queue_post
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.package_update.v1.package_update_plan
payload:
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>
get_config:
input:
- container
- queue_name: tripleo
tags:
- tripleo-common-managed
tasks:
get_config:
action: tripleo.config.get_overcloud_config container=<% $.container %>
publish:
status: SUCCESS
message: <% task().result %>
publish-on-error:
status: FAILED
message: Init Minor update failed
on-complete: send_message
send_message:
action: zaqar.queue_post
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.package_update.v1.package_update_plan
payload:
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>
update_nodes:
description: Take a container and perform an update nodes by nodes
input:
- node_user: heat-admin
- nodes
- playbook
- inventory_file
- queue_name: tripleo
- ansible_queue_name: tripleo
- module_path: /usr/share/ansible-modules
- ansible_extra_env_variables:
ANSIBLE_HOST_KEY_CHECKING: 'False'
tags:
- tripleo-common-managed
tasks:
download_config:
action: tripleo.config.download_config
on-success: get_private_key
publish:
tmp_path: <% task().result %>
on-error: node_update_failed
get_private_key:
action: tripleo.validations.get_privkey
publish:
private_key: <% task().result %>
on-success: node_update
node_update:
action: tripleo.ansible-playbook
input:
inventory: <% $.inventory_file %>
playbook: <% $.tmp_path %>/<% $.playbook %>
remote_user: <% $.node_user %>
become: true
become_user: root
verbosity: 0
ssh_private_key: <% $.private_key %>
extra_env_variables: <% $.ansible_extra_env_variables %>
limit_hosts: <% $.nodes %>
module_path: <% $.module_path %>
queue_name: <% $.ansible_queue_name %>
execution_id: <% execution().id %>
on-success:
- node_update_passed: <% task().result.returncode = 0 %>
- node_update_failed: <% task().result.returncode != 0 %>
on-error: node_update_failed
publish:
output: <% task().result %>
node_update_passed:
on-success: notify_zaqar
publish:
status: SUCCESS
message: Updated nodes - <% $.nodes %>
node_update_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: Failed to update nodes - <% $.nodes %>, please see the logs.
notify_zaqar:
action: zaqar.queue_post
retry: count=5 delay=1
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.package_update.v1.update_nodes
payload:
status: <% $.status %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>
converge_upgrade_plan:
description: Take a container and perform the converge step of a major upgrade
input:
- container
- timeout: 240
- queue_name: tripleo
- skip_deploy_identifier: False
tags:
- tripleo-common-managed
tasks:
upgrade_converge:
action: tripleo.deployment.deploy
input:
timeout: <% $.timeout %>
container: <% $.container %>
skip_deploy_identifier: <% $.skip_deploy_identifier %>
on-error: set_update_failed
set_update_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(upgrade_converge).result %>
send_message:
action: zaqar.queue_post
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.major_upgrade.v1.converge_upgrade_plan
payload:
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>