--- /dev/null
+.. Copyright 2018 Intel Corporation.
+   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.
+
+***********************
+Bare-Metal Provisioning
+***********************
+
+The Kubernetes Reference Deployment, aka KRD, has been designed to be consumed
+by Virtual Machines as well as Bare-Metal servers. The *vagrant/aio.sh*
+script contains the bash instructions for provisioning an All-in-One Kubernetes
+deployment in a Bare-Metal server. This document lists the Hardware & Software
+requirements and walkthrough the instructions that *vagrant/aio.sh* contains.
+
+Hardware Requirements
+#####################
+
++-----------+--------+
+| Concept   | Amount |
++===========+========+
+| CPUs      | 8      |
++-----------+--------+
+| Memory    | 32GB   |
++-----------+--------+
+| Hard Disk | 150GB  |
++-----------+--------+
+
+Software Requirements
+#####################
+
+- Ubuntu Server 16.04 LTS
+
+vagrant/aio.sh
+##############
+
+This bash script provides an automated process for deploying an All-in-One
+Kubernetes cluster. Given that the ansible inventory file created by this
+script doesn't specify any information about user and password, it's necessary
+to execute this script as root user.
+
+The following two instructions start the provisioning process.
+
+.. code-block:: bash
+
+    $ sudo su
+    # wget -O - https://git.onap.org/multicloud/k8s/plain/vagrant/aio.sh | bash
+
+In overall, this script can be summarized in three general phases:
+
+1. Cloning and configuring the KRD project.
+2. Enabiling Nested-Virtualization.
+3. Deploying KRD services.
+
+**Cloning and configuring the KRD project**
+
+KRD requires multiple files(bash scripts and ansible playbooks) to operate.
+Therefore, it's necessary to clone the *ONAP multicloud/k8s* project to get
+access to the *vagrant* folder.
+
+.. code-block:: bash
+
+    git clone https://git.onap.org/multicloud/k8s/
+
+Ansible works agains multiple systems, the way for selecting them is through the
+usage of the inventory. The inventory file is a static source for determining the
+target servers used for the execution of ansible tasks. The *aio.sh* script creates
+an inventory file for addressing those tasks to localhost.
+
+.. code-block:: bash
+
+    cat <<EOL > inventory/hosts.ini
+    [all]
+    localhost
+
+    [kube-master]
+    localhost
+
+    [kube-node]
+    localhost
+
+    [etcd]
+    localhost
+
+    [ovn-central]
+    localhost
+
+    [ovn-controller]
+    localhost
+
+    [virtlet]
+    localhost
+
+    [k8s-cluster:children]
+    kube-node
+    kube-master
+    EOL
+
+KRD consumes kubespray_ for provisioning a Kubernetes base deployment. As part
+of the deployment process, this tool downloads and configures *kubectl* binary.
+This action conflicts with *andrewrothstein.kubectl* ansible role. Therefore is
+necessary to remove those instructions from all the ansible playbooks.
+
+.. _kubespray: https://github.com/kubernetes-incubator/kubespray
+
+.. code-block:: bash
+
+    # sed -i '/andrewrothstein.kubectl/d' playbooks/configure-*.ymlb
+
+Ansible uses SSH protocol for executing remote instructions. The following
+instructions create and register ssh keys which avoid the usage of passwords.
+
+.. code-block:: bash
+
+    # echo -e "\n\n\n" | ssh-keygen -t rsa -N ""
+    # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
+    # chmod og-wx ~/.ssh/authorized_keys
+
+**Enabling Nested-Virtualization**
+
+KRD installs Virtlet_ Kubernetes CRI for running Virtual Machine workloads.
+Nested-virtualization gives the ability of running a Virtual Machine within
+another. The *node.sh* bash script contains the instructions for enabling
+Nested-Virtualization.
+
+.. _Virtlet : https://github.com/Mirantis/virtlet
+
+.. code-block:: bash
+
+    # ./node.sh
+
+**Deploying KRD services**
+
+Finally, the KRD provisioning process can be started through the use of
+*installer.sh* bash script. The output of this script is collected in the
+*krd_installer.log* file for future reference.
+
+.. code-block:: bash
+
+    # ./installer.sh | tee krd_installer.log
+
+.. image:: ./img/installer_workflow.png
 
--- /dev/null
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+if [[ $(whoami) != 'root' ]];then
+    echo "This bash script must be executed as root user"
+    exit 1
+fi
+
+echo "Cloning and configuring KRD project..."
+git clone https://git.onap.org/multicloud/k8s/
+cd k8s/vagrant/
+cat <<EOL > inventory/hosts.ini
+[all]
+localhost
+
+[kube-master]
+localhost
+
+[kube-node]
+localhost
+
+[etcd]
+localhost
+
+[ovn-central]
+localhost
+
+[ovn-controller]
+localhost
+
+[virtlet]
+localhost
+
+[k8s-cluster:children]
+kube-node
+kube-master
+EOL
+sed -i '/andrewrothstein.kubectl/d' playbooks/configure-*.yml
+echo -e "\n\n\n" | ssh-keygen -t rsa -N ""
+cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
+chmod og-wx ~/.ssh/authorized_keys
+
+echo "Enabling nested-virtualization"
+./node.sh
+
+echo "Deploying KRD project"
+./installer.sh | tee krd_installer.log
 
     pushd $GOPATH/src/k8-plugin-multicloud/deployments
     ./build.sh
 
-    if [[ "${testing_enabled}" = "true" ]]; then
+    if [[ "${testing_enabled}" == "true" ]]; then
         docker-compose up -d
         pushd $krd_tests
         for functional_test in plugin plugin_edgex; do
     echo "Admin password: secret" >> $k8s_info_file
 }
 
+if ! sudo -n "true"; then
+    echo ""
+    echo "passwordless sudo is needed for '$(id -nu)' user."
+    echo "Please fix your /etc/sudoers file. You likely want an"
+    echo "entry like the following one..."
+    echo ""
+    echo "$(id -nu) ALL=(ALL) NOPASSWD: ALL"
+    exit 1
+fi
+
 if [[ -n "${KRD_DEBUG}" ]]; then
     set -o xtrace
     verbose="-vvv"
 krd_playbooks=$krd_folder/playbooks
 krd_tests=$krd_folder/tests
 k8s_info_file=$krd_folder/k8s_info.log
-testing_enabled=${KRD_ENABLE_TESTS:-true}
+testing_enabled=${KRD_ENABLE_TESTS:-false}
 
 mkdir -p $log_folder
 mkdir -p /opt/csar
 apt-get update
 install_k8s
 install_addons
-if [[ "${KRD_PLUGIN_ENABLED:-true}" ]]; then
+if [[ "${KRD_PLUGIN_ENABLED:-false}" ]]; then
     install_plugin
 fi
 _print_kubernetes_info