diff --git a/roles/apps/k8s-common b/roles/apps/k8s-common
index 1b0318421f4f812a4ebec2d4ddbcb2834658acf0..2ef9669d6d78e81c4e6de75cce239cabc99f00ad 160000
--- a/roles/apps/k8s-common
+++ b/roles/apps/k8s-common
@@ -1 +1 @@
-Subproject commit 1b0318421f4f812a4ebec2d4ddbcb2834658acf0
+Subproject commit 2ef9669d6d78e81c4e6de75cce239cabc99f00ad
diff --git a/roles/apps/k8s-elasticsearch b/roles/apps/k8s-elasticsearch
index 2de264f00738b7518647d8ba5844868d0be5feae..3d74c70a4a2d294ec86528468efa2c10ece7bd7b 160000
--- a/roles/apps/k8s-elasticsearch
+++ b/roles/apps/k8s-elasticsearch
@@ -1 +1 @@
-Subproject commit 2de264f00738b7518647d8ba5844868d0be5feae
+Subproject commit 3d74c70a4a2d294ec86528468efa2c10ece7bd7b
diff --git a/roles/apps/k8s-memcached b/roles/apps/k8s-memcached
index e550ec4c181abce0e5e58ccab81fb7f2c2756b00..563b35f3b62274e20add75684ac51ff741050975 160000
--- a/roles/apps/k8s-memcached
+++ b/roles/apps/k8s-memcached
@@ -1 +1 @@
-Subproject commit e550ec4c181abce0e5e58ccab81fb7f2c2756b00
+Subproject commit 563b35f3b62274e20add75684ac51ff741050975
diff --git a/roles/docker/tasks/configure.yml b/roles/docker/tasks/configure.yml
index 75df4d4de11c1d517235988a09864038a523dbd7..d370f4b840b2e73ce058fc2c7266cdfbdd6aa507 100644
--- a/roles/docker/tasks/configure.yml
+++ b/roles/docker/tasks/configure.yml
@@ -1,6 +1,6 @@
 ---
 - name: Write script for calico/docker bridge configuration
-  template: src=create_cbr.j2 dest=/etc/network/if-up.d/create_cbr mode=u+x
+  template: src=create_cbr.j2 dest=/etc/network/if-up.d/create_cbr mode=u+x backup=yes
   when: kube_network_plugin is defined and kube_network_plugin == "calico"
 
 - name: Configure calico/docker bridge
diff --git a/roles/docker/tasks/install.yml b/roles/docker/tasks/install.yml
index ae9c8f8eb51001f5d47d40e2bab38a81e1c61897..4880629a863f160dfb414f24363933dc2387ff0f 100644
--- a/roles/docker/tasks/install.yml
+++ b/roles/docker/tasks/install.yml
@@ -6,7 +6,7 @@
     - ca-certificates
 
 - name: Configure docker apt repository
-  template: src=docker.list.j2 dest=/etc/apt/sources.list.d/docker.list
+  template: src=docker.list.j2 dest=/etc/apt/sources.list.d/docker.list backup=yes
 
 - name: Install docker-engine
   apt: pkg={{ item }} state=present force=yes update_cache=yes
diff --git a/roles/docker/templates/docker.list.j2 b/roles/docker/templates/docker.list.j2
index 59c5b34085afd3fba074ae13c7ea1fd55bd60ee8..2b2f4da63a1e0f35d0e509880004f4b9ca79f89f 100644
--- a/roles/docker/templates/docker.list.j2
+++ b/roles/docker/templates/docker.list.j2
@@ -1 +1 @@
-deb https://apt.dockerproject.org/repo debian-{{ ansible_distribution_release }} main
+deb https://apt.dockerproject.org/repo {{ansible_distribution|lower}}-{{ ansible_distribution_release}} main
diff --git a/roles/etcd/tasks/configure.yml b/roles/etcd/tasks/configure.yml
index 97417ee971c6a4b3f6e9f5e003fb7ab12349cbbf..aca67018f67b461f99a8889d7a54e33fa169e9a6 100644
--- a/roles/etcd/tasks/configure.yml
+++ b/roles/etcd/tasks/configure.yml
@@ -6,7 +6,7 @@
   file: path=/etc/systemd/system/etcd2.service.d state=directory
 
 - name: Write etcd2 config file
-  template: src=etcd2.j2 dest=/etc/systemd/system/etcd2.service.d/10-etcd2-cluster.conf
+  template: src=etcd2.j2 dest=/etc/systemd/system/etcd2.service.d/10-etcd2-cluster.conf backup=yes
   notify:
     - reload systemd
     - restart etcd2
diff --git a/roles/etcd/tasks/install.yml b/roles/etcd/tasks/install.yml
index 462e3d917c3613dbcee945dc5433aaa569071826..b500d88edc96f1c6f080f6d74d7fb3706cf0097e 100644
--- a/roles/etcd/tasks/install.yml
+++ b/roles/etcd/tasks/install.yml
@@ -3,7 +3,7 @@
   user: name=etcd shell=/bin/nologin home=/var/lib/etcd2
 
 - name: Install etcd binaries
-  copy: 
+  copy:
      src={{ local_release_dir }}/etcd/bin/{{ item }}
      dest={{ bin_dir }}
      owner=etcd
@@ -21,4 +21,5 @@
   template:
     src: systemd-etcd2.service.j2
     dest: /lib/systemd/system/etcd2.service
+    backup: yes
   notify: restart daemons
diff --git a/roles/kubernetes/master/tasks/config.yml b/roles/kubernetes/master/tasks/config.yml
index 70c0f2d3fe542341476983903f152ef1eb1bbe9e..b678c657ddc83e8b1be98a65ea6201790eb8f9d6 100644
--- a/roles/kubernetes/master/tasks/config.yml
+++ b/roles/kubernetes/master/tasks/config.yml
@@ -18,46 +18,47 @@
     proxy_token: "{{ tokens.results[3].content|b64decode }}"
 
 - name: write the config files for api server
-  template: src=apiserver.j2 dest={{ kube_config_dir }}/apiserver
+  template: src=apiserver.j2 dest={{ kube_config_dir }}/apiserver backup=yes
   notify:
     - restart daemons
 
 - name: write config file for controller-manager
-  template: src=controller-manager.j2 dest={{ kube_config_dir }}/controller-manager
+  template: src=controller-manager.j2 dest={{ kube_config_dir }}/controller-manager backup=yes
   notify:
     - restart controller-manager
 
 - name: write the kubecfg (auth) file for controller-manager
-  template: src=controller-manager.kubeconfig.j2 dest={{ kube_config_dir }}/controller-manager.kubeconfig
+  template: src=controller-manager.kubeconfig.j2 dest={{ kube_config_dir }}/controller-manager.kubeconfig backup=yes
   notify:
     - restart controller-manager
 
 - name: write the config file for scheduler
-  template: src=scheduler.j2 dest={{ kube_config_dir }}/scheduler
+  template: src=scheduler.j2 dest={{ kube_config_dir }}/scheduler backup=yes
   notify:
     - restart scheduler
 
 - name: write the kubecfg (auth) file for scheduler
-  template: src=scheduler.kubeconfig.j2 dest={{ kube_config_dir }}/scheduler.kubeconfig
+  template: src=scheduler.kubeconfig.j2 dest={{ kube_config_dir }}/scheduler.kubeconfig backup=yes
   notify:
     - restart scheduler
 
 - name: write the kubecfg (auth) file for kubectl
-  template: src=kubectl.kubeconfig.j2 dest={{ kube_config_dir }}/kubectl.kubeconfig
+  template: src=kubectl.kubeconfig.j2 dest={{ kube_config_dir }}/kubectl.kubeconfig backup=yes
 
 - name: write the config files for proxy
-  template: src=proxy.j2 dest={{ kube_config_dir }}/proxy
+  template: src=proxy.j2 dest={{ kube_config_dir }}/proxy backup=yes
   notify:
     - restart daemons
 
 - name: write the kubecfg (auth) file for proxy
-  template: src=proxy.kubeconfig.j2 dest={{ kube_config_dir }}/proxy.kubeconfig
+  template: src=proxy.kubeconfig.j2 dest={{ kube_config_dir }}/proxy.kubeconfig backup=yes
 
 - name: populate users for basic auth in API
   lineinfile:
     dest: "{{ kube_users_dir }}/known_users.csv"
     create: yes
     line: '{{ item.value.pass }},{{ item.key }},{{ item.value.role }}'
+    backup: yes
   with_dict: "{{ kube_users }}"
   notify:
     - restart apiserver
diff --git a/roles/kubernetes/master/tasks/install.yml b/roles/kubernetes/master/tasks/install.yml
index da6c4b7e104993dc85b2fb6a1b932315b2a6485f..c4ec6baeed7d963122c622d8a5224fcc84e8c5a1 100644
--- a/roles/kubernetes/master/tasks/install.yml
+++ b/roles/kubernetes/master/tasks/install.yml
@@ -1,29 +1,29 @@
 ---
 - name: Write kube-apiserver systemd init file
-  template: src=systemd-init/kube-apiserver.service.j2 dest=/etc/systemd/system/kube-apiserver.service
+  template: src=systemd-init/kube-apiserver.service.j2 dest=/etc/systemd/system/kube-apiserver.service backup=yes
   notify: restart daemons
 
 - name: Write kube-controller-manager systemd init file
-  template: src=systemd-init/kube-controller-manager.service.j2 dest=/etc/systemd/system/kube-controller-manager.service
+  template: src=systemd-init/kube-controller-manager.service.j2 dest=/etc/systemd/system/kube-controller-manager.service backup=yes
   notify: restart daemons
 
 - name: Write kube-scheduler systemd init file
-  template: src=systemd-init/kube-scheduler.service.j2 dest=/etc/systemd/system/kube-scheduler.service
+  template: src=systemd-init/kube-scheduler.service.j2 dest=/etc/systemd/system/kube-scheduler.service backup=yes
   notify: restart daemons
 
 - name: Write kube-proxy systemd init file
-  template: src=systemd-init/kube-proxy.service.j2 dest=/etc/systemd/system/kube-proxy.service
+  template: src=systemd-init/kube-proxy.service.j2 dest=/etc/systemd/system/kube-proxy.service backup=yes
   notify: restart daemons
 
 - name: Install kubernetes binaries
-  copy: 
+  copy:
      src={{ local_release_dir }}/kubernetes/bin/{{ item }}
      dest={{ bin_dir }}
      owner=kube
      mode=u+x
   with_items:
     - kube-apiserver
-    - kube-controller-manager 
+    - kube-controller-manager
     - kube-scheduler
     - kube-proxy
     - kubectl
diff --git a/roles/kubernetes/node/tasks/config.yml b/roles/kubernetes/node/tasks/config.yml
index 3fd139e7b3dfe0dbbc8827d6bb25fe129b6d79ad..27aea7c0929c2d737eabe65147d17efad70b5ce2 100644
--- a/roles/kubernetes/node/tasks/config.yml
+++ b/roles/kubernetes/node/tasks/config.yml
@@ -18,13 +18,13 @@
   file: path=/etc/systemd/system/kubelet.service.d state=directory
 
 - name: Write kubelet config file
-  template: src=kubelet.j2 dest=/etc/systemd/system/kubelet.service.d/10-kubelet.conf
+  template: src=kubelet.j2 dest=/etc/systemd/system/kubelet.service.d/10-kubelet.conf backup=yes
   notify:
     - reload systemd
     - restart kubelet
 
 - name: write the kubecfg (auth) file for kubelet
-  template: src=kubelet.kubeconfig.j2 dest={{ kube_config_dir }}/kubelet.kubeconfig
+  template: src=kubelet.kubeconfig.j2 dest={{ kube_config_dir }}/kubelet.kubeconfig backup=yes
   notify:
     - restart kubelet
 
@@ -32,13 +32,13 @@
   file: path=/etc/systemd/system/kube-proxy.service.d state=directory
 
 - name: Write proxy config file
-  template: src=proxy.j2 dest=/etc/systemd/system/kube-proxy.service.d/10-proxy-cluster.conf
+  template: src=proxy.j2 dest=/etc/systemd/system/kube-proxy.service.d/10-proxy-cluster.conf backup=yes
   notify:
     - reload systemd
     - restart proxy
 
 - name: write the kubecfg (auth) file for kube-proxy
-  template: src=proxy.kubeconfig.j2 dest={{ kube_config_dir }}/proxy.kubeconfig
+  template: src=proxy.kubeconfig.j2 dest={{ kube_config_dir }}/proxy.kubeconfig backup=yes
   notify:
     - restart proxy
 
diff --git a/roles/kubernetes/node/tasks/install.yml b/roles/kubernetes/node/tasks/install.yml
index eaacca05905df7faf2448981760f02bcdc5f86d0..0772393ff20f51d916bb77c20e185659aab07d60 100644
--- a/roles/kubernetes/node/tasks/install.yml
+++ b/roles/kubernetes/node/tasks/install.yml
@@ -1,14 +1,14 @@
 ---
 - name: Write kube-proxy systemd init file
-  template: src=systemd-init/kube-proxy.service.j2 dest=/etc/systemd/system/kube-proxy.service
+  template: src=systemd-init/kube-proxy.service.j2 dest=/etc/systemd/system/kube-proxy.service backup=yes
   notify: restart daemons
 
 - name: Write kubelet systemd init file
-  template: src=systemd-init/kubelet.service.j2 dest=/etc/systemd/system/kubelet.service
+  template: src=systemd-init/kubelet.service.j2 dest=/etc/systemd/system/kubelet.service backup=yes
   notify: restart daemons
 
 - name: Install kubernetes binaries
-  copy: 
+  copy:
      src={{ local_release_dir }}/kubernetes/bin/{{ item }}
      dest={{ bin_dir }}
      owner=kube