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
