OpenCORD leverages Canonical's Metal as a Service (MAAS) solution. The MAAS solution provides a PXE boot environment. The basic bare metal provisioning flow is:
After the base bare metal provisioning is complete further provisioning, such as XOS or leaf-spine fabric can be deployed.
Ensures Docker tools are available on the target system. Specifically docker-engine
and docker-compose
.
Ensures that the Oracle version of Java8 is available on the target system.
Ensures the OpenFlow agent (ofdpa) is available on the target switch as well as utility scripts that have been helpful in the lab.
One of the scripts made available via this role is called connect
. This script initiates the connection from the switch to an OpenFlow controller. To connect to the controller the DPID of the switch is required as is the IP Address of the SDN controller.
The IP Address of the controller is likely universal for all switches and can be either set via the command line, using the --extra-vars
command line option or via a global vars
file.
The DPID is a per switch setting and represents the OpenFlow ID for the switch and will be in the for or 0x0000000000000012
and will be unique for each switch. This value can be set either in a host specific variable file or if the playbook is being run against a single switch using the --extra-vars
command line option.
Ensures the 40G network interface card (NIC) drivers are installed and that the interfaces on the compute node are named according to best practices. Specificall the 2 40G ports are eth0
and eth1
; the 2 10G ports are eth2
and eth3
. Additionally, this roles sets a default password for the ubuntu user so that console logins are possible for debug purposes. This last change, default password, should be eliminated for proxuction use.
Each compute node is statically assigned an IP address for the leaf-spine fabric. This can be configured in a host specific variable file found in the host_vars
directory or could be specified on the command line using the --extra-vars
option if the play book is be run against a single target system.
This role depends on the docker
role.
Ensures
Ensures that Canonical's Metal as a Service (MAAS) is available on the target system and configured according to best practices for a CORD POD. This role is meant to be applied to a head node in the CORD POD.
eth3
Additionally configuration variables, including network IP addressing information can be found in the file vars/main.yml
.
- When working with virtual machines, or really any machine that does not have a real 40G interface it is sometimes useful to not attempt to rename / reconfigure the machines interfaces. This can be accomplished by adding the `--skip-tags=interface_config` command line option to your ansible-playbook command line.
iptables
rules will be established to NAT
traffic out interface eth3
cord/maas-dhcp-harvester:0.1-prerelease
- adds DHCP addresses to the DNS server that MAAS missescord/maas-automation:0.1-prerelease
- automates compute nodes through the states of MAAS to the deployed state so that they can use used as part of the CORD POD.This role depends on the compute-node
role.