Merge "Migrate Octavia to external_deploy_task"

This commit is contained in:
Zuul 2018-06-21 09:07:54 +00:00 committed by Gerrit Code Review
commit b5ae65fe1e

View File

@ -149,6 +149,43 @@ resources:
default_key_pair: default_key_pair:
type: OS::Nova::KeyPair type: OS::Nova::KeyPair
external_id: default external_id: default
OctaviaVars:
type: OS::Heat::Value
properties:
type: json
value:
vars:
os_auth_type: "password"
os_identity_api_version: "3"
amp_image_name: { get_param: OctaviaAmphoraImageName }
amp_image_filename: {get_param: OctaviaAmphoraImageFilename }
amp_image_tag: { get_param: OctaviaAmphoraImageTag }
amp_ssh_key_name: { get_param: OctaviaAmphoraSshKeyName }
amp_ssh_key_path: { get_param: OctaviaAmphoraSshKeyFile }
amp_ssh_key_data: { get_attr: [default_key_pair, public_key] }
auth_username: { get_param: OctaviaUserName }
auth_password: { get_param: OctaviaPassword }
auth_project_name: { get_param: OctaviaProjectName }
lb_mgmt_net_name: { get_param: OctaviaControlNetwork }
lb_mgmt_subnet_name: { get_param: OctaviaControlSubnet }
lb_sec_group_name: { get_param: OctaviaControlSubnet }
lb_mgmt_subnet_cidr: { get_param: OctaviaControlSubnetCidr }
lb_mgmt_subnet_gateway: { get_param: OctaviaControlSubnetGateway }
lb_mgmt_subnet_pool_start: { get_param: OctaviaControlSubnetPoolStart }
lb_mgmt_subnet_pool_end: { get_param: OctaviaControlSubnetPoolEnd }
ca_cert_path: { get_param: OctaviaCaCertFile }
ca_private_key_path: { get_param: OctaviaCaKeyFile }
ca_passphrase: { get_param: OctaviaCaKeyPassphrase }
client_cert_path: { get_param: OctaviaClientCertFile }
generate_certs: { get_param: OctaviaGenerateCerts }
mgmt_port_dev: { get_param: OctaviaMgmtPortDevName }
os_password: { get_param: AdminPassword }
os_project_name: 'admin'
os_username: 'admin'
octavia_ansible_playbook: '/usr/share/tripleo-common/playbooks/octavia-files.yaml'
os_auth_url: { get_param: [EndpointMap, KeystoneV3Public, uri] }
octavia_local_tmpdir: "{{playbook_dir}}/octavia-ansible/local_dir"
octavia_group_vars_dir: "{{playbook_dir}}/octavia-ansible/group_vars"
outputs: outputs:
role_data: role_data:
@ -162,35 +199,79 @@ outputs:
step_config: '' step_config: ''
docker_config: {} docker_config: {}
config_settings: {} config_settings: {}
workflow_tasks: external_deploy_tasks:
step5: - name: octavia_post_deploy
- name: octavia_post_workflow when: step == '5'
workflow: { get_param: OctaviaPostWorkflowName } block:
input: - name: Set up group_vars
amp_image_name: { get_param: OctaviaAmphoraImageName } set_fact:
amp_image_filename: {get_param: OctaviaAmphoraImageFilename } octavia_ansible_group_vars: { get_attr: [OctaviaVars, value, vars] }
amp_image_tag: { get_param: OctaviaAmphoraImageTag } - name: Make needed directories on the undercloud
amp_ssh_key_name: { get_param: OctaviaAmphoraSshKeyName } file:
amp_ssh_key_path: { get_param: OctaviaAmphoraSshKeyFile } path: "{{item}}"
amp_ssh_key_data: { get_attr: [default_key_pair, public_key] } state: directory
auth_username: { get_param: OctaviaUserName } with_items:
auth_password: { get_param: OctaviaPassword } - "{{ octavia_ansible_group_vars.octavia_local_tmpdir }}"
auth_project_name: { get_param: OctaviaProjectName } - "{{ octavia_ansible_group_vars.octavia_group_vars_dir }}"
lb_mgmt_net_name: { get_param: OctaviaControlNetwork } - name: Write group_vars file
lb_mgmt_subnet_name: { get_param: OctaviaControlSubnet } copy:
lb_sec_group_name: { get_param: OctaviaControlSubnet } dest: "{{ octavia_ansible_group_vars.octavia_group_vars_dir }}/octavia_vars.yaml"
lb_mgmt_subnet_cidr: { get_param: OctaviaControlSubnetCidr } content: "{{ octavia_ansible_group_vars|to_nice_yaml }}"
lb_mgmt_subnet_gateway: { get_param: OctaviaControlSubnetGateway } - name: Write octavia inventory
lb_mgmt_subnet_pool_start: { get_param: OctaviaControlSubnetPoolStart } copy:
lb_mgmt_subnet_pool_end: { get_param: OctaviaControlSubnetPoolEnd } dest: "{{playbook_dir}}/octavia-ansible/inventory.yaml"
ca_cert_path: { get_param: OctaviaCaCertFile } content: |
ca_private_key_path: { get_param: OctaviaCaKeyFile } octavia_nodes:
ca_passphrase: { get_param: OctaviaCaKeyPassphrase } hosts:
client_cert_path: { get_param: OctaviaClientCertFile }
generate_certs: { get_param: OctaviaGenerateCerts } {%- set octavia_groups = ['worker'] -%}
mgmt_port_dev: { get_param: OctaviaMgmtPortDevName } {%- for octavia_group in octavia_groups -%}
overcloud_password: { get_param: AdminPassword } {%- if 'octavia_' ~ octavia_groups %}
overcloud_project: 'admin'
overcloud_admin: 'admin' {% for host in groups['octavia_' ~ octavia_group] -%}
octavia_ansible_playbook: '/usr/share/tripleo-common/playbooks/octavia-files.yaml' {{ hostvars.raw_get(host)['ansible_hostname'] }}:
overcloud_pub_auth_uri: { get_param: [EndpointMap, KeystoneV3Public, uri] } ansible_user: {{ hostvars.raw_get(host)['ansible_ssh_user'] | default('heat-admin') }}
ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) }}
ansible_become: true
{% endfor %}
{%- endif -%}
{%- endfor %}
Undercloud:
hosts:
{% for host in groups['Undercloud'] -%}
{{ hostvars.raw_get(host)['ansible_hostname'] }}:
ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) }}
ansible_become: false
ansible_connection: local
{%- endfor -%}
- name: Check for ssh_private_key in working directory
stat:
path: "{{playbook_dir}}/ssh_private_key"
register: st
- name: Set private key location
set_fact:
ansible_ssh_key: "{{ playbook_dir+'/ssh_private_key' if st.stat.exists else '~/.ssh/id_rsa' }}"
- name: Configure octavia command
set_fact:
config_octavia_cmd: ansible-playbook -i "{{playbook_dir}}/octavia-ansible/inventory.yaml" --extra-vars @"{{ octavia_ansible_group_vars.octavia_group_vars_dir }}"/octavia_vars.yaml "{{ octavia_ansible_group_vars.octavia_ansible_playbook }}" --private-key "{{ ansible_ssh_key }}"
- set_fact:
octavia_log_dir: "{{playbook_dir}}/octavia-ansible/"
- debug:
msg: "Configure Octavia command is: {{ config_octavia_cmd }}"
- name: Configure octavia on overcloud
environment:
ANSIBLE_HOST_KEY_CHECKING: False
ANSIBLE_SSH_RETRIES: 3
ANSIBLE_RETRY_FILES_ENABLED: false
ANSIBLE_LOCAL_TEMP: "{{ octavia_ansible_group_vars.octavia_local_tmpdir }}"
ANSIBLE_LOG_PATH: "{{ octavia_log_dir }}/octavia-ansible.log"
shell: "{{ config_octavia_cmd }}"
- name: Purge temp dirs
file:
state: absent
path: "{{ item }}"
with_items:
- "{{ octavia_ansible_group_vars.octavia_local_tmpdir }}"