Files
tripleo-common/workbooks/package_update.yaml
Brad P. Crochet 89986793a8 Add a 'trash_output' flag to ansible playbook action
Sometimes, the output is REALLY big. It ends up throwing an error in
MySQL trying to write to the output of the ActionExecution to the
database. Since we're passing the output back via zaqar, we can
just throw this away.

The trash_output flag defaults to false, to maintain the original
behavior.

Change-Id: Id13c7cf52b306891d780243b2562c8ca305aa365
Closes-Bug: #1768913
2018-05-03 15:09:44 -04:00

297 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_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" %>