tripleo-common/workbooks/package_update.yaml

298 lines
8.2 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:
action: tripleo.package_update.update_stack
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: tripleo-admin
- nodes
- playbook
- inventory_file
- ansible_queue_name: tripleo
- module_path: /usr/share/ansible-modules
- ansible_extra_env_variables:
ANSIBLE_LOG_PATH: /var/log/mistral/package_update.log
ANSIBLE_HOST_KEY_CHECKING: 'False'
- verbosity: 1
- work_dir: /var/lib/mistral
- skip_tags: ''
tags:
- tripleo-common-managed
tasks:
download_config:
action: tripleo.config.download_config
input:
work_dir: <% $.work_dir %>/<% execution().id %>
on-success: get_private_key
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: <% $.work_dir %>/<% execution().id %>/<% $.playbook %>
remote_user: <% $.node_user %>
become: true
become_user: root
verbosity: <% $.verbosity %>
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 %>
skip_tags: <% $.skip_tags %>
trash_output: true
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: <% $.ansible_queue_name %>
messages:
body:
type: tripleo.package_update.v1.update_nodes
payload:
status: <% $.status %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>
update_converge_plan:
description: Take a container and perform the converge for minor update
input:
- container
- queue_name: tripleo
tags:
- tripleo-common-managed
tasks:
remove_noop:
action: tripleo.plan.remove_noop_deploystep
input:
container: <% $.container %>
on-success: send_message
on-error: set_update_failed
set_update_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(remove_noop).result %>
send_message:
action: zaqar.queue_post
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.package_update.v1.update_converge_plan
payload:
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
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:
remove_noop:
action: tripleo.plan.remove_noop_deploystep
input:
container: <% $.container %>
on-success: send_message
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" %>
ffwd_upgrade_converge_plan:
description: ffwd-upgrade converge removes DeploymentSteps no-op from plan
input:
- container
- queue_name: tripleo
tags:
- tripleo-common-managed
tasks:
remove_noop:
action: tripleo.plan.remove_noop_deploystep
input:
container: <% $.container %>
on-success: send_message
on-error: set_update_failed
set_update_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(remove_noop).result %>
send_message:
action: zaqar.queue_post
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.package_update.v1.ffwd_upgrade_converge_plan
payload:
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>