diff --git a/ansible/roles/stop/tasks/copy_tools.yml b/ansible/roles/stop/tasks/copy_tools.yml new file mode 100644 index 0000000000000000000000000000000000000000..e6a1ec62d884759384744e3e3a45387c3c907417 --- /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 0000000000000000000000000000000000000000..ab994d374e8280de200d3127636d1feed25fd2da --- /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 0000000000000000000000000000000000000000..7b679f8c43495aeebab752054c3a7281c171fd50 --- /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 0000000000000000000000000000000000000000..0ff7bf494f893d6bce6e63b9f2f6fe81731b9de1 --- /dev/null +++ b/ansible/stop.yml @@ -0,0 +1,4 @@ +--- +- hosts: all + roles: + - stop diff --git a/setup.cfg b/setup.cfg index bacc903c6819924bcb8b7d7d1c3b3e4d2195670e..610126ac0b84696a565cf0d67c6e0aab5e9efad1 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 16891734b28423663fc94515399e7edaad6bbb7f..fefd195218f98479d6f06285e3edfd623b98d4e0 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 0000000000000000000000000000000000000000..f12c50f44ac391258830f9431f852b523b7eed5d --- /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!"