diff --git a/reset.yml b/reset.yml
new file mode 100644
index 0000000000000000000000000000000000000000..afc3f6e39d9459c6c5a51037b357f90754818096
--- /dev/null
+++ b/reset.yml
@@ -0,0 +1,5 @@
+---
+
+- hosts: all
+  roles:
+    - { role: reset, tags: reset }
diff --git a/roles/reset/tasks/main.yml b/roles/reset/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..bdacbbfc48d978f17f440425dbd5c1f1c9c7b378
--- /dev/null
+++ b/roles/reset/tasks/main.yml
@@ -0,0 +1,47 @@
+---
+
+- name: reset | stop services
+  service: name={{item}} state=stopped
+  with_items:
+    - kubelet
+    - etcd
+  failed_when: false
+
+- name: reset | remove services
+  file:
+    path: "/etc/systemd/system/{{ item }}.service"
+    state: absent
+  with_items:
+    - kubelet
+    - etcd
+  register: services_removed
+
+- name: reset | systemctl daemon-reload
+  command: systemctl daemon-reload
+  when: ansible_service_mgr == "systemd" and services_removed.changed
+
+- name: reset | remove all containers
+  shell: docker ps -aq | xargs -r docker rm -fv
+
+- name: reset | gather mounted kubelet dirs
+  shell: mount | grep /var/lib/kubelet | awk '{print $3}'
+  register: mounted_dirs
+
+- name: reset | unmount kubelet dirs
+  command: umount {{item}}
+  with_items: '{{ mounted_dirs.stdout_lines | reverse }}'
+
+- name: reset | delete some files and directories
+  file: path={{ item }} state=absent
+  with_items:
+    - /etc/kubernetes/
+    - /var/lib/kubelet
+    - /var/lib/etcd
+    - /etc/ssl/etcd
+    - /var/log/calico
+    - /etc/cni
+    - /etc/nginx
+    - /etc/dnsmasq.d
+    - /etc/etcd.env
+    - /etc/calico
+    - /opt/cni