User Tools

Site Tools


QuickStack OpenDaylight/OpenStack Guide

Please make sure you have gone through Initial Foreman Setup Guide before attempting this guide. This guide builds on top of the previous guide by replacing and adding more infrastructure to enable OpenDaylight installation and configuration into the Neutron/ML2 plugin.

Please contact or with any questions.

Topology Details

Per our testing, we have used a single Compute Node + one Control/Network consolidated node. Each node will run its own OVS instance, connected to ODL (OpenDaylight). ODL will be running on the Control/Network node along with all of the usual OpenStack services. l2_population, ovs_agent are disabled, but L3_agent, DHCP Neutron services are enabled.

What's working?

We have tested successful bring up of two tenants and with DHCP in an private VXLAN network and been able to ping between them. Limited testing has been done so far, and there are more scenarios that need to be tried/tested.

Step by Step Guide

The guide currently relies on puppet module changes to puppet-trystack and quickstack (astapor). It also requires two new puppet modules to be installed on your foreman-server: a puppet-opendaylight module as well as a puppet-wait-for module. New global parameters have to be added to Foreman as well to tell QuickStack we want to use ODL as our network driver.

Puppet Module Changes

In /etc/puppet/environments/production/modules:

  1. Replace trystack with: -quickstack branch
  2. Replace quickstack with: - opendaylight branch
  3. Remember to move all folders to rename them and remove the 'puppet-'
  4. Now in Foreman, re-import puppet classes to get trystack::controller_networker node.

Global Parameter Changes

There are new global parameters needed with the new puppet modules. Additional ones are shown below:

  • ovs_tunnel_if - Interface that OVS will use to tunnel network data through. This will be overridden per host so you can set to "em1" for now.
  • odl_flag - Set to "true" if you want OpenDaylight used.
  • odl_rest_port - Optional. Specifies ODL REST API port. Defaults to 8081 to avoid conflicts with Swift.
  • odl_control_ip - Optional for controller_networker. Required for network node. ODL's IP. Defaults to private_ip for controller_networker.

Host Changes

If using the same server hardware or VMs throughout your environment then you can get away with just setting the private interface name as the global value for ovs_tunnel_if (since they will all be the same name). However if you use different model servers or different NIC interfaces you need to override this parameter per host. To do this in Foreman Web GUI:

  1. Go to your Host→Edit
  2. Click Parameters and find ovs_tunnel_if
  3. Click override, and enter the name of the private subnet interface for this host.
  4. Do this for all hosts that will run OVS (network and compute nodes).

Checking Results

Run puppet agent –test on all nodes to update them. Once everything is complete on your network node you should be able to see service "opendaylight" running. You should also check OVS instances to make sure br-int is created and default flows are pushed by opendaylight:

  • ovs-vsctl show
  • ovs-ofctl dump-flows -O openflow13 br-int
opendaylight_quickstack_guide.txt · Last modified: 2015/03/02 17:31 by Tim Rozet