diff --git a/.travis.yml b/.travis.yml
index d289fb9b1d042c42311d4b85c8baae3291e46fdb..fafe46796a28f9dd3d60e394988ab1c793452f35 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,14 +8,15 @@ addons:
     - node1
 
 env:
-  - SITE=cluster.yml
+  - SITE=cluster.yml ANSIBLE_VERSION=2.0.0
+  - SITE=cluster.yml ANSIBLE_VERSION=1.9.4
 
 before_install:
   - sudo apt-get update -qq
 
 install:
   # Install Ansible.
-  - sudo -H pip install ansible
+  - sudo -H pip install ansible==${ANSIBLE_VERSION}
   - sudo -H pip install netaddr
 
 cache:
diff --git a/cluster.yml b/cluster.yml
index 3724554aa99d96f23138a01ed5e508247284881d..d68bf8ab3d6f71fecb23bc75dc4f6fddb7dfb499 100644
--- a/cluster.yml
+++ b/cluster.yml
@@ -1,6 +1,5 @@
 ---
 - hosts: downloader
-  sudo: no
   roles:
     - { role: download, tags: download }
 
diff --git a/roles/dnsmasq/tasks/main.yml b/roles/dnsmasq/tasks/main.yml
index 73caa4f95149840675d11657f8c5e1881cd20bf5..df5e59a0036fffdf778f7004aa573fb48e5caf79 100644
--- a/roles/dnsmasq/tasks/main.yml
+++ b/roles/dnsmasq/tasks/main.yml
@@ -59,12 +59,8 @@
 
 - name: target resolv.conf file
   set_fact:
-    resolvconffile: >
-      {%- if resolvconf.stat.exists == True -%}
-      /etc/resolvconf/resolv.conf.d/head
-      {%- else -%}
-      /etc/resolv.conf
-      {%- endif -%}
+    resolvconffile: >-
+      {%- if resolvconf.stat.exists == True -%}/etc/resolvconf/resolv.conf.d/head{%- else -%}/etc/resolv.conf{%- endif -%}
 
 - name: Add search resolv.conf
   lineinfile:
diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml
index 4f95be0db3ab16b683fad8e98a8fa312ccfef79f..bf268cf934d28e4b51a4ec9fedf4cae9a533e03b 100644
--- a/roles/docker/tasks/main.yml
+++ b/roles/docker/tasks/main.yml
@@ -22,25 +22,36 @@
 
 - name: ensure docker requirements packages are installed
   action: "{{ docker_package_info.pkg_mgr }}"
-  args: docker_package_info.args
+  args:
+    name: "{{item}}"
+    state: latest
+    update_cache: yes
   with_items: docker_package_info.pre_pkgs
   when: docker_package_info.pre_pkgs|length > 0
 
 - name: ensure docker repository public key is installed
   action: "{{ docker_repo_key_info.pkg_key }}"
-  args: docker_repo_key_info.args
+  args:
+    id: "{{item}}"
+    keyserver: "{{docker_repo_key_info.keyserver}}"
+    state: present
   with_items: docker_repo_key_info.repo_keys
-  when: docker_repo_key_info.repo_keys|length > 0
 
 - name: ensure docker repository is enabled
   action: "{{ docker_repo_info.pkg_repo }}"
-  args: docker_repo_info.args
+  args:
+    repo: "{{item}}"
+    update_cache: yes
+    state: present
   with_items: docker_repo_info.repos
   when: docker_repo_info.repos|length > 0
 
 - name: ensure docker packages are installed
   action: "{{ docker_package_info.pkg_mgr }}"
-  args: docker_package_info.args
+  args:
+    pkg: "{{item}}"
+    update_cache: yes
+    state: latest
   with_items: docker_package_info.pkgs
   when: docker_package_info.pkgs|length > 0
 
diff --git a/roles/docker/vars/centos-6.yml b/roles/docker/vars/centos-6.yml
index e6937d5958ed4d7a9e976ff3d0dd315a2de23167..a95320f449b29dd4391be0ddbd9af6e824b378d6 100644
--- a/roles/docker/vars/centos-6.yml
+++ b/roles/docker/vars/centos-6.yml
@@ -2,10 +2,6 @@ docker_kernel_min_version: '2.6.32-431'
 
 docker_package_info:
   pkg_mgr: yum
-  args:
-      name: "{{ item }}"
-      state: latest
-      update_cache: yes
   pre_pkgs:
     - epel-release
     - curl
@@ -15,10 +11,8 @@ docker_package_info:
 
 docker_repo_key_info:
   pkg_key: ''
-  args: {}
   repo_keys: []
 
 docker_repo_info:
   pkg_repo: ''
-  args: {}
   repos: []
diff --git a/roles/docker/vars/debian.yml b/roles/docker/vars/debian.yml
index 37cf3e02151d41a9a8d18c38104192194cb853fa..6140f47d32144aafac87a913b23e29ce5fb1d61e 100644
--- a/roles/docker/vars/debian.yml
+++ b/roles/docker/vars/debian.yml
@@ -2,12 +2,7 @@ docker_kernel_min_version: '3.2'
 
 docker_package_info:
   pkg_mgr: apt
-  args:
-    pkg: "{{ item }}"
-    update_cache: yes
-    cache_valid_time: 600
-    state: latest
-  pre_pkgs: 
+  pre_pkgs:
     - apt-transport-https
     - curl
     - software-properties-common
@@ -16,21 +11,14 @@ docker_package_info:
 
 docker_repo_key_info:
   pkg_key: apt_key
-  args:
-    id: "{{ item }}"
-    keyserver: hkp://p80.pool.sks-keyservers.net:80
-    state: present
+  keyserver: hkp://p80.pool.sks-keyservers.net:80
   repo_keys:
-    - 58118E89F3A912897C070ADBF76221572C52609D 
+    - 58118E89F3A912897C070ADBF76221572C52609D
 
 docker_repo_info:
   pkg_repo: apt_repository
-  args:
-    repo: "{{ item }}"
-    update_cache: yes
-    state: present
   repos:
     - >
-       deb https://apt.dockerproject.org/repo 
+       deb https://apt.dockerproject.org/repo
        {{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}
        main
diff --git a/roles/docker/vars/fedora-20.yml b/roles/docker/vars/fedora-20.yml
index 94e51ce2764a4da36578672e1f8b1376edd4a5b0..1c89e4b9569bd1dcd972619ec4b14daa9028a588 100644
--- a/roles/docker/vars/fedora-20.yml
+++ b/roles/docker/vars/fedora-20.yml
@@ -2,21 +2,15 @@ docker_kernel_min_version: '0'
 
 docker_package_info:
   pkg_mgr: yum
-  args:
-      name: "{{ item }}"
-      state: latest
-      update_cache: yes
-  pre_pkgs: 
+  pre_pkgs:
     - curl
   pkgs:
     - docker-io
 
 docker_repo_key_info:
   pkg_key: ''
-  args: {}
   repo_keys: []
 
 docker_repo_info:
   pkg_repo: ''
-  args: {}
   repos: []
diff --git a/roles/docker/vars/redhat.yml b/roles/docker/vars/redhat.yml
index 6c251ccec0795628331755db803b992e9aaee605..9d0dd2c49671f10fb42a169c20de3d0e1102f088 100644
--- a/roles/docker/vars/redhat.yml
+++ b/roles/docker/vars/redhat.yml
@@ -2,21 +2,15 @@ docker_kernel_min_version: '0'
 
 docker_package_info:
   pkg_mgr: yum
-  args:
-      name: "{{ item }}"
-      state: latest
-      update_cache: yes
-  pre_pkgs: 
+  pre_pkgs:
     - curl
   pkgs:
     - docker
 
 docker_repo_key_info:
   pkg_key: ''
-  args: {}
   repo_keys: []
 
 docker_repo_info:
   pkg_repo: ''
-  args: {}
   repos: []
diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml
index 728c6bb19c01151703574491ed94b6a62b6f41d0..cbdf555e70e7a797c804316be668f92fd44e8068 100644
--- a/roles/kubernetes/master/tasks/main.yml
+++ b/roles/kubernetes/master/tasks/main.yml
@@ -60,9 +60,8 @@
   uri:
     url: http://127.0.0.1:{{ kube_apiserver_insecure_port }}/api/v1/namespaces
     method: POST
-    body: '{"apiVersion":"v1","kind":"Namespace","metadata":{"name":"kube-system"}}'
+    body: "{{namespace_kubesystem|to_json}}"
     status_code: 201,409
-    body_format: json
   run_once: yes
   when: inventory_hostname == groups['kube-master'][0]
 
diff --git a/roles/kubernetes/master/vars/main.yml b/roles/kubernetes/master/vars/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2eeb525fe6ff8fb7a7f20ebf80adf2d559a5d4ff
--- /dev/null
+++ b/roles/kubernetes/master/vars/main.yml
@@ -0,0 +1,6 @@
+---
+namespace_kubesystem:
+  apiVersion: v1
+  kind: Namespace
+  metadata:
+    name: kube-system
\ No newline at end of file