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 (2.5.4 or later)
  • Vagrant (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. 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 temporary target server meeting the above requirements.

Refer to the CloudLab documentation for more information.

Bring up the developer environment

On the build host, clone the cord repository anonymously and switch into its top directory:

git clone https://gerrit.opencord.org/cord
cd cord

Bring up the development Vagrant box. This will take a few minutes, depending on your connection speed:

vagrant up corddev

Login to the Vagrant box:

vagrant ssh corddev

Switch to the /cord directory.

cd /cord

Fetch the sub-modules required by CORD:

./gradlew fetch

Note that the above steps are standard for installing a single-node or multi-node CORD POD.

Prepare the configuration file

Edit the configuration file /cord/components/platform-install/config/default.yml. Add the IP address of your target server as well as the username / password for accessing the server. You can skip adding the password if you can SSH to the target server from inside the Vagrant VM as username without one (e.g., by running ssh-agent).

If your target server is a CloudLab machine, uncomment the following two lines in the configuration file:

#extraVars:
#  - 'on_cloudlab=True'

Edit /cord/gradle.properties to add the following line:

deployConfig=/cord/components/platform-install/config/default.yml

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.

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.