Running Mirantis OpenStack on VirtualBox


You can install Fuel on VirtualBox and use that to deploy a Mirantis OpenStack environment for demonstration and evaluation purposes. Mirantis provides scripts that create and configure all the VMs required for a test environment, including the Master node and Slave nodes.

This guide provides information on how to run Fuel and Mirantis OpenStack on VirtualBox.


Running Fuel and Mirantis OpenStack on VirtualBox has a number of prerequisites and dependencies. Before proceeding with the deployment steps, verify whether you meet the following requirements:

  1. Run VirtualBox on a stable host system; we recommend 64-bit host OS. Mirantis OpenStack supports scripted installation on the following operating systems and versions of VirtualBox:

    Operating system VirtualBox version for scripted installation VirtualBox version for manual installation
    Ubuntu Linux 12.04, 12.10, 14.04 4.2.12 - 5.0.x 4.2.12 - 5.0.x
    Fedora 19 4.2.12 - 5.0.x 4.2.12 - 5.0.x
    OpenSUSE 12.2, 12.3 4.2.12 - 5.0.x 4.2.12 - 5.0.x
    Microsoft Windows 7, 8 x64 with Cygwin x64 4.2.12 - 5.0.x 4.2.12 - 5.0.x
    Mac OS 10.7.5, 10.8.3 4.3.x 4.3.x
  2. Download and install VirtualBox.

  3. Download and install VirtualBox extensions.

  4. Download Mirantis VirtualBox scripts from the Downloads tab.

  5. Download the Mirantis OpenStack ISO.

If you want to run these scripts on Windows directly, you should also:

  1. Download and install Cygwin for 64-bit version of Windows.

  2. Select expect, openssh, and procps packages to install.

    To do this, search by the names of the packages required in the Select Packages dialog of the Cygwin install wizard:


Hardware Recommendations: 8 GB+ of RAM

  • Supports 4 VMs for Multi-node OpenStack installation (1 Master node, 1 Controller node, 1 Compute node, 1 Cinder node). The size of each VM should be reduced to 1536 MB RAM. For dedicated Cinder node, 768 MB of RAM is enough.


  • Supports 5 VMs for Multi-node with HA OpenStack installation (1 Master node, 3 combined Controller + Cinder nodes, 1 Compute node). The size of each VM should be reduced to 1280 MB RAM. This is less that the recommended amount of RAM amount per node for HA configurations (2048+ MB per controller) and may lead to unwanted issues.

Issue with some Linux distributions

In some of Linux distributions (at least in Fedora 20), you may encounter an issue with the NetworkManager service interfering with VirtualBox host-only network functionality.

NetworkManager service may interfere with VirtualBox IP addresses assigned for host-only adapters and remove the IP addresses after DHCP timeout. This may lead to different problems: for example, it will be impossible to deploy an HA environment.

To avoid the problem, follow these steps:

  1. Make sure the the initial installation of Fuel is completed.

  2. Add the NM_CONTROLLED=no line at the beginning of all vboxnet interface configuration files. These files may be called differently, depending on your Linux distribution or configuration. Example:

    [user@system]$ ls -l /etc/sysconfig/network-scripts/ifcfg-*
    -rw-r--r--. 1 root root 254 Jan 14  2014 /etc/sysconfig/network-scripts/\
    -rw-r--r--. 1 root root 178 Feb 13 12:01 /etc/sysconfig/network-scripts/\
    -rw-r--r--. 1 root root 242 Feb 16 12:14 /etc/sysconfig/network-scripts/\
    -rw-r--r--. 1 root root 242 Feb 16 12:14 /etc/sysconfig/network-scripts/\
    -rw-r--r--. 1 root root 242 Feb 16 12:14 /etc/sysconfig/network-scripts/\

    Here, files Wired_connection_1 through Wired_connection_3 are the files that configure vboxnet interfaces and should be edited with the NM_CONTROLLED=no* line.

  3. Stop all VMs in VirtualBox.

  4. Reboot the host.

  5. Start the VMs.

  6. Proceed with environment creation.

For more information, see LP1421723.

Installing Using Automated Scripts

  1. Extract Mirantis VirtualBox scripts. The package should include the following:


    The directory containing the ISO image used to install Fuel. You should download the ISO from the portal to this directory or copy it into this directory after it is downloaded. If this directory contains more than one ISO file, the installation script uses the most recent one.

    Configuration file that allows you to specify parameters that automate the Fuel installation. For example, you can select how many virtual nodes to launch, as well as how much memory, disk, and processing to allocate for each.

    This is the script you run to install Fuel. It uses the ISO image from the iso directory, creates a VM, mounts the image, and automatically installs the Fuel Master node. After installing the Master node, the script creates Slave nodes for OpenStack and boots them via PXE from the Master node. When Fuel is installed, the script gives you the IP address to use to access the Web-based UI for Fuel. Use this address to deploy your OpenStack environment.

  2. Add Mirantis OpenStack ISO to the extracted VirtualBox iso folder.

  3. Run the script to install Fuel.

    For the Windows users:

    • Navigate to directory with the file in Cygwin prompt, for example: cd /cygdrive/c/Users/{name}/Desktop/virtualbox

    • Use the sh {shell script} command to run a shell script in Cygwin:


    The Fuel installation is complete when the VirtualBox fuel-master node shows the following details about your environment:

  4. See the Launch Wizard to Create New Environment for the instructions on how to log in to the Fuel UI and set up your first environment.

Manual Installation


The following steps are suitable only for setting up a vanilla OpenStack environment for evaluation purposes only.

If you cannot or would rather not run our helper scripts, you can still run Fuel on VirtualBox by following these steps.

Deploying the Master Node Manually

First, create the Master node VM.

  1. Configure the host-only interface vboxnet0 in VirtualBox by going to File -> Preferences -> Network, then on the Host-only Networks tab click the screwdriver icon:

    • IP address:
    • Network mask:
    • DHCP Server: disabled
    _images/host-only-networks-preferences.png _images/host-only-networks-details.png
  2. Create a VM for the Fuel Master node with the following parameters:

    • OS Type: Linux
    • Version: Ubuntu (64bit)
    • RAM: 1536+ MB (2048+ MB recommended)
    • HDD: 50 GB with dynamic disk expansion
  3. Modify your VM settings:

    • Network: Attach Adapter 1 to Host-only adapter vboxnet0
  4. Power on the VM in order to start the installation. Choose your Fuel ISO when prompted to select start-up disk.

  5. Wait for the Welcome message with all information needed to login into the UI of Fuel.

Adding Slave Nodes Manually

Configure the host-only interfaces.

  1. In the VirtualBox main window, go to File -> Preferences -> Network. On the Host-only Networks tab, click the screwdriver icon.

    • Create network vboxnet1:

      • IP address:
      • Network mask:
      • DHCP Server: disabled
    • Сreate network vboxnet2:

      • IP address:
      • Network mask:
      • DHCP Server: disabled

Next, create Slave nodes where OpenStack needs to be installed.

  1. Create 3 or 4 additional VMs with the following parameters:

    • OS Type: Linux, Version: Ubuntu (64bit)
    • RAM: 1536+ MB (2048+ MB recommended)
    • HDD: 50+ GB, with dynamic disk expansion
    • Network 1: host-only interface vboxnet0, Intel PRO/1000 MT desktop driver
  2. Set Network as first in the boot order:

  3. Configure two or more network adapters on each VM (in order to use single network adapter for each VM you should choose Use VLAN Tagging later in the Fuel UI):

  4. Open Advanced collapse, and set the following options:

    • Set Promiscuous mode to Allow All
    • Set Adapter Type to Intel PRO/1000 MT Desktop
    • Check Cable connected


By default, the launch script for the VirtualBox deployment creates three host-interface adapters. Basically, networking works as if you have 3 switches, one of which is connected to a VM network interface. This means that you have L2 connectivity between VMs on interfaces with the same name. If, for example, you try to move the management network to eth1 on the Controller node, and the same network to eth2 on the Compute node, then there will be no connectivity between OpenStack services, despite being configured to exist on the same VLAN. You can validate your network settings prior to deployment by clicking the "Verify Networks" button. If you need to access the OpenStack REST API over the Public network, VNC console of VMs, Horizon in HA mode or VMs, refer to this section: Deployment configuration to access OpenStack API and VMs from host machine.

Deployment configuration to access OpenStack API and VMs from host machine

Follow the instructions in Create a new OpenStack environment and Configure your Environment to create and configure your OpenStack environment. Most of the steps are the same for a VirtualBox deployment and the bare-metal deployment. The one exception is networking, where the VirtualBox deployment requires some different settings.

Helper scripts for VirtualBox create the network adapters eth0, eth1, eth2 which are represented on the host machine as vboxnet0, vboxnet1, vboxnet2 correspondingly, and assigned IP addresses for adapters:

vboxnet0 -
vboxnet1 -
vboxnet2 -

For the demo environment on VirtualBox, the first network adapter is used to run Fuel network traffic, including PXE discovery.

To access the Horizon and OpenStack RESTful API via the Public logical network from the host machine, you must have a route from your host to the Public IP address on the OpenStack Controller. Also, if you need to access a VM's Floating IP, you must also have a route to the Floating IP on the Compute node, which is bound to the Public interface there. To make this configuration possible on the VirtualBox demo environment, you must run the Public network untagged. On the image below, you can see the configuration of Public and Floating networks which allows this:


By default, Public and Floating networks run on the first network interface. This must be changed on each node, to run these networks on eth1 by setting the configuration as shown here:


If you use the default configuration in VirtualBox scripts, and use the settings shown on the images above, you should be able to access OpenStack Horizon via the Public network after the installation.

If you want to enable Internet access on VMs that are provisioned by OpenStack, you must configure NAT on the host machine. When packets reach the vboxnet1 interface, according to the OpenStack settings tab, they must know the way out of the host. For Ubuntu, the following command, executed on the host, makes this happen:

sudo iptables -t nat -A POSTROUTING -s \! -d -j \

To access VMs managed by OpenStack, you must provide IP addresses from the Floating IP range. When the OpenStack environment is deployed and VM is provisioned there, you have to associate one of the Floating IP addresses from the pool with this VM, whether in Horizon or via Nova CLI. By default, OpenStack blocks all the traffic to the VM. To allow the connectivity to the VM, you need to configure security groups. This can be done in Horizon or from the OpenStack Controller. For example, the following commands issued from the OpenStack controller allow ICMP and SSH traffic to pass on to the VM:

. /root/openrc
nova secgroup-add-rule default icmp -1 -1
nova secgroup-add-rule default tcp 22 22

IP ranges for Public and Management networks (172.16.*.*) are defined in the script. If default values do not fit your needs, you are free to change them, but you must make the modifications before running the command to install the Fuel Master node.

Additional Notes

  • Do not run VirtualBox as the root user or as any user with superuser permissions. You must run it as a normal user and add this user name to the vboxusers security group, which is automatically created as part of the VirtualBox installation. The following command adds the "myname" user to the vboxusers group:

    sudo useradd -G vboxusers myname
  • If the target server where you run VirtualBox is not running X11, you must modify the scripts to use the headless option: "VBoxManage startvm ... --type headless"