diff --git a/roles/docker/tasks/configure.yml b/roles/docker/tasks/configure.yml
index bf4e6df7e6a6906b0f237243d85a5ccd03172957..07506dec186c60b9764edb2343d4beff94a4340b 100644
--- a/roles/docker/tasks/configure.yml
+++ b/roles/docker/tasks/configure.yml
@@ -4,7 +4,7 @@
   when: kube_network_plugin is defined and kube_network_plugin == "calico"
 
 - name: Configure calico/docker bridge
-  shell: /etc/network/if-up.d/create_cbr
+  command: /etc/network/if-up.d/create_cbr
   when: kube_network_plugin is defined and kube_network_plugin == "calico"
 
 - name: Configure docker to use cbr0 bridge
diff --git a/roles/docker/tasks/install.yml b/roles/docker/tasks/install.yml
index 9e551b5044008b40b7a4acbdae932a161d52d9e6..ae9c8f8eb51001f5d47d40e2bab38a81e1c61897 100644
--- a/roles/docker/tasks/install.yml
+++ b/roles/docker/tasks/install.yml
@@ -16,9 +16,9 @@
     - docker-engine=1.8.3-0~{{ ansible_distribution_release }}
 
 - name: Copy default docker configuration
-  template: src=default-docker.j2 dest=/etc/default/docker
+  template: src=default-docker.j2 dest=/etc/default/docker backup=yes
   notify: restart docker
 
 - name: Copy Docker systemd unit file
-  copy: src=systemd-docker.service dest=/lib/systemd/system/docker.service
+  copy: src=systemd-docker.service dest=/lib/systemd/system/docker.service backup=yes
   notify: restart docker
diff --git a/roles/kubernetes/common/tasks/gen_certs.yml b/roles/kubernetes/common/tasks/gen_certs.yml
index edc0897a54d06f37bf68ab562ca331de567d33bc..74fd4458c991dfd5c51ce09984daff6c5748f087 100644
--- a/roles/kubernetes/common/tasks/gen_certs.yml
+++ b/roles/kubernetes/common/tasks/gen_certs.yml
@@ -19,7 +19,7 @@
   args:
     creates: "{{ kube_cert_dir }}/server.crt"
   environment:
-    MASTER_IP: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}"
+    MASTER_IP: "{{ hostvars[inventory_hostname]['ip'] | default(hostvars[inventory_hostname]['ansible_default_ipv4']['address']) }}"
     MASTER_NAME: "{{ inventory_hostname }}"
     DNS_DOMAIN: "{{ dns_domain }}"
     SERVICE_CLUSTER_IP_RANGE: "{{ kube_service_addresses }}"
diff --git a/roles/kubernetes/master/templates/apiserver.j2 b/roles/kubernetes/master/templates/apiserver.j2
index 3ec15970c39f345ff26b482a6f5398e1bc215482..4a69b1cc9e64246295b3a8ae625d369f2c4bb2ed 100644
--- a/roles/kubernetes/master/templates/apiserver.j2
+++ b/roles/kubernetes/master/templates/apiserver.j2
@@ -8,7 +8,7 @@
 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
 
 # The port on the local server to listen on.
-KUBE_API_PORT="--insecure-port=8080 --secure-port={{ kube_master_port }}"
+KUBE_API_PORT="--insecure-port={{kube_master_insecure_port}} --secure-port={{ kube_master_port }}"
 
 # KUBELET_PORT="--kubelet_port=10250"
 
diff --git a/roles/kubernetes/master/templates/proxy.kubeconfig.j2 b/roles/kubernetes/master/templates/proxy.kubeconfig.j2
index 3618c4b7c6ea24c702bfae5ccbaac840304b827e..5e35eb5d2566e2feefb9c6c6c7c6ba18dd4676ac 100644
--- a/roles/kubernetes/master/templates/proxy.kubeconfig.j2
+++ b/roles/kubernetes/master/templates/proxy.kubeconfig.j2
@@ -10,7 +10,7 @@ contexts:
 clusters:
 - cluster:
     certificate-authority: {{ kube_cert_dir }}/ca.crt
-    server: http://{{ groups['kube-master'][0] }}:8080
+    server: http://{{ groups['kube-master'][0] }}:{{kube_master_insecure_port}}
   name: {{ cluster_name }}
 users:
 - name: proxy
diff --git a/roles/kubernetes/node/templates/kubelet.kubeconfig.j2 b/roles/kubernetes/node/templates/kubelet.kubeconfig.j2
index 79cb17bd5338f78f1f6ba144ae17419ad17cf9a1..28eda1e0305208084bd79d993d8ac8629355becb 100644
--- a/roles/kubernetes/node/templates/kubelet.kubeconfig.j2
+++ b/roles/kubernetes/node/templates/kubelet.kubeconfig.j2
@@ -5,7 +5,7 @@ preferences: {}
 clusters:
 - cluster:
     certificate-authority: {{ kube_cert_dir }}/ca.crt
-    server: https://{{ groups['kube-master'][0] }}:443
+    server: https://{{ groups['kube-master'][0] }}:{{kube_master_port}}
   name: {{ cluster_name }}
 contexts:
 - context:
diff --git a/roles/network_plugin/templates/calico/network-environment.j2 b/roles/network_plugin/templates/calico/network-environment.j2
index d03013f1a70d9c7ff189469a493f08a0919d7d1f..2407f1ecbf5bc89a1e928eaecc20782ee84e7898 100755
--- a/roles/network_plugin/templates/calico/network-environment.j2
+++ b/roles/network_plugin/templates/calico/network-environment.j2
@@ -1,7 +1,7 @@
 #! /usr/bin/bash
 # This node's IPv4 address
 CALICO_IPAM=true
-DEFAULT_IPV4={{ ansible_default_ipv4.address }}
+DEFAULT_IPV4={{ip | default(ansible_default_ipv4.address) }}
 
 {% if inventory_hostname in groups['kube-node'] %}
 # The kubernetes master IP
@@ -12,7 +12,7 @@ KUBERNETES_MASTER={{ groups['kube-master'][0] }}
 ETCD_AUTHORITY={{ groups['kube-master'][0] }}:4001
 
 # The kubernetes-apiserver location - used by the calico plugin
-KUBE_API_ROOT=http://{{ groups['kube-master'][0] }}:8080/api/v1/
+KUBE_API_ROOT=http://{{ groups['kube-master'][0] }}:{{kube_master_insecure_port}}/api/v1/
 
 # Location of the calicoctl binary - used by the calico plugin
 CALICOCTL_PATH="{{ bin_dir }}/calicoctl"