diff --git a/ansible/roles/stop/tasks/copy_tools.yml b/ansible/roles/stop/tasks/copy_tools.yml new file mode 100644 index 0000000000..e6a1ec62d8 --- /dev/null +++ b/ansible/roles/stop/tasks/copy_tools.yml @@ -0,0 +1,17 @@ +--- +- name: Creating /kolla-stop/tools directory on node + file: + state: directory + path: /tmp/kolla-stop/tools + +- name: Copying validate-docker-execute.sh file + copy: + src: ../tools/validate-docker-execute.sh + dest: /tmp/kolla-stop/tools + mode: 0755 + +- name: Copying stop-containers file + copy: + src: ../tools/stop-containers + dest: /tmp/kolla-stop/tools + mode: 0755 diff --git a/ansible/roles/stop/tasks/main.yml b/ansible/roles/stop/tasks/main.yml new file mode 100644 index 0000000000..ab994d374e --- /dev/null +++ b/ansible/roles/stop/tasks/main.yml @@ -0,0 +1,4 @@ +--- +- include: copy_tools.yml + +- include: stop_containers.yml diff --git a/ansible/roles/stop/tasks/stop_containers.yml b/ansible/roles/stop/tasks/stop_containers.yml new file mode 100644 index 0000000000..7b679f8c43 --- /dev/null +++ b/ansible/roles/stop/tasks/stop_containers.yml @@ -0,0 +1,4 @@ +--- +- name: Stopping Kolla containers + command: /tmp/kolla-stop/tools/stop-containers + diff --git a/ansible/stop.yml b/ansible/stop.yml new file mode 100644 index 0000000000..0ff7bf494f --- /dev/null +++ b/ansible/stop.yml @@ -0,0 +1,4 @@ +--- +- hosts: all + roles: + - stop diff --git a/setup.cfg b/setup.cfg index 8f78de6597..8bdd5143dd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -30,6 +30,7 @@ data_files = share/kolla/tools = tools/cleanup-containers share/kolla/tools = tools/cleanup-host share/kolla/tools = tools/cleanup-images + share/kolla/tools = tools/stop-containers share/kolla/doc = doc/* share/kolla/etc_examples = etc/* share/kolla = tools/init-runonce diff --git a/tools/kolla-ansible b/tools/kolla-ansible index 16891734b2..fefd195218 100755 --- a/tools/kolla-ansible +++ b/tools/kolla-ansible @@ -50,6 +50,7 @@ Commands: post-deploy Do post deploy on deploy node pull Pull all images for containers (only pulls, no running container changes) reconfigure Reconfigure OpenStack service + stop Stop Kolla containers certificates Generate self-signed certificate for TLS *For Development Only* upgrade Upgrades existing OpenStack Environment genconfig Generate configuration files for enabled OpenStack services @@ -206,6 +207,10 @@ EOF ACTION="Reconfigure OpenStack service" EXTRA_OPTS="$EXTRA_OPTS -e action=reconfigure -e serial=30%" ;; +(stop) + ACTION="Stop Kolla containers" + PLAYBOOK="${BASEDIR}/ansible/stop.yml" + ;; (certificates) ACTION="Generate TLS Certificates" PLAYBOOK="${BASEDIR}/ansible/certificates.yml" diff --git a/tools/stop-containers b/tools/stop-containers new file mode 100755 index 0000000000..f12c50f44a --- /dev/null +++ b/tools/stop-containers @@ -0,0 +1,18 @@ +#!/bin/bash +if [[ $(pgrep qemu) ]]; then + echo "Some qemu processes were detected." + echo "Docker will not be able to stop the nova_libvirt container with those running." + echo "Please clean them up before rerunning this script." + exit 1 +fi + +if [ -n "$1" ]; then + containers_to_stop=($(docker ps | grep -E "$1" | awk '{print $1}')) +else + containers_to_stop=$(docker ps --filter "label=kolla_version" --format "{{.Names}}" -a) +fi + +echo "Stopping containers..." +(docker stop -t 30 ${containers_to_stop} 2>&1) > /dev/null + +echo "All containers stopped!"