This repository contains Ansible playbooks for installing and configuring an OpenStack Kilo cluster for use with XOS. This is how we build clusters for OpenCloud, and is the method of installing a CORD development POD as well.
All of the OpenStack controller services are installed in VMs on a single "head node" and connected by an isolated private network. Juju is used to install and configure the OpenStack services.
The CORD POD install procedure uses the "head node" of the cluster as the control machine for the install. As mentioned above, install Ansible on the head node and check out this repository.
The playbooks assume that a bridge called mgmtbr on the head node is connected to the management network. Note that also there must be a DHCP server on the management network that:
If you need to set up dnsmasq
to do this, take a look at this example configuration. Then follow these steps:
bootstrap.sh
script to install Ansible and set up keys for login via localhost
$ ansible -i cord-hosts head -m ping $ ansible -i cord-hosts compute -m ping
ansible-playbook -i cord-hosts cord-setup.yml
juju status --format=tabular
admin-openrc.sh
credentials in the home directory to interact with OpenStack. You can SSH to any VM using ssh ubuntu@<vm-name>
This will bring up various OpenStack services, including Neutron with the VTN plugin. It will also create two VMs called xos and onos-cord and prep them. Configuring and running XOS and ONOS in these VMs is beyond the scope of this README.
NOTE: The install process only brings up a single nova-compute node. To bring up more nodes as compute nodes, perform these steps on the head node:
$ juju add-machine ssh:<user>@<compute-host> $ juju add-unit nova-compute --to <juju-machine-id>
Refer to the Juju documentation for more information.
The process for setting up a CORD test environment on CloudLab is similar (but not identical) to the one for setting up a CORD POD above.
bootstrap.sh
script to install Ansible and set up keys for login via localhost
ansible-playbook -i cord-test-hosts cord-setup.yml
This will bring up various OpenStack services, including Neutron with the VTN plugin. It will also create two VMs called xos and onos-cord and prep them. It creates a single nova-compute node running inside a VM.
It should be possible to use this method on any server running Ubuntu 14.04, as long as it has sufficient CPU cores and disk space.
NOTE: Currently VMs can be created using this configuration and logged into over the VTN-supplied management network. However without the CORD fabric they don't have external connectivity, and as a result a vSG cannot be spun up. A workaround for this issue should be in place shortly.
Once the prerequisites are satisfied, here are the basic steps for installing a new OpenCloud cluster named 'foo':
$ ansible-playbook -i foo-hosts foo-setup.yaml
$ juju add-machine ssh:ubuntu@compute-node
$ ansible-playbook -i foo-hosts foo-compute.yaml