From 9cac1137d02f9de87fd03b1b5d0e6f5a99a32419 Mon Sep 17 00:00:00 2001 From: Mark Goddard <mark@stackhpc.com> Date: Wed, 26 Jun 2019 14:38:45 +0100 Subject: [PATCH] Add upgrade-bifrost command This performs the same as a deploy-bifrost, but first stops the bifrost services and container if they are running. This can help where a docker stop may lead to an ungraceful shutdown, possibly due to running multiple services in one container. Change-Id: I131ab3c0e850a1d7f5c814ab65385e3a03dfcc74 Implements: blueprint bifrost-upgrade Closes-Bug: #1834332 --- ansible/roles/bifrost/tasks/stop.yml | 37 +++++++++++++++++++++---- ansible/roles/bifrost/tasks/upgrade.yml | 5 ++-- tools/kolla-ansible | 7 +++++ 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/ansible/roles/bifrost/tasks/stop.yml b/ansible/roles/bifrost/tasks/stop.yml index 9a54ab6fc8..02c8f7583a 100644 --- a/ansible/roles/bifrost/tasks/stop.yml +++ b/ansible/roles/bifrost/tasks/stop.yml @@ -1,10 +1,35 @@ --- -- name: Stopping bifrost_deploy container - become: true - kolla_docker: - action: "stop_container" - common_options: "{{ docker_common_options }}" - name: "bifrost_deploy" +- block: + - name: Check if bifrost_deploy container is running + become: true + kolla_container_facts: + name: + - bifrost_deploy + register: container_facts + + - block: + # Ensure that all services are stopped gracefully, and in a sensible + # order. + - name: Stop services gracefully + become: true + command: docker exec bifrost_deploy systemctl stop {{ item }}.service + with_items: + - ironic-api + - ironic-conductor + - ironic-inspector + - mariadb + - rabbitmq-server + - nginx + + - name: Stopping bifrost_deploy container + become: true + kolla_docker: + action: "stop_container" + common_options: "{{ docker_common_options }}" + name: "bifrost_deploy" + + when: "'bifrost_deploy' in container_facts" + when: - inventory_hostname in groups['bifrost'] - "'bifrost_deploy' not in skip_stop_containers" diff --git a/ansible/roles/bifrost/tasks/upgrade.yml b/ansible/roles/bifrost/tasks/upgrade.yml index fae82a1da6..a65ad9bc09 100644 --- a/ansible/roles/bifrost/tasks/upgrade.yml +++ b/ansible/roles/bifrost/tasks/upgrade.yml @@ -1,4 +1,5 @@ --- -- include_tasks: config.yml +# Stop the container prior to redeploying it. +- include_tasks: stop.yml -- include_tasks: start.yml +- include_tasks: deploy.yml diff --git a/tools/kolla-ansible b/tools/kolla-ansible index c07ce13c5e..4ff3d42000 100755 --- a/tools/kolla-ansible +++ b/tools/kolla-ansible @@ -70,6 +70,7 @@ Commands: stop Stop Kolla containers certificates Generate self-signed certificate for TLS *For Development Only* upgrade Upgrades existing OpenStack Environment + upgrade-bifrost Upgrades an existing bifrost container genconfig Generate configuration files for enabled OpenStack services EOF } @@ -106,6 +107,7 @@ reconfigure stop certificates upgrade +upgrade-bifrost genconfig EOF } @@ -324,6 +326,11 @@ EOF ACTION="Upgrading OpenStack Environment" EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=upgrade -e kolla_serial=${ANSIBLE_SERIAL}" ;; +(upgrade-bifrost) + ACTION="Upgrading Bifrost" + PLAYBOOK="${BASEDIR}/ansible/bifrost.yml" + EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=upgrade" + ;; (reconfigure) ACTION="Reconfigure OpenStack service" EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=reconfigure -e kolla_serial=${ANSIBLE_SERIAL}"