From 21ecd9925aaee7ae4193d854daa1634bf60a27a5 Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Wed, 9 Mar 2016 02:17:19 -0500 Subject: [PATCH] Upgrade Heat This could possibly use gold plating in how bootstrapping operates to use shade rather than the shell in the container. It is unclear why stack create failed prior to this patch, but that fact hasn't changed. I think the heat domains are not setup properly in the configuration files, meaning that the domain ID must be created outside of Heat and registered in the configuration file. This is covered in Bug #1553565. Change-Id: I490d4dd68a101f388c0ecb4acab54d5eaa6e314e Partially-Implements: blueprint kolla-upgrade Implements: blueprint upgrade-heat --- ansible/roles/heat/tasks/bootstrap.yml | 25 ++----------------- .../roles/heat/tasks/bootstrap_service.yml | 24 ++++++++++++++++++ ansible/roles/heat/tasks/upgrade.yml | 6 +++++ docker/heat/heat-api/extend_start.sh | 14 +++++++---- 4 files changed, 41 insertions(+), 28 deletions(-) create mode 100644 ansible/roles/heat/tasks/bootstrap_service.yml diff --git a/ansible/roles/heat/tasks/bootstrap.yml b/ansible/roles/heat/tasks/bootstrap.yml index 8429c04145..2ac3cfd8c4 100644 --- a/ansible/roles/heat/tasks/bootstrap.yml +++ b/ansible/roles/heat/tasks/bootstrap.yml @@ -4,6 +4,7 @@ -m mysql_db -a "login_host='{{ database_address }}' login_user='{{ database_user }}' + login_port='{{ mariadb_port }}' login_password='{{ database_password }}' name='{{ heat_database_name }}'" register: database @@ -35,27 +36,5 @@ run_once: True delegate_to: "{{ groups['heat-api'][0] }}" -- name: Running Heat bootstrap container - kolla_docker: - action: "start_container" - common_options: "{{ docker_common_options }}" - detach: False - environment: - KOLLA_BOOTSTRAP: - KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" - OS_AUTH_URL: "{{ openstack_auth.auth_url }}" - OS_IDENTITY_API_VERSION: "3" - OS_USERNAME: "{{ openstack_auth.username }}" - OS_PASSWORD: "{{ openstack_auth.password }}" - OS_PROJECT_NAME: "{{ openstack_auth.project_name }}" - HEAT_DOMAIN_ADMIN_PASSWORD: "{{ heat_domain_admin_password }}" - image: "{{ heat_api_image_full }}" - labels: - BOOTSTRAP: - name: "bootstrap_heat" - volumes: - - "{{ node_config_directory }}/heat-api/:{{ container_config_directory }}/:ro" - - "kolla_logs:/var/log/kolla/" - run_once: True - delegate_to: "{{ groups['heat-api'][0] }}" +- include: bootstrap_service.yml when: database_created diff --git a/ansible/roles/heat/tasks/bootstrap_service.yml b/ansible/roles/heat/tasks/bootstrap_service.yml new file mode 100644 index 0000000000..40af8b1759 --- /dev/null +++ b/ansible/roles/heat/tasks/bootstrap_service.yml @@ -0,0 +1,24 @@ +- name: Running Heat bootstrap container + kolla_docker: + action: "start_container" + common_options: "{{ docker_common_options }}" + detach: False + environment: + KOLLA_BOOTSTRAP: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + OS_AUTH_URL: "{{ openstack_auth.auth_url }}" + OS_IDENTITY_API_VERSION: "3" + OS_USERNAME: "{{ openstack_auth.username }}" + OS_PASSWORD: "{{ openstack_auth.password }}" + OS_PROJECT_NAME: "{{ openstack_auth.project_name }}" + HEAT_DOMAIN_ADMIN_PASSWORD: "{{ heat_domain_admin_password }}" + image: "{{ heat_api_image_full }}" + labels: + BOOTSTRAP: + name: "bootstrap_heat" + restart_policy: "never" + volumes: + - "{{ node_config_directory }}/heat-api/:{{ container_config_directory }}/:ro" + - "kolla_logs:/var/log/kolla/" + run_once: True + delegate_to: "{{ groups['heat-api'][0] }}" diff --git a/ansible/roles/heat/tasks/upgrade.yml b/ansible/roles/heat/tasks/upgrade.yml index ed97d539c0..c0e3b19a40 100644 --- a/ansible/roles/heat/tasks/upgrade.yml +++ b/ansible/roles/heat/tasks/upgrade.yml @@ -1 +1,7 @@ --- +- include: config.yml + +- include: bootstrap_service.yml + +- include: start.yml + serial: "30%" diff --git a/docker/heat/heat-api/extend_start.sh b/docker/heat/heat-api/extend_start.sh index ca4f83da58..9c1e5ba3b9 100644 --- a/docker/heat/heat-api/extend_start.sh +++ b/docker/heat/heat-api/extend_start.sh @@ -4,10 +4,14 @@ # of the KOLLA_BOOTSTRAP variable being set, including empty. if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then heat-manage db_sync - openstack domain create heat - openstack user create --domain heat heat_domain_admin --password ${HEAT_DOMAIN_ADMIN_PASSWORD} - openstack role add --domain heat --user heat_domain_admin admin - openstack role create heat_stack_owner - openstack role create heat_stack_user + CURRENT_HEAT_DOMAIN_NAME=$(openstack domain list | grep heat | awk '{print $4}') + + if [[ "heat" != "$CURRENT_HEAT_DOMAIN_NAME" ]]; then + openstack domain create heat + openstack user create --domain heat heat_domain_admin --password ${HEAT_DOMAIN_ADMIN_PASSWORD} + openstack role add --domain heat --user heat_domain_admin admin + openstack role create heat_stack_owner + openstack role create heat_stack_user + fi exit 0 fi