Bring up a single-node POD using the Vagrant box
Change-Id: I95debd4d28bbc9703c50245d548a45cb51fb1956
diff --git a/INSTALL_SINGLE_NODE.md b/INSTALL_SINGLE_NODE.md
new file mode 100644
index 0000000..0b6ce26
--- /dev/null
+++ b/INSTALL_SINGLE_NODE.md
@@ -0,0 +1,106 @@
+# Installing a CORD POD on a Single Physical Host
+[*This description is for bringing up a CORD POD on virtual machines on a single physical host. The purpose of this solution is to enable those interested in understanding how CORD works to examine and interact with a running CORD environment.*]
+
+This tutorial walks you through the steps to bring up a CORD "POD" on a single server using multiple virtual machines.
+
+## What you need (Prerequisites)
+You will need a build machine (can be your developer laptop) and a target server.
+
+Build host:
+* Mac OS X, Linux, or Windows with a 64-bit OS
+* [`git`](https://git-scm.com/) (2.5.4 or later)
+* [`Vagrant`](https://www.vagrantup.com/) (1.8.1 or later)
+* Access to the Internet
+* SSH access to the target server
+
+Target server:
+* Fresh install of Ubuntu 14.04 LTS with latest updates
+* Minimum 12 CPU cores, 48GB RAM, 1TB disk
+* Access to the Internet
+* Account used to SSH from build host has password-less *sudo* capability
+
+### Running on CloudLab (optional)
+If you do not have a target server available, you can borrow one on
+[CloudLab](https://www.cloudlab.us). Sign up for an account using your organization's
+email address and choose "Join Existing Project"; for "Project Name" enter `cord-testdrive`.
+
+[*Note: CloudLab is supporting CORD as a courtesy. It is expected that you will
+not use CloudLab resources for purposes other than evaluating CORD. If, after a
+week or two, you wish to continue using CloudLab to experiment with or develop CORD,
+then you must apply for your own separate CloudLab project.*]
+
+Once your account is approved, start an experiment using the `OnePC-Ubuntu14.04.4` profile
+on either the Wisconsin or Clemson cluster. This will provide you with a target server
+meeting the above requirements temporarily.
+
+Refer to the [CloudLab documentation](https://docs.cloudlab.us) for more information.
+
+## Bring up the developer environment
+On the build host, clone the
+[`platform-install`](https://gerrit.opencord.org/platform-install) repository
+anonymously and switch into its top directory:
+
+```
+git clone https://gerrit.opencord.org/platform-install
+cd platform-install
+```
+
+Bring up the development Vagrant box. This will take a few minutes, depending on your
+connection speed:
+
+```
+vagrant up
+```
+
+Login to the Vagrant box:
+
+```
+vagrant ssh
+```
+
+Switch to the `platform-install` directory.
+
+```
+cd /platform-install
+```
+
+## Prepare the configuration file
+
+Edit the configuration file `config/default.yml`. Add the IP address of your target
+server as well as the username / password for accessing the server.
+
+If your target server is a CloudLab machine, uncomment the following two lines in the
+configuration file:
+
+```
+#extraVars:
+# - 'on_cloudlab=True'
+```
+
+## Deploy the single-node CORD POD on the target server
+
+Deploy the CORD software to the the target server and configure it to form a running POD.
+
+```
+./gradlew deploySingle
+```
+> *What this does:*
+>
+> This command uses an Ansible playbook (cord-single-playbook.yml) to install
+> OpenStack services, ONOS, and XOS in VMs on the target server. It also brings up
+> a compute node as a VM.
+>
+> (You *could* also run the above Ansible playbook directly, but Gradle is the
+> top-level build tool of CORD and so we use it here for consistency.)
+
+Note that this step usually takes *at least an hour* to complete. Be patient!
+
+Once the above step completes, you can log into XOS as follows:
+
+* URL: `http://<target-server>/`
+* Username: `padmin@vicci.org`
+* Password: `letmein`
+
+[*STILL TO DO*]:
+* Port forwarding for XOS login as described above
+* Add pointer to where to go next. At this point the services are all in place, but the vSG has not been created yet.
diff --git a/config/default.yml b/config/default.yml
index 0be591e..68fe747 100644
--- a/config/default.yml
+++ b/config/default.yml
@@ -1,47 +1,15 @@
-# Deployment configuration for VirtualBox based head node.
-#
-# This deployment configuration can be utilized with the head node created
-# via `vargrant up headnode` from the gerrit.opencord.org/maas repository.
+# Deployment configuration for a single-node physical hardware POD
---
seedServer:
- ip: '10.100.198.201'
- # User name and password used by Ansible to connect to the host for remote
- # provisioning
- user: 'vagrant'
- password: 'vagrant'
+ # Put the IP of your target server here
+ ip: '1.2.3.4'
- # Specifies tasks within the head node provisioning not to execute, including:
- #
- # switch_support - don't download the switch ONL images as there are no
- # switches in this configuration
- # interface_config - don't update the network configuration of the headnode
- # as it is configured by vagrant to the proper settings
- skipTags:
- - 'switch_support'
- - 'interface_config'
+ # User name and password used by Ansible to connect to the target server for remote
+ # provisioning. You can also run ssh-agent to allow for password-less SSH login.
+ user: 'myuser'
+ password: 'cord_test'
- management_ip: '10.1.0.1/24'
- management_iface: 'eth2'
- external_iface: 'eth0'
- management_network: '10.1.0.0/24'
-
- # Specifies the extra settings required for this configuration
- #
- # virtualbox_support - install support for managing virtual box based
- # compute nodes
- virtualbox_support: 1
- power_helper_user: 'cord'
-
-docker:
- imageVersion: candidate
-
-otherServers:
- # Specifies the configuration for dynamically added compute nodes
- location: 'http://gerrit.opencord.org/maas'
- rolesPath: 'roles'
- role: 'compute-node'
- fabric:
- network: '10.1.1.1/24'
- range_low: '10.1.1.2'
- range_high: '10.1.1.253'
+ # Uncomment if the target server is a CloudLab machine
+ #extraVars:
+ # - 'on_cloudlab=True'
diff --git a/config/onlab_develop_pod.yml b/config/onlab_develop_pod.yml
deleted file mode 100644
index f095e6c..0000000
--- a/config/onlab_develop_pod.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-# Deployment configuration for a phyical hardware POD
----
-seedServer:
- ip: '10.90.0.2'
- # User name and password used by Ansible to connect to the host for remote
- # provisioning
- user: 'admin'
- password: 'onos_test'
- # Network address information for the head node:
- #
- # fabric_ip - the IP address and mask bits to be used to configure the network
- # interface connected to the leaf - spine fabric
- #
- # management_ip - the IP address and mask bits to be used to configure the network
- # interface connecting the head node to the POD internal
- # management network. The head node will deliver DHCP addresses to
- # the other compute nodes over this interface
- #
- # external_ip - the IP address and mask bits to be used to configure the network
- # interface connecting the head node (and the POD) to the
- # Internet. All traffic in the POD to external hosts will be
- # NAT-ed through this interface
- fabric_ip: '10.6.1.1/24'
- management_ip: '10.6.0.1/24'
- external_ip: '47.135.132.21/24'
- management_iface: 'em2'
- external_iface: 'em1'
- skipTags:
- - 'interface_config'
-
-docker:
- imageVersion: candidate
-
-otherNodes:
- # Experimental
- #
- # Specifies the subnet and address range that will be used to allocate IP addresses
- # to the compute nodes as they are deployed into the POD.
- fabric:
- network: 10.6.1.1/24
- range_low: 10.6.1.2
- range_high: 10.6.1.253