tripleo-common/workbooks/undercloud_backup.yaml

134 lines
4.2 KiB
YAML

---
version: '2.0'
name: tripleo.undercloud_backup.v1
description: TripleO Undercloud backup workflows
workflows:
backup:
description: This workflow will launch the Undercloud backup
tags:
- tripleo-common-managed
input:
- sources_path: '/home/stack/'
- queue_name: tripleo
tasks:
# Action to know if there is enough available space
# to run the Undercloud backup
get_free_space:
action: tripleo.undercloud.get_free_space
publish:
status: SUCCESS
message: <% task().result %>
free_space: <% task().result %>
on-success: create_backup_dir
on-error: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
# We create a temp directory to store the Undercloud
# backup
create_backup_dir:
action: tripleo.undercloud.create_backup_dir
publish:
status: SUCCESS
message: <% task().result %>
backup_path: <% task().result %>
on-success: get_database_credentials
on-error: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
# The Undercloud database password for the root
# user is stored in a Mistral environment, we
# need the password in order to run the database dump
get_database_credentials:
action: mistral.environments_get name='tripleo.undercloud-config'
publish:
status: SUCCESS
message: <% task().result %>
undercloud_db_password: <% task(get_database_credentials).result.variables.undercloud_db_password %>
on-success: create_database_backup
on-error: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
# Run the DB dump of all the databases and store the result
# in the temporary folder
create_database_backup:
input:
path: <% $.backup_path.path %>
dbuser: root
dbpassword: <% $.undercloud_db_password %>
action: tripleo.undercloud.create_database_backup
publish:
status: SUCCESS
message: <% task().result %>
on-success: create_fs_backup
on-error: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
# This action will run the fs backup
create_fs_backup:
input:
sources_path: <% $.sources_path %>
path: <% $.backup_path.path %>
action: tripleo.undercloud.create_file_system_backup
publish:
status: SUCCESS
message: <% task().result %>
on-success: upload_backup
on-error: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
# This action will push the backup to swift
upload_backup:
input:
backup_path: <% $.backup_path.path %>
action: tripleo.undercloud.upload_backup_to_swift
publish:
status: SUCCESS
message: <% task().result %>
on-success: cleanup_backup
on-error: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
# This action will remove the backup temp folder
cleanup_backup:
input:
path: <% $.backup_path.path %>
action: tripleo.undercloud.remove_temp_dir
publish:
status: SUCCESS
message: <% task().result %>
on-success: send_message
on-error: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
# Sending a message to show that the backup finished
send_message:
action: zaqar.queue_post
retry: count=5 delay=1
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.undercloud_backup.v1.launch
payload:
status: <% $.get('status', 'SUCCESS') %>
execution: <% execution() %>
message: <% $.get('message', '') %>
on-success:
- fail: <% $.get('status') = "FAILED" %>