#!/usr/bin/env bash # Copyright 2014, Rackspace US, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ## Shell Opts ---------------------------------------------------------------- set -e -u ## Library Check ------------------------------------------------------------- info_block "Checking for required libraries." 2> /dev/null || source $(dirname ${0})/scripts-library.sh ## Confirmation ------------------------------------------------------------- cat < /tmp/destroy_play.yml < lvs | awk '/lxc/ || /cinder/ || /swift/ {print \$1","\$2}' register: lvstorage failed_when: false - name: Remove all logical volumes lvol: vg: "{{ item.split(',')[1] }}" lv: "{{ item.split(',')[0] }}" state: "absent" force: "yes" with_items: lvstorage.stdout_lines failed_when: false when: lvstorage.stdout - name: Get all dm storage devices shell: > dmsetup info | awk '/lxc/ || /cinder/ || /swift/ {print \$2}' register: dmstorage failed_when: false - name: Remove dm storage entries command: dmsetup remove "{{ item }}" with_items: dmstorage.stdout_lines when: dmstorage.stdout - name: Get all loopback storage devices shell: > losetup -a | awk -F':' '{print \$1}' register: lostorage failed_when: false - name: Unmount loopback storage shell: | umount {{ item }} || true losetup -d {{ item }} || true with_items: lostorage.stdout_lines when: lostorage.stdout failed_when: false - name: Remove known AIO mount points (fstab) lineinfile: dest: "/etc/fstab" state: "absent" regexp: "{{ item }}.*.img" with_items: aio_mount_points - name: Remove known AIO mount points (rc.local) lineinfile: dest: "/etc/rc.local" state: "absent" regexp: "{{ item }}.*.img" with_items: aio_mount_points - name: Stop all swap command: "swapoff -a" failed_when: false - name: Remove known files and folders. shell: | rm -rf {{ item }} failed_when: false with_items: remove_files vars: aio_mount_points: - cinder - swap - swift shut_interfaces_down: - lxcbr0 remove_files: - /etc/haproxy - /etc/nova - /etc/network/interfaces.d/aio_interfaces.cfg - /etc/neutron - /etc/openstack_deploy/ansible_facts - /etc/swift - /openstack - /opt/*.img - /opt/*lxc* - /opt/*neutron* - /opt/*nova* - /opt/*pip* - /opt/*repo* - /root/.pip - /var/lib/neutron - /var/lib/nova - /var/lib/mongodb - /var/log/mongodb - /var/log/swift - /var/log/neutron - /var/log/nova remove_packages: - haproxy - hatop - liblxc1 - libvirt0 - libvirt-bin - lxc - lxc-dev - vim-haproxy - mongodb-server - mongodb-clients - python-pymongo remove_pip_packages: - cinder - eventlet - euca2ools - glance - heat - keystone - kombu - lxc - lxml - mysql - neutron - nova - oslo - Paste - pbr - pymongo - repoze - six - sql - swift - turbolift - warlock EOF # Destroy all of the known stuff. if [ "${ANSIBLE_DESTROY_HOSTS}" == "localhost" ];then echo -e '[all]\nlocalhost ansible_connection=local' | tee /tmp/localhost openstack-ansible -i /tmp/localhost /tmp/destroy_play.yml --forks ${FORKS} || true # Since this is an AIO, just remove it from the local hosts file sed -i '/_container-/d' /etc/hosts else openstack-ansible lxc-containers-destroy.yml --forks ${FORKS} || true openstack-ansible /tmp/destroy_play.yml --forks ${FORKS} || true # Remove containers from /etc/hosts on physical hosts ansible hosts -m shell -a "sed -i '/_container-/d' /etc/hosts" fi popd # Remove the temp destruction play rm /tmp/destroy_play.yml &>/dev/null || true rm /tmp/localhost &>/dev/null || true # Final message get_instance_info info_block "* NOTICE *" echo -e "The system has been torn down." echo -e "Make sure you update and/or review the file '/etc/fstab'." if [ ! -z "${KNOWN_HOSTS}" ];then echo -e "The following hosts has been touched: \"${KNOWN_HOSTS}\"" fi echo -e "Entries may need to be updated."