Faking Bare Metal in the Cloud
with Ravello Systems

As CloudOps’ Lead OpenStack Architect, I have created a technical how-to post explaining how Ravello Systems helps simulate a bare metal lab using public cloud resources like AWS and Google Cloud. It provides advanced features that are not available on public clouds and similarly allows for monthly operational expense management.

Using Ravello Systems to Simulate a Bare Metal Like to Mirantis OpenStack Lab on AWS and Google Cloud

The Trigger

A month before joining CloudOps (January 2015), I was looking for a way to leverage Amazon Web Services (AWS) to deploy an OpenStack based cloud. I could have used DevStack on AWS (QEMU) and it would have worked, but my requirements were highly specific. I wanted to replicate a Mirantis OpenStack deployment using public cloud resources.

Like many Cloud testing ideas, it started with a Google search and thanks to AdWords, Ravello popped up on top of the list. After going through the website, and grasping a few elements about how they were using nested virtualization, I was hooked.

It was exciting to think that I could go to my soon-to-be CEO and COO and say that my bare metal lab was no longer necessary and that I would have an all OPEX environment.

About Mirantis OpenStack (MOS)

MOS is a hardened OpenStack distribution with the Fuel deployment orchestrator at the helm. Basically, once your Fuel node is up, you PXE boot the other nodes of your OpenStack Cloud and they will show up in Fuel under “unallocated nodes”. From there you select them, assign them a role and hit deploy. Note that MOS allows deployment in the control plane in HA, which is a real time saver.

The Implementation

This implementation is based on Mirantis OpenStack 6.0

Step 1 – Preparing the network layout (VLAN)

CloudOps Ravello 1

Fuel operates with a set of logical networks. In this scheme, these logical networks are mapped as follows:

  • Admin (Fuel) network: untagged on the scheme
  • Public/Floating network: VLAN 101 (we don’t use VLAN in our lab)
  • Management network: VLAN 100
  • Storage network: VLAN 102
  • Fixed/Private network: VLANs 103-200 (for our LAB I used 110 to 119)

Since we are doing one network per NIC, the VLAN tagging (trunk) at the Ravello level is only necessary for the Fixed/Private network.

Step 2 – The Fuel Node

The Fuel node starts with the EMPTY VM template from Ravello (two vCPUs / 4GB of RAM). Make sure two NICs are in place with specific network information NIC1 : (Gateway and DNS – NIC2 : (No Gateway/DNS). You also need to upload the Fuel ISO in your library to attach it to the CDROM and boot the empty node with it.

 CloudOps Ravello 2

Of course, you’ll also have to assign external services to NIC1 for external access via SSH and HTTP.

CloudOps Ravello 3

The final network layout of the Fuel node will look like this:

CloudOps Ravello 4

You can now launch the Fuel node and proceed to the installation!

Installation instructions for Fuel PXE configuration and modification prior to installation are located on the Mirantis website by clicking here.

All you need to do is activate the second NIC, put same IP info as NIC2 in Ravello and make sure you tell Fuel that NIC2 is for PXE.

Step 3 – A little help from Ravello

Now that our Fuel node is up and running, you need to setup a node that will become your template for the control plane and all the compute and storage resources.

In order to do that, you will start with the EMPTY VM from Ravello, give it five NICs (all in DHCP), remove all external services and add the iPXE.ISO on CDROM has the first bootable device.

You can download iPXE.iso from http://boot.ipxe.org/ipxe.iso and like the Fuel ISO, you’ll need to upload it to your own library.

Lastly, save it to VM in our Library (More / Save to Library) and enable “Nested Virtualization” flag to run KVM on this VM, which will now be viewed as a bare metal box for your OpenStack deployment.

Step 4  – Preparing the other nodes (NON-HA Lab)

Now that you have your Ravello MOS VM, you can build your node pool for your lab deployment.

The steps are simple, you deploy as many as needed and prep them by type.


  • 1 X Controller
    • 2 x vCPU / 6 GB of RAM / 150 GB storage
    • Set a static IP to all the NICs in accordance with the network you defined in Phase 1
    • Make sure ipxe.iso is the first bootable device
  • 3 X Compute-Cinder
    • 2 x vCPU / 8 GB of RAM / 200 GB of storage
  • 1 X Zabbix (Zabbix role available in Fuel 6.0 when experimental features are enabled)
    • 2 x vCPU / 4 GB of RAM / 150 GB of storage

You must pay particular attention to the network settings on each node. Below is an example of Ravello MOS VM network (5 NICs) configuration. Please note that you MUST select VirtIO for the NIC device type.

CloudOps Ravello 5

Controller10.30.0.3 / 24192.168.0.2 / 24172.16.0.2 / 24
GW : :
External services ports : 80 and 6080 / 24192.168.2.2 / 24
Compute- / 24192.168.0.3 / 24172.16.0.3 / 24192.168.1.3 / 24192.168.2.3 / 24
Compute- / 24192.168.0.4 / 24172.16.0.4 / 24192.168.1.4 / 24192.168.2.4 / 24
Compute-310.30.0.6 / 24192.168.0.5 / 24172.16.0.5 / 24192.168.1.5 / 24192.168.2.5 / 24
Zabbix10.30.0.7 / 24192.168.0.6 / 24172.16.0.6 / 24192.168.1.6 / 24192.168.2.6 / 24

Note that only the controller node has Gateway, DNS and external services defined.

The final network layout of your MOS Lab will look like this:

CloudOps Ravello 6

Step 5  – Booting up the nodes and using FUEL to deploy your Openstack lab

Now that you have a full lab defined in Ravello, boot all the nodes so that Fuel can detect them.

Node booting up on iPXE:

CloudOps Ravello 7

You can now log into the Fuel interface to create your environment. Use the URL from Ravello on your Fuel node for port 8000.

CloudOps Ravello 8

You can now create your new OpenStack environments:

CloudOps Ravello 9

CloudOps Ravello 10

CloudOps Ravello 11

CloudOps Ravello 12

CloudOps Ravello 13

CloudOps Ravello 14

CloudOps Ravello 15

CloudOps Ravello 16

CloudOps Ravello 17

Now you can add your nodes to your environment. Just map your PXE NIC last four characters in the Ravello interface to the node you see in Fuel and map the roles.

Once all the nodes are assigned a role, select them all and click on Configure Interfaces.

CloudOps Ravello 18

Put the NICs in their proper order (PXE / management / public / storage / private) and click Apply.

CloudOps Ravello 19

The last step is to go to the network settings section and modify the VLANs accordingly, like the Neutron L2 VLAN ID Range to reflect what was put on the private NIC on the Ravello interface and verify the network.

CloudOps Ravello 20

Once saved, click Verify Networks to make 100% sure that your network settings are accurate.

CloudOps Ravello 21

If everything is green then you can click deploy on the top right corner and the deployment will start.

CloudOps Ravello 22

If deployment is a success, you will see both public IPs assigned for Horizon (controller) and Zabbix. Make sure you map those same IPs on your public network NIC in Ravello (if not the same) then you will be able to login to Zabbix (IP or FQDN/Zabbix) and Horizon from their Internet public IP.

CloudOps Ravello 23

Once deployed, you can now access the Horizon UI from the public IP assigned to the Controller Node on port 80 from the Ravello interface.

CloudOps Ravello 24



Ravello Systems enables us to build our labs using public cloud resources and save the application blueprint for future use, all on an OPEX billing model.

This is by far the most flexible lab/learning environment making I’ve come across. . SMBs and large enterprises alike could benefit from this service.


By Stacy Véronneau, Lead OpenStack Architect at CloudOps

About CloudOps 

Since 2005, CloudOps have enabled hundreds of enterprises and web-based companies to build their businesses in the cloud. Our best-in-class cloud architecture and proven approaches allow companies to confidently, securely, and reliably capture business opportunities while achieving higher levels of performance.

We also build, own and operate cloud.ca, a 100% Canadian cloud infrastructure.

Share Your Thoughts!

423 rue Saint-Nicolas, 2nd Floor
Montreal, QC H2Y 2P4

56 Temperance St, 7th Floor
Toronto, ON M5H 3V5
201 Somerville Ave.
Somerville, MA 02143
429 Lenox Ave.
Miami Beach, FL, 33139
Privacy policy
423 rue Saint-Nicolas, 2nd Floor
Montreal, QC H2Y 2P4

56 Temperance St, 7th Floor
Toronto, ON M5H 3V5
201 Somerville Ave.
Somerville, MA 02143
429 Lenox Ave.
Miami Beach, FL, 33139