+#### Running
+After configuring the node inventory file and network configuration
+files, please run `make install` from the ICN parent directory as
+shown below:
+
+``` shell
+root@pod11-jump:# git clone "https://gerrit.akraino.org/r/icn"
+Cloning into 'icn'...
+remote: Counting objects: 69, done
+remote: Finding sources: 100% (69/69)
+remote: Total 4248 (delta 13), reused 4221 (delta 13)
+Receiving objects: 100% (4248/4248), 7.74 MiB | 21.84 MiB/s, done.
+Resolving deltas: 100% (1078/1078), done.
+root@pod11-jump:# cd icn/
+root@pod11-jump:# vim Makefile
+root@pod11-jump:# make install
+```
+
+The following steps occurs once the `make install` command is given.
+1. All the software required to run the bootstrap cluster is
+ downloaded and installed.
+2. k8s cluster to maintain the bootstrap cluster and all the servers
+ in the edge location is installed.
+3. Metal3 specific network configuration such as local DHCP server
+ networking for each edge location, Ironic networking for both
+ provisioning network and IPMI LAN network are identified and
+ created.
+4. Metal3 is launched with IPMI configuration as configured in
+ "user_config.sh" and provisions the bare metal servers using IPMI
+ LAN network. For more information refer to the [Debugging
+ Failures](#debugging-failures) section.
+5. Metal3 launch verification runs with a timeout of 60 mins by
+ checking the status of all the servers being provisioned or not.
+ 1. All servers are provisioned in parallel. For example, if your
+ deployment is having 10 servers in the edge location, all the 10
+ servers are provisioned at the same time.
+ 2. Metal3 launch verification takes care of checking all the
+ servers are provisioned, the network interfaces are up and
+ provisioned with a provider network gateway and DNS server.
+ 3. Metal3 launch verification checks the status of all servers
+ given in user_config.sh to make sure all the servers are
+ provisioned. For example, if 8 servers are provisioned and 2
+ servers are not provisioned, launch verification makes sure all
+ servers are provisioned before launch k8s clusters on those
+ servers.
+6. BPA bare metal components are invoked with the MAC address of the
+ servers provisioned by Metal3, BPA bare metal components decide the
+ cluster size and also the number of clusters required in the edge
+ location.
+7. BPA bare metal runs the containerized Kuberenetes Reference
+ Deployment (KUD) as a job for each cluster. KUD installs the k8s
+ cluster on the slice of servers and install ONAP4K8S and all other
+ default plugins such as Multus, OVN, OVN4NFV, NFD, Virtlet and
+ SRIOV.
+8. BPA REST API agent installed in the bootstrap cluster or jump
+ server, and this install rest-api, rook/ceph, MinIO as the cloud
+ storage. This provides a way for user to upload their own software,
+ container images or OS image to jump server.
+
+## Virtual Deployment Guide
+
+### Standard Deployment Overview
+![Figure 2](figure-2.png)*Figure 2: Virtual Deployment Architecture*
+
+Virtual deployment is used for the development environment using
+Metal3 virtual deployment to create VM with PXE boot. VM Ansible
+scripts the node inventory file in /opt/ironic. No setting is required
+from the user to deploy the virtual deployment.
+
+### Snapshot Deployment Overview
+No snapshot is implemented in ICN R2.
+
+### Special Requirements for Virtual Deployment
+
+#### Install Jump Server
+Jump server is required to be installed with Ubuntu 18.04. This will
+install all the VMs and install the k8s clusters. Same as bare metal
+deployment, use `make vm_install` to install virtual deployment.
+
+#### Verifying the Setup - VMs
+`make verify_all` installs two VMs with name master-0 and worker-0
+with 8GB RAM and 8 vCPUs and installs k8s cluster on the VMs using the
+ICN BPA operator and install the ICN BPA REST API verifier. BPA
+operator installs the multi-cluster KUD to bring up k8s with all
+addons and plugins.
+
+# Verifying the Setup
+ICN blueprint checks all the setup in both bare metal and VM
+deployment. Verify script will check that Metal3 provisioned the OS in
+each bare metal servers by checking with a timeout period of 60 sec
+and interval of 30. BPA operator verifier will check whether the KUD
+installation is complete by doing plain curl command to the k8s
+cluster installed in bare metal and VM setup.
+
+**Bare Metal Verifier**: Run the `make bm_verifer`, it will verify the
+bare-metal deployment.
+
+**Verifier**: Run the `make vm_verifier`, it will verify the virtual
+deployment.
+
+# Developer Guide and Troubleshooting
+For development uses the virtual deployment, it take up to 10 mins to
+bring up the virtual BMC VMs with PXE boot. Virtual deployment works
+well for the BPA operator development for Metal3 installation scripts.
+
+## Utilization of Images
+No images provided in this ICN release.
+
+## Post-deployment Configuration
+No post-deployment configuration required in this ICN release.
+
+## Debugging Failures
+* For first time installation enable KVM console in the trial or lab
+ servers using Raritan console or use Intel web BMC console.
+
+ ![Figure 3](figure-3.png)
+* Deprovision state will result in Ironic agent sleeping before next
+ heartbeat - it is not an error. It results in bare metal server
+ without OS and installed with ramdisk.
+* Deprovision in Metal3 is not straight forward - Metal3 follows
+ various stages from provisioned, deprovisioning and ready. ICN
+ blueprint take care navigating the deprovisioning states and
+ removing the BareMetalHost (BMH) custom resouce in case of cleaning.
+* Manual BMH cleaning of BMH or force cleaning of BMH resource result
+ in hang state - use `make bmh_clean` to remove the BMH state.
+* Logs of Ironic, openstack baremetal command to see the state of the
+ server.
+* Logs of baremetal operator gives failure related to images or images
+ md5sum errors.
+* It is not possible to change the state from provision to deprovision
+ or deprovision to provision without completing that state. All the
+ issues are handled in ICN scripts.
+* k8s cluster failure can be debugged by KUD Pod logs.
+
+## Reporting a Bug
+Required Linux Foundation ID to launch bug in ICN:
+https://jira.akraino.org/projects/ICN/issues
+
+# Uninstall Guide
+
+## Bare Metal deployment
+The command `make clean_all` uninstalls all the components installed by
+`make install`
+* It de-provision all the servers provisioned and removes them from
+ Ironic database.
+* Baremetal operator is deleted followed by Ironic database and
+ container.
+* Network configuration such internal DHCP server, provisioning
+ interfaces and IPMI LAN interfaces are deleted.
+* docker images built during the `make install` are deleted, such as
+ all Ironic, baremetal operator, BPA operator and KUD images.
+* KUD will reset the bootstrap cluster - k8s cluster is torn down in
+ the jump server and all the associated docker images are removed.
+* All software packages installed by `make install_all` are removed,
+ such as Ironic, openstack utility tool, docker packages and basic
+ prerequisite packages.
+
+## Virtual deployment
+The command `make vm_clean_all` uninstalls all the components for the
+virtual deployments.
+
+# Troubleshooting
+
+## Error Message Guide
+The error message is explicit, all messages are captured in log
+directory.
+
+# Maintenance
+
+## Blueprint Package Maintenance
+No packages are maintained in ICN.
+
+## Software maintenance
+Not applicable.
+
+## Hardware maintenance
+Not applicable.
+
+## BluePrint Deployment Maintenance
+Not applicable.
+
+# Frequently Asked Questions
+**How to setup IPMI?**
+
+First, make sure the IPMI tool is installed in your servers, if not
+install them using `apt install ipmitool`. Then, check for the
+ipmitool information of each servers using the command `ipmitool lan
+print 1`. If the above command doesn't show the IPMI information, then
+setup the IPMI static IP address using the following instructions:
+- Mostl easy way to set up IPMI topology in your lab setup is by
+ using IPMI tool.
+- Using IPMI tool -
+ https://www.thomas-krenn.com/en/wiki/Configuring_IPMI_under_Linux_using_ipmitool
+- IPMI information can be considered during the BIOS setting as well.
+
+**BMC web console URL is not working?**
+
+It is hard to find issues or reason. Check the ipmitool bmc info to
+find the issues, if the URL is not available.
+
+**No change in BMH state - provisioning state is for more than 40min?**
+
+Generally, Metal3 provision for bare metal takes 20 - 30 mins. Look at
+the Ironic logs and baremetal operator to look at the state of
+servers. Openstack baremetal node shows all state of the server right
+from power, storage.
+
+**Why provide network is required?**
+
+Generally, provider network DHCP servers in lab provide the router and
+DNS server details. In some lab setup DHCP server don't provide this
+information.
+
+# License
+
+```
+/*
+* Copyright 2019 Intel Corporation, Inc
+*
+* 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.
+*/
+```