Vagrant + VMware Fusion + OpenStack Tips & Tricks

My home OpenStack lab is a work-in-progress, but I’m much further along thanks to help from Mr. vBrownBag himself, Cody Bunch.

Whether you are just getting up-to-speed on OpenStack deployments, or you are a seasoned veteran who may be new to Vagrant and VMware Fusion, this list of hints may be useful to you as it grows over time:

1.  Ubuntu 12.04 seems to be the most OpenStack-compatible Linux flavor & version combination so far.  So, that is was I’m using in the lab.

2.  If you’re new to Grizzly, or to OpenStack in general, consider following this great install guide from Bilel Msekni and Sandeep Raman on GitHub: https://github.com/mseknibilel/OpenStack-Grizzly-Install-Guide.  There are three flavors of the guide depending on the configuration you wish to deploy: Single Node with a Linux Bridge, Single Node with Open vSwitch (OVS), Multi-Node with OVS.

3.  Vagrant is a tool for quick provisioning of VMs using either VirtualBox or VMware Fusion (expanded hypervisor support is on the horizon!).  It allows you to spin up an environment with one or more VMs quickly using a base VM image (known as a “box”) and a single configuration file (think Puppet Manifests or Chef Recipes; the concept is similar)

Here is a segment of my Vagrant configuration file (aka Vagrantfile)

Vagrant.configure("2") do |config|
  config.vm.define :controller do |controller|  #define my VM
    controller.vm.box = "precise64" #base image that my VM will be built from
    controller.vm.hostname = "controller" #set my hostname from within the Vagrantfile!
    controller.vm.network :private_network, ip: "113.0.0.10" #create a second NIC and assign a static private IP. First NIC is automatically created
    controller.vm.provider :vmware_fusion do |v|
      v.vmx["vhv.enable"] = "TRUE" #IMPORTANT: edit the VM's VMX file to support x64 nested VMs (vInception: VMs within VMs)
    end
  end
end

4.  OpenStack components require static IPs.  The IP of the first NIC (eth0) on a Vagrant VM is always specified by Vagrant itself and cannot be changed.  Vagrant uses this IP to push post-deployment configs to your VM.  So, it would be good to serve as your OpenStack External IP address.  The private IP that you specify in the Vagrantfile will be the address that the various OpenStack components use to communicate with each other (aka HOST_IP).

5. The Quantum (Networking) OpenStack module depends on the linux-headers-3.2.0-29-virtual package.  The guide does not explicitly say to deploy this package since the authors’ system probably already has it.  If you’re like me and have a vanilla Ubuntu install, OVS will fail to start if you do not deploy this package:

apt-get install -y linux-headers-3.2.0-29-virtual

Stay tuned for more tips and tricks.  If you have any helpful hints of your own to add to the list, share them in the comments below; I’ll keep updating this blog post over time.

Leave a Reply

Your email address will not be published. Required fields are marked *