diff --git a/kubespray-installer/.gitignore b/kubespray-installer/.gitignore
new file mode 100644
index 0000000..ab99130
--- /dev/null
+++ b/kubespray-installer/.gitignore
@@ -0,0 +1,2 @@
+kubespray
+*.retry
\ No newline at end of file
diff --git a/kubespray-installer/configs/.gitignore b/kubespray-installer/configs/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/kubespray-installer/configs/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/kubespray-installer/copy-ssh-keys.sh b/kubespray-installer/copy-ssh-keys.sh
new file mode 100755
index 0000000..ff1918b
--- /dev/null
+++ b/kubespray-installer/copy-ssh-keys.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+#
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+NODES=($@)
+
+for NODE in "${NODES[@]}";
+  do
+    ssh-keygen -R ${NODE}
+    ssh cord@${NODE} 'mkdir -p .ssh'
+    cat ~/.ssh/id_rsa.pub | ssh cord@${NODE} 'cat >> .ssh/authorized_keys'
+  done
diff --git a/kubespray-installer/inventories/.gitignore b/kubespray-installer/inventories/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/kubespray-installer/inventories/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/kubespray-installer/k8s-configs.yaml b/kubespray-installer/k8s-configs.yaml
new file mode 100644
index 0000000..cb8ae78
--- /dev/null
+++ b/kubespray-installer/k8s-configs.yaml
@@ -0,0 +1,67 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+- hosts: localhost
+
+  vars:
+    tryluca:
+      - one
+      - two
+      - three
+
+  tasks:
+    # Edit all.yml variable file
+
+    - name: Add default Python interpreter
+      lineinfile:
+        path: inventories/{{ deployment_name }}/group_vars/all.yml
+        line: 'ansible_python_interpreter: /usr/bin/python2.7'
+
+    - name: Add default Ansible user
+      lineinfile:
+        path: inventories/{{ deployment_name }}/group_vars/all.yml
+        line: 'ansible_user: cord'
+
+    - name: Give sudoer permissions
+      lineinfile:
+        path: inventories/{{ deployment_name }}/group_vars/all.yml
+        line: 'ansible_become: true'
+
+    # Edit k8s-cluster.yml variable file
+    - name: Set Docker DNS servers strict to false
+      lineinfile:
+        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster.yml
+        regexp: '^#\s*docker_dns_servers_strict.*$'
+        line: 'docker_dns_servers_strict: false'
+
+    - name: Set Helm enabled to true
+      lineinfile:
+        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster.yml
+        regexp: '^helm_enabled.*$'
+        line: 'helm_enabled: true'
+
+    - name: Set kubeconfig localhost to true
+      lineinfile:
+        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster.yml
+        regexp: '^#\s*kubeconfig_localhost.*$'
+        line: 'kubeconfig_localhost: true'
+
+    - name: Allow insecure registry access
+      lineinfile:
+        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster.yml
+        regexp: 'docker_options'
+        line: "docker_options: \"{{ item }} --insecure-registry={{ '{{' }} kube_service_addresses {{ '}}' }} --graph={{ '{{' }} docker_daemon_graph {{ '}}' }}  {{ '{{' }} docker_log_opts {{ '}}' }}\""
+      with_items: "{{ k8s_nodes.split(' ') | map('regex_replace', '(.*)', '--insecure-registry=\\1/32') | join(' ') }}"
diff --git a/kubespray-installer/k8s-requirements.yaml b/kubespray-installer/k8s-requirements.yaml
new file mode 100644
index 0000000..a34b68f
--- /dev/null
+++ b/kubespray-installer/k8s-requirements.yaml
@@ -0,0 +1,69 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+- hosts: all
+  gather_facts: False
+
+  tasks:
+    - name: Update apt-get
+      raw: sudo apt-get update -qq
+
+    - name: Install python 2.7
+      raw: sudo apt-get install -qq python2.7
+
+    - name: Install prerequisites for using PPA repos
+      apt:
+        name: "{{ item }}"
+        update_cache: yes
+        cache_valid_time: 3600
+      with_items:
+        - python-pycurl
+        - software-properties-common
+        - python-netaddr
+
+    - name: Add Ansible PPA
+      apt_repository:
+        repo={{ item }}
+      with_items:
+        - "{{ ansible_apt_repo | default('ppa:ansible/ansible') }}"
+      register: result
+      until: result | success
+      retries: 3
+      delay: 10
+
+    - name: Make sure Ansible is newest version
+      apt:
+        name: "ansible"
+        state: latest
+        update_cache: yes
+        cache_valid_time: 3600
+
+    - name: Enable ip forwarding
+      sysctl:
+        name: 'net.ipv4.ip_forward'
+        value: 1
+        sysctl_set: True
+        state: present
+        reload: yes
+
+    - name: Remove swapfile from /etc/fstab
+      mount:
+        name: swap
+        fstype: swap
+        state: absent
+
+    - name: Disable swap
+      command: swapoff -a
\ No newline at end of file
diff --git a/kubespray-installer/setup.sh b/kubespray-installer/setup.sh
new file mode 100755
index 0000000..61902cd
--- /dev/null
+++ b/kubespray-installer/setup.sh
@@ -0,0 +1,159 @@
+#!/usr/bin/env bash
+#
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+################################################
+#                                              #
+# Installs Kubespray on remote target machines #
+#                                              #
+################################################
+
+#
+# Installs Kubespray on remote target machines.
+#
+install_kubespray () {
+  # Cleanup Old Kubespray Installations
+  echo -e "\nCleaning Up Old Kubespray Installation" && \
+  rm -rf kubespray
+
+  # Download Kubespray
+  echo -e "\nDownloading Kubespray" && \
+  git clone https://github.com/kubernetes-incubator/kubespray.git -b v2.4.0 && \
+
+  # Generate inventory and var files
+  echo -e "\nGenerating The Inventory File" && \
+  rm -rf inventories/${DEPLOYMENT_NAME} && \
+  cp -r kubespray/inventory inventories/${DEPLOYMENT_NAME} && \
+  CONFIG_FILE=inventories/${DEPLOYMENT_NAME}/inventory.cfg python3 kubespray/contrib/inventory_builder/inventory.py ${NODES[@]} && \
+
+  # Edit inventory var files
+  NODE_LIST=`echo ${NODES[@]}`
+  ansible-playbook k8s-configs.yaml --extra-vars "deployment_name=${DEPLOYMENT_NAME} k8s_nodes='${NODE_LIST}'"
+
+  # Copy SSH keys
+  echo -e "\nCopying Public SSH Keys To Remote Machines" && \
+  source copy-ssh-keys.sh ${NODES[@]} && \
+
+  # Prepare Target Machines
+  echo -e "\nInstalling Prerequisites On Remote Machines" && \
+  ansible-playbook -i inventories/${DEPLOYMENT_NAME}/inventory.cfg k8s-requirements.yaml && \
+
+  # Install Kubespray
+  echo -e "\nInstalling Kubespray" && \
+  ansible-playbook -i inventories/${DEPLOYMENT_NAME}/inventory.cfg kubespray/cluster.yml -b -v && \
+
+  # Export the Kubespray Config Location
+  echo -e "\nLoading Kubespray Configuration" && \
+  cp kubespray/artifacts/admin.conf configs/${DEPLOYMENT_NAME}.conf
+}
+
+#
+# Exports the Kubespray Config Location
+#
+source_kubeconfig () {
+  export KUBECONFIG=${PWD}/configs/${DEPLOYMENT_NAME}.conf
+}
+
+#
+# Helm init
+#
+helm_init () {
+  echo -e "\nInitializing Helm" && \
+  source_kubeconfig $DEPLOYMENT_NAME && \
+  helm init --upgrade
+}
+
+#
+# Deploy an insecure registry
+#
+deploy_insecure_registry () {
+  echo -e "\nDeploying insecure registry" && \
+  source_kubeconfig $DEPLOYMENT_NAME && \
+  helm install stable/docker-registry --set service.nodePort=30500,service.type=NodePort -n docker-registry
+}
+
+#
+# Checks if an arbitrary pod name is given during specifc
+# operations.
+#
+check_pod_name () {
+  if [ -z $DEPLOYMENT_NAME ]
+    then
+      echo "Missing option: podname" >&2
+      echo " "
+      display_help
+      exit -1
+    fi
+}
+
+#
+# Displays the help menu.
+#
+display_help () {
+  echo "Usage: $0 {--install|--source|--help} [podname] [ip...] " >&2
+  echo " "
+  echo "   -h, --help              Display this help message."
+  echo "   -i, --install           Install Kubespray on <podname>"
+  echo "   -s, --source            Source the Kubectl config for <podname>"
+  echo " "
+  echo "   podname                 An arbitrary name representing the pod"
+  echo "   ip                      The IP address of a remote node"
+  echo " "
+  echo "Example usages:"
+  echo "   ./setup.sh -i podname 192.168.10.100 192.168.10.101 192.168.10.102"
+  echo "   ./setup.sh -i podname (detault is 10.90.0.101 10.90.0.102 10.90.0.103)"
+  echo "   source setup.sh -s podname"
+}
+
+#
+# Init
+#
+CLI_OPT=$1
+DEPLOYMENT_NAME=$2
+shift 2
+DEFAULT_NODES="10.90.0.101 10.90.0.102 10.90.0.103"
+NODES=(${@:-$DEFAULT_NODES})
+
+while :
+do
+  case $CLI_OPT in
+    -i | --install)
+        check_pod_name
+        install_kubespray $DEPLOYMENT_NAME $NODES
+        helm_init $DEPLOYMENT_NAME
+        deploy_insecure_registry $DEPLOYMENT_NAME
+        exit 0
+        ;;
+    -h | --help)
+        display_help
+        exit 0
+        ;;
+    -s | --source)
+        check_pod_name
+        source_kubeconfig $DEPLOYMENT_NAME
+        return 0
+         ;;
+    --) # End of all options
+        shift
+        break
+        ;;
+    *)
+        echo Error: Unknown option: $CLI_OPT >&2
+        echo " "
+        display_help
+        exit -1
+        ;;
+  esac
+done
