[This description is for a stand-alone bare-metal target server. It brings 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. It is a good place for novice CORD users to start.]
[*NOTE: If you are looking for instructions on how to install a multi-node POD... (look where?) *]
This tutorial walks you through the steps to bring up a CORD "POD" on a single bare-metal server. This deployment uses a simulated fabric, but it is good to get a quick feel for what is involved and how CORD works.
Specifically, the tutorial covers the following:
You will need a build machine (can be your developer laptop) and a target server.
Build host:
git
(2.5.4 or later)Vagrant
(1.8.1 or later)Target server:
ubuntu
user)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.
On the build host, clone the CORD integration repository anonymously and switch into its top directory:
git clone https://gerrit.opencord.org/cord cd cord
If -- for whatever reason -- you decide to clone the repo as a private repository using ssh, then you should add your private key to your local ssh forwarding agent, because we will clone additional CORD repositories within the Vagrant environment using the same git access mode, and this will require your local agent to know your identity:
ssh-add ~/.ssh/id_rsa
Bring up the standardized CORD build and development environment (VM). This will take a few minutes, depending on your connection speed:
vagrant up corddev
Login to the build environment:
vagrant ssh corddev
Switch to the CORD integration directory, which is shared from your host:
cd /cord
Pre-fetch all pre-requisites needed to build all components for CORD. This step can take a while as a large number of images and files need to be downloaded.
./gradlew fetch
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
).
Before proceeding, verify that you can SSH to the target server from the development environment using the above IP address, username, and password. Also verify that the user account can sudo
without a password.
Edit /cord/gradle.properties
to add the following line:
deployConfig=/cord/components/platform-install/config/default.yml
If your target server is a CloudLab machine, uncomment the following two lines in the configuration file:
#extraVars: # - 'on_cloudlab=True'
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!
Execute a set of basic health tests on the platform:
./gradlew post-deploy-tests
Exit from the build environment and destroy it:
exit vagrant destroy -f
If you got this far, you successfully built, deployed, and tested your first CORD POD.
[TODO]
http://<target-server>/
padmin@vicci.org
letmein