--- version: '2.0' name: tripleo.deployment.v1 description: TripleO deployment workflows workflows: deploy_on_server: input: - server_uuid - server_name - config - config_name - group - queue_name: tripleo tags: - tripleo-common-managed tasks: deploy_config: action: tripleo.deployment.config on-complete: send_message input: server_id: <% $.server_uuid %> name: <% $.config_name %> config: <% $.config %> group: <% $.group %> publish: stdout: <% task().result.deploy_stdout %> stderr: <% task().result.deploy_stderr %> status_code: <% task().result.deploy_status_code %> publish-on-error: status: FAILED message: <% task().result %> send_message: action: zaqar.queue_post retry: count=5 delay=1 input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.deploy_on_server payload: status: <% $.get("status", "SUCCESS") %> message: <% $.get("message", "") %> server_uuid: <% $.server_uuid %> server_name: <% $.server_name %> config_name: <% $.config_name %> status_code: <% $.get("status_code", "") %> stdout: <% $.get("stdout", "") %> stderr: <% $.get("stderr", "") %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> deploy_on_servers: input: - server_name - config_name - config - group: script - queue_name: tripleo tags: - tripleo-common-managed tasks: get_servers_matching: action: nova.servers_list on-success: deploy_on_servers publish: servers_with_name: <% task().result._info.where($.name.indexOf(execution().input.server_name) > -1) %> deploy_on_servers: on-success: send_success_message on-error: send_failed_message with-items: server in <% $.servers_with_name %> workflow: tripleo.deployment.v1.deploy_on_server input: server_name: <% $.server.name %> server_uuid: <% $.server.id %> config: <% $.config %> config_name: <% $.config_name %> group: <% $.group %> queue_name: <% $.queue_name %> send_success_message: action: zaqar.queue_post retry: count=5 delay=1 input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.deploy_on_servers payload: status: SUCCESS execution: <% execution() %> send_failed_message: action: zaqar.queue_post retry: count=5 delay=1 input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.deploy_on_servers payload: status: FAILED message: <% task(deploy_on_servers).result %> execution: <% execution() %> on-success: fail deploy_plan: description: > Deploy the overcloud for a plan. input: - container - run_validations: False - timeout: 240 - skip_deploy_identifier: False - queue_name: tripleo tags: - tripleo-common-managed tasks: add_validation_ssh_key: workflow: tripleo.validations.v1.add_validation_ssh_key_parameter input: container: <% $.container %> queue_name: <% $.queue_name %> on-complete: - run_validations: <% $.run_validations %> - create_swift_rings_backup_plan: <% not $.run_validations %> run_validations: workflow: tripleo.validations.v1.run_groups input: group_names: - 'pre-deployment' plan: <% $.container %> queue_name: <% $.queue_name %> on-success: create_swift_rings_backup_plan on-error: set_validations_failed set_validations_failed: on-success: send_message publish: status: FAILED message: <% task(run_validations).result %> create_swift_rings_backup_plan: workflow: tripleo.swift_rings_backup.v1.create_swift_rings_backup_container_plan on-success: get_heat_stack on-error: create_swift_rings_backup_plan_set_status_failed input: container: <% $.container %> queue_name: <% $.queue_name %> use_default_templates: true get_heat_stack: action: heat.stacks_get stack_id=<% $.container %> on-error: deploy on-success: - set_stack_in_progress: <% "_IN_PROGRESS" in task().result.stack_status %> - deploy: <% not "_IN_PROGRESS" in task().result.stack_status %> set_stack_in_progress: on-success: send_message publish: status: FAILED message: The Heat stack is busy. deploy: action: tripleo.deployment.deploy input: timeout: <% $.timeout %> container: <% $.container %> skip_deploy_identifier: <% $.skip_deploy_identifier %> on-success: send_message on-error: set_deployment_failed create_swift_rings_backup_plan_set_status_failed: on-success: send_message publish: status: FAILED message: <% task(create_swift_rings_backup_plan).result %> set_deployment_failed: on-success: send_message publish: status: FAILED message: <% task(deploy).result %> send_message: action: zaqar.queue_post retry: count=5 delay=1 input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.deploy_plan payload: status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> get_horizon_url: description: > Retrieve the Horizon URL from the Overcloud stack. input: - stack: overcloud - queue_name: tripleo tags: - tripleo-common-managed output: horizon_url: <% $.horizon_url %> tasks: get_horizon_url: action: heat.stacks_get input: stack_id: <% $.stack %> publish: horizon_url: <% task().result.outputs.where($.output_key = "EndpointMap").output_value.HorizonPublic.uri.single() %> on-success: notify_zaqar publish-on-error: status: FAILED message: <% task().result %> notify_zaqar: action: zaqar.queue_post retry: count=5 delay=1 input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.get_horizon_url payload: horizon_url: <% $.get('horizon_url', '') %> status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> config_download_deploy: description: > Configure the overcloud with config-download. input: - timeout: 240 - queue_name: tripleo - work_dir: /var/lib/mistral tags: - tripleo-common-managed tasks: get_config: action: tripleo.config.get_overcloud_config on-success: download_config on-error: send_message publish-on-error: status: FAILED message: <% task().result %> download_config: action: tripleo.config.download_config input: work_dir: <% $.get('work_dir') %>/<% execution().id %> on-success: send_msg_config_download on-error: send_message publish-on-error: status: FAILED message: <% task().result %> send_msg_config_download: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.config_download payload: status: <% $.get('status', 'RUNNING') %> message: Config downloaded at <% $.get('work_dir') %>/<% execution().id %> execution: <% execution() %> on-success: get_private_key get_private_key: action: tripleo.validations.get_privkey publish: private_key: <% task().result %> on-success: generate_inventory on-error: send_message publish-on-error: status: FAILED message: <% task().result %> generate_inventory: action: tripleo.ansible-generate-inventory input: ansible_ssh_user: tripleo-admin work_dir: <% $.get('work_dir') %>/<% execution().id %> publish: inventory: <% task().result %> on-success: send_msg_generate_inventory on-error: send_message publish-on-error: status: FAILED message: <% task().result %> send_msg_generate_inventory: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.config_download payload: status: <% $.get('status', 'RUNNING') %> message: Inventory generated at <% $.get('inventory') %> execution: <% execution() %> on-success: send_msg_run_ansible send_msg_run_ansible: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.config_download payload: status: <% $.get('status', 'RUNNING') %> message: > Running ansible playbook at <% $.get('work_dir') %>/<% execution().id %>/deploy_steps_playbook.yaml. See log file at <% $.get('work_dir') %>/<% execution().id %>/ansible.log for progress. ... execution: <% execution() %> on-success: run_ansible run_ansible: action: tripleo.ansible-playbook input: inventory: <% $.inventory %> playbook: <% $.get('work_dir') %>/<% execution().id %>/deploy_steps_playbook.yaml remote_user: tripleo-admin ssh_extra_args: '-o StrictHostKeyChecking=no' ssh_private_key: <% $.private_key %> use_openstack_credentials: true verbosity: 1 become: true timeout: <% $.timeout %> work_dir: <% $.get('work_dir') %>/<% execution().id %> queue_name: <% $.queue_name %> reproduce_command: true publish: log_path: <% task(run_ansible).result.get('log_path') %> on-success: - ansible_passed: <% task().result.returncode = 0 %> - ansible_failed: <% task().result.returncode != 0 %> on-error: send_message publish-on-error: status: FAILED message: Ansible failed, check log at <% $.get('work_dir') %>/<% execution().id %>/ansible.log. ansible_passed: on-success: send_message publish: status: SUCCESS message: Ansible passed. ansible_failed: on-success: send_message publish: status: FAILED message: Ansible failed, check log at <% $.get('work_dir') %>/<% execution().id %>/ansible.log. send_message: action: zaqar.queue_post retry: count=5 delay=1 input: queue_name: <% $.queue_name %> messages: body: type: tripleo.deployment.v1.config_download payload: status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %>