diff --git a/ansible/cleanup.yml b/ansible/cleanup.yml
new file mode 100644
index 0000000000000000000000000000000000000000..14d5668cfb9c15c905d3c85eec455bb099ab8ecb
--- /dev/null
+++ b/ansible/cleanup.yml
@@ -0,0 +1,4 @@
+---
+- hosts: all
+  roles:
+    - cleanup
diff --git a/ansible/roles/cleanup/tasks/cleanup_containers.yml b/ansible/roles/cleanup/tasks/cleanup_containers.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1de152267829f98538b0606e92bf41e019bb9d2c
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/cleanup_containers.yml
@@ -0,0 +1,3 @@
+---
+- name: Cleaning all containers and volumes
+  command: /tmp/kolla-cleanup/tools/cleanup-containers
diff --git a/ansible/roles/cleanup/tasks/cleanup_host.yml b/ansible/roles/cleanup/tasks/cleanup_host.yml
new file mode 100644
index 0000000000000000000000000000000000000000..36a65fb79180f7312608b8ad18c7e700a42906c4
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/cleanup_host.yml
@@ -0,0 +1,6 @@
+---
+- name: Cleaning host
+  command: /tmp/kolla-cleanup/tools/cleanup-host
+
+- name: Removing kolla-cleanup folder
+  command: rm -rf /tmp/kolla-cleanup
diff --git a/ansible/roles/cleanup/tasks/copy_tools.yml b/ansible/roles/cleanup/tasks/copy_tools.yml
new file mode 100644
index 0000000000000000000000000000000000000000..737233c8e7318ef4bc2a74022fa5d1172e8996fe
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/copy_tools.yml
@@ -0,0 +1,23 @@
+---
+- name: Creating /kolla-cleanup/tools directory on node
+  file:
+    state: directory
+    path: /tmp/kolla-cleanup/tools
+
+- name: Copying validate-docker-execute.sh file
+  copy:
+    src: ../tools/validate-docker-execute.sh
+    dest: /tmp/kolla-cleanup/tools
+    mode: 0755
+
+- name: Copying cleanup-containers file
+  copy:
+    src: ../tools/cleanup-containers
+    dest: /tmp/kolla-cleanup/tools
+    mode: 0755
+
+- name: Copying cleanup-host file
+  copy:
+    src: ../tools/cleanup-host
+    dest: /tmp/kolla-cleanup/tools
+    mode: 0755
diff --git a/ansible/roles/cleanup/tasks/main.yml b/ansible/roles/cleanup/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d7f8b1e1e20c9b98982ada97533ef951f71ed4a2
--- /dev/null
+++ b/ansible/roles/cleanup/tasks/main.yml
@@ -0,0 +1,6 @@
+---
+- include: copy_tools.yml
+
+- include: cleanup_containers.yml
+
+- include: cleanup_host.yml
diff --git a/setup.cfg b/setup.cfg
index 59441c59e8353c310377f19f15ca3dc9375b3ecf..6d5664e470c3b5ef83043fe9fe303a371cb6fca3 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -22,6 +22,9 @@ packages =
 data_files =
     share/kolla/ansible = ansible/*
     share/kolla/docker = docker/*
+    share/kolla/tools = tools/validate-docker-execute.sh
+    share/kolla/tools = tools/cleanup-containers
+    share/kolla/tools = tools/cleanup-host
     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 10403b344e34f884a723f3de4abf5d3a15f0f1b2..365485e33df6124665bb616fe3a5c7ce729ffe96 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -41,6 +41,7 @@ Commands:
     prechecks    Do pre-deployment checks for hosts
     mariadb_recovery    Recover a completely stopped mariadb cluster
     deploy       Deploy and start all kolla containers
+    cleanup      Cleanup containers, volumes and host
     post-deploy  Do post deploy on deploy node
     pull         Pull all images for containers (only pulls, no running container changes)
     reconfigure  Reconfigure OpenStack service
@@ -132,6 +133,10 @@ case "$1" in
         EXTRA_OPTS="$EXTRA_OPTS -e action=deploy"
         PLAYBOOK="${BASEDIR}/ansible/mariadb_recovery.yml"
         ;;
+(cleanup)
+        ACTION="Cleanup containers, volumes and host"
+        PLAYBOOK="${BASEDIR}/ansible/cleanup.yml"
+        ;;
 (deploy)
         ACTION="Deploying Playbooks"
         EXTRA_OPTS="$EXTRA_OPTS -e action=deploy"