8d333d0d7d
This expands a list of instances with provisioned==False, then unprovisions those instances. It will be run as the last step of a scale-down or overcloud delete. Change-Id: I9e9f1327070476326597c42ed14280a2088544bf Blueprint: nova-less-deploy
332 lines
9.5 KiB
YAML
332 lines
9.5 KiB
YAML
---
|
|
version: '2.0'
|
|
name: tripleo.baremetal_deploy.v1
|
|
description: TripleO Baremetal Deployment Workflows
|
|
|
|
workflows:
|
|
|
|
_deploy_one:
|
|
description: Internal workflow to deploy one node
|
|
|
|
input:
|
|
- instance
|
|
- node
|
|
- ssh_keys: []
|
|
- ssh_user_name: heat-admin
|
|
- timeout: 3600
|
|
- queue_name: tripleo
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
|
|
deploy_node:
|
|
action: tripleo.baremetal_deploy.deploy_node
|
|
input:
|
|
instance: <% $.instance %>
|
|
node: <% $.node %>
|
|
ssh_keys: <% $.ssh_keys %>
|
|
ssh_user_name: <% $.ssh_user_name %>
|
|
publish:
|
|
instance: <% task().result %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: wait_for_deploy
|
|
on-error: send_message
|
|
|
|
wait_for_deploy:
|
|
action: tripleo.baremetal_deploy.wait_for_deploy
|
|
input:
|
|
instance: <% $.instance %>
|
|
timeout: <% $.timeout %>
|
|
publish:
|
|
instance: <% task().result %>
|
|
message: Instance <% task().result.hostname %> deployed successfully
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-complete: send_message
|
|
|
|
send_message:
|
|
workflow: tripleo.messaging.v1.send
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
type: <% execution().name %>
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
message: <% $.get('message', '') %>
|
|
execution: <% execution() %>
|
|
instance: <% $.instance %>
|
|
on-success:
|
|
- fail: <% $.get('status', 'SUCCESS') != 'SUCCESS' %>
|
|
|
|
output:
|
|
instance: <% $.instance %>
|
|
|
|
output-on-error:
|
|
result: <% $.get('message', 'Deployment failed') %>
|
|
|
|
|
|
deploy_instances:
|
|
description: Deploy instances on bare metal nodes.
|
|
|
|
input:
|
|
- instances
|
|
- ssh_keys: []
|
|
- ssh_user_name: heat-admin
|
|
- timeout: 3600
|
|
- concurrency: 20
|
|
- queue_name: tripleo
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
|
|
find_existing_instances:
|
|
action: tripleo.baremetal_deploy.check_existing_instances
|
|
input:
|
|
instances: <% $.instances %>
|
|
publish:
|
|
instances: <% task().result.not_found %>
|
|
existing_instances: <% task().result.instances %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: reserve_nodes
|
|
on-error: send_message
|
|
|
|
reserve_nodes:
|
|
action: tripleo.baremetal_deploy.reserve_nodes
|
|
input:
|
|
instances: <% $.instances %>
|
|
publish:
|
|
reservations: <% task().result.reservations %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: deploy_nodes
|
|
on-error: send_message
|
|
|
|
deploy_nodes:
|
|
with-items: reservation in <% $.reservations %>
|
|
concurrency: <% $.concurrency %>
|
|
workflow: _deploy_one
|
|
input:
|
|
instance: <% $.reservation.instance %>
|
|
node: <% $.reservation.node %>
|
|
ssh_keys: <% $.ssh_keys %>
|
|
ssh_user_name: <% $.ssh_user_name %>
|
|
timeout: <% $.timeout %>
|
|
queue_name: <% $.queue_name %>
|
|
publish:
|
|
all_instances: <% task().result.instance + $.existing_instances %>
|
|
new_instances: <% task().result.instance %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: publish_result
|
|
on-error: send_message
|
|
|
|
publish_result:
|
|
publish:
|
|
ctlplane_ips: <% $.all_instances.toDict($.hostname, $.ip_addresses.ctlplane[0]) %>
|
|
instances: <% $.all_instances.toDict($.hostname, $) %>
|
|
port_map: <% $.all_instances.toDict($.hostname, $.port_map) %>
|
|
on-complete: send_message
|
|
|
|
send_message:
|
|
workflow: tripleo.messaging.v1.send
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
type: <% execution().name %>
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
message: <% $.get('message', '') %>
|
|
execution: <% execution() %>
|
|
payload:
|
|
ctlplane_ips: <% $.get('ctlplane_ips', {}) %>
|
|
instances: <% $.get('instances', {}) %>
|
|
port_map: <% $.get('port_map', {}) %>
|
|
|
|
output:
|
|
ctlplane_ips: <% $.ctlplane_ips %>
|
|
existing_instances: <% $.existing_instances.toDict($.hostname, $) %>
|
|
instances: <% $.instances %>
|
|
new_instances: <% $.new_instances.toDict($.hostname, $) %>
|
|
port_map: <% $.port_map %>
|
|
|
|
|
|
undeploy_instances:
|
|
description: Undeploy previously deployed instances
|
|
|
|
input:
|
|
- instances
|
|
- timeout: 3600
|
|
- concurrency: 20
|
|
- queue_name: tripleo
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
|
|
undeploy_instances:
|
|
with-items: instance in <% $.instances %>
|
|
concurrency: <% $.concurrency %>
|
|
action: tripleo.baremetal_deploy.undeploy_instance
|
|
input:
|
|
instance: <% $.instance %>
|
|
timeout: <% $.timeout %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-complete: send_message
|
|
|
|
send_message:
|
|
workflow: tripleo.messaging.v1.send
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
type: <% execution().name %>
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
message: <% $.get('message', '') %>
|
|
execution: <% execution() %>
|
|
|
|
|
|
deploy_roles:
|
|
description: Deploy roles on bare metal nodes.
|
|
|
|
input:
|
|
- roles
|
|
- plan: overcloud
|
|
- ctlplane_network: ctlplane
|
|
- ssh_keys: []
|
|
- ssh_user_name: heat-admin
|
|
- timeout: 3600
|
|
- concurrency: 20
|
|
- queue_name: tripleo
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
|
|
expand_roles:
|
|
action: tripleo.baremetal_deploy.expand_roles
|
|
input:
|
|
roles: <% $.roles %>
|
|
stackname: <% $.plan %>
|
|
publish:
|
|
input_instances: <% task().result.instances %>
|
|
environment: <% task().result.environment %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: deploy_instances
|
|
on-error: send_message
|
|
|
|
deploy_instances:
|
|
workflow: tripleo.baremetal_deploy.v1.deploy_instances
|
|
input:
|
|
instances: <% $.input_instances %>
|
|
ssh_keys: <% $.ssh_keys %>
|
|
ssh_user_name: <% $.ssh_user_name %>
|
|
timeout: <% $.timeout %>
|
|
queue_name: <% $.queue_name %>
|
|
publish:
|
|
ctlplane_ips: <% task().result.ctlplane_ips %>
|
|
instances: <% task().result.instances %>
|
|
new_instances: <% task().result.new_instances %>
|
|
existing_instances: <% task().result.existing_instances %>
|
|
port_map: <% task().result.port_map %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: populate_environment
|
|
on-error: send_message
|
|
|
|
populate_environment:
|
|
action: tripleo.baremetal_deploy.populate_environment
|
|
input:
|
|
ctlplane_network: <% $.ctlplane_network %>
|
|
environment: <% $.environment %>
|
|
port_map: <% $.port_map %>
|
|
publish:
|
|
environment: <% task().result %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-complete: send_message
|
|
|
|
send_message:
|
|
workflow: tripleo.messaging.v1.send
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
type: <% execution().name %>
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
message: <% $.get('message', '') %>
|
|
execution: <% execution() %>
|
|
payload:
|
|
environment: <% $.get('environment', {}) %>
|
|
instances: <% $.get('instances', {}) %>
|
|
|
|
output:
|
|
ctlplane_ips: <% $.ctlplane_ips %>
|
|
environment: <% $.environment %>
|
|
existing_instances: <% $.existing_instances %>
|
|
instances: <% $.instances %>
|
|
new_instances: <% $.new_instances %>
|
|
port_map: <% $.port_map %>
|
|
|
|
undeploy_roles:
|
|
description: Undeploy provisioned=False instances in roles.
|
|
|
|
input:
|
|
- roles
|
|
- plan: overcloud
|
|
- timeout: 3600
|
|
- concurrency: 20
|
|
- queue_name: tripleo
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
|
|
expand_roles:
|
|
action: tripleo.baremetal_deploy.expand_roles
|
|
input:
|
|
roles: <% $.roles %>
|
|
stackname: <% $.plan %>
|
|
provisioned: False
|
|
publish:
|
|
input_instances: <% task().result.instances %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: undeploy_instances
|
|
on-error: send_message
|
|
|
|
undeploy_instances:
|
|
workflow: tripleo.baremetal_deploy.v1.undeploy_instances
|
|
input:
|
|
instances: <% $.input_instances %>
|
|
timeout: <% $.timeout %>
|
|
queue_name: <% $.queue_name %>
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
on-success: send_message
|
|
on-error: send_message
|
|
|
|
send_message:
|
|
workflow: tripleo.messaging.v1.send
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
type: <% execution().name %>
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
message: <% $.get('message', '') %>
|
|
execution: <% execution() %>
|
|
payload:
|
|
environment: <% $.get('environment', {}) %>
|
|
instances: <% $.get('instances', {}) %> |