tripleo-common/workbooks/octavia_post.yaml
Carlos Goncalves a95b5c5b1d Option to upload Octavia amphora img in RAW format
When deploying an overcloud with Octavia, the amphora image is uploaded
to Glance as QCOW2. When using the RBD backend for Glance and Nova, this
causes the image to be converted to RAW on each deployment. With slower
storage, this leads to load balancer creation to fail with a compute
timeout exception from Octavia.

This patch adds an option to allow amphora image to be automatically
uploaded to Glance in raw format.

Partial-Bug: #1778303
Change-Id: I698ed96881756bb547f5338b147b0c795103acb5
(cherry picked from commit 73631a23ee)
2018-12-11 13:31:26 +00:00

157 lines
5.7 KiB
YAML

---
version: '2.0'
name: tripleo.octavia_post.v1
description: TripleO Octavia post deployment Workflows
workflows:
octavia_post_deploy:
description: Octavia post deployment
input:
- amp_image_name
- amp_image_filename
- amp_image_tag
- amp_ssh_key_name
- amp_ssh_key_path
- amp_ssh_key_data
- amp_to_raw
- auth_username
- auth_password
- auth_project_name
- lb_mgmt_net_name
- lb_mgmt_subnet_name
- lb_sec_group_name
- lb_mgmt_subnet_cidr
- lb_mgmt_subnet_gateway
- lb_mgmt_subnet_pool_start
- lb_mgmt_subnet_pool_end
- generate_certs
- octavia_ansible_playbook
- overcloud_admin
- ca_cert_path
- ca_private_key_path
- ca_passphrase
- client_cert_path
- mgmt_port_dev
- overcloud_password
- overcloud_project
- overcloud_pub_auth_uri
- ansible_extra_env_variables:
ANSIBLE_HOST_KEY_CHECKING: 'False'
ANSIBLE_SSH_RETRIES: '3'
tags:
- tripleo-common-managed
tasks:
get_overcloud_stack_details:
publish:
# TODO(beagles), we are making an assumption about the octavia heatlh manager and
# controller worker needing
#
octavia_controller_ips: <% env().get('service_ips', {}).get('octavia_worker_ctlplane_node_ips', []) %>
on-success: enable_ssh_admin
enable_ssh_admin:
workflow: tripleo.access.v1.enable_ssh_admin
input:
ssh_servers: <% $.octavia_controller_ips %>
on-success: get_private_key
get_private_key:
action: tripleo.validations.get_privkey
publish:
private_key: <% task().result %>
on-success: make_local_temp_directory
make_local_temp_directory:
action: tripleo.files.make_temp_dir
publish:
undercloud_local_dir: <% task().result.path %>
on-success: make_remote_temp_directory
make_remote_temp_directory:
action: tripleo.files.make_temp_dir
publish:
undercloud_remote_dir: <% task().result.path %>
on-success: build_local_connection_environment_vars
build_local_connection_environment_vars:
publish:
ansible_local_connection_variables: <% dict('ANSIBLE_REMOTE_TEMP' => $.undercloud_remote_dir, 'ANSIBLE_LOCAL_TEMP' => $.undercloud_local_dir) + $.ansible_extra_env_variables %>
on-success: upload_amphora
upload_amphora:
action: tripleo.ansible-playbook
input:
inventory:
undercloud:
hosts:
localhost:
ansible_connection: local
playbook: <% $.octavia_ansible_playbook %>
remote_user: stack
extra_env_variables: <% $.ansible_local_connection_variables %>
extra_vars:
os_password: <% $.overcloud_password %>
os_username: <% $.overcloud_admin %>
os_project_name: <% $.overcloud_project %>
os_auth_url: <% $.overcloud_pub_auth_uri %>
os_auth_type: "password"
os_identity_api_version: "3"
amp_image_name: <% $.amp_image_name %>
amp_image_filename: <% $.amp_image_filename %>
amp_image_tag: <% $.amp_image_tag %>
amp_ssh_key_name: <% $.amp_ssh_key_name %>
amp_ssh_key_path: <% $.amp_ssh_key_path %>
amp_ssh_key_data: <% $.amp_ssh_key_data %>
amp_to_raw: <% $.amp_to_raw %>
auth_username: <% $.auth_username %>
auth_password: <% $.auth_password %>
auth_project_name: <% $.auth_project_name %>
on-success: config_octavia
config_octavia:
action: tripleo.ansible-playbook
input:
inventory:
octavia_nodes:
hosts: <% $.octavia_controller_ips.toDict($, {}) %>
verbosity: 0
playbook: <% $.octavia_ansible_playbook %>
remote_user: tripleo-admin
become: true
become_user: root
ssh_private_key: <% $.private_key %>
ssh_common_args: '-o StrictHostKeyChecking=no'
ssh_extra_args: '-o UserKnownHostsFile=/dev/null'
extra_env_variables: <% $.ansible_extra_env_variables %>
extra_vars:
os_password: <% $.overcloud_password %>
os_username: <% $.overcloud_admin %>
os_project_name: <% $.overcloud_project %>
os_auth_url: <% $.overcloud_pub_auth_uri %>
os_auth_type: "password"
os_identity_api_version: "3"
amp_image_tag: <% $.amp_image_tag %>
lb_mgmt_net_name: <% $.lb_mgmt_net_name %>
lb_mgmt_subnet_name: <% $.lb_mgmt_subnet_name %>
lb_sec_group_name: <% $.lb_sec_group_name %>
lb_mgmt_subnet_cidr: <% $.lb_mgmt_subnet_cidr %>
lb_mgmt_subnet_gateway: <% $.lb_mgmt_subnet_gateway %>
lb_mgmt_subnet_pool_start: <% $.lb_mgmt_subnet_pool_start %>
lb_mgmt_subnet_pool_end: <% $.lb_mgmt_subnet_pool_end %>
ca_cert_path: <% $.ca_cert_path %>
ca_private_key_path: <% $.ca_private_key_path %>
ca_passphrase: <% $.ca_passphrase %>
client_cert_path: <% $.client_cert_path %>
generate_certs: <% $.generate_certs %>
mgmt_port_dev: <% $.mgmt_port_dev %>
auth_project_name: <% $.auth_project_name %>
on-complete: purge_local_temp_dir
purge_local_temp_dir:
action: tripleo.files.remove_temp_dir path=<% $.undercloud_local_dir %>
on-complete: purge_remote_temp_dir
purge_remote_temp_dir:
action: tripleo.files.remove_temp_dir path=<% $.undercloud_remote_dir %>