OpenStack Grizzly 10 Minute Install
Shell Ruby JavaScript
Switch branches/tags
Nothing to show
Pull request Compare This branch is 8 commits ahead, 5 commits behind bluechiptek:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Installing OpenStack Grizzly in 10 Minutes

The OpenStack project provides a way to turn bare metal servers into a private cloud. It's been over a year since I published the first Install OpenStack in 10 Minutes guide and now, nearly 10K installs later, I'm pleased to announce the quickest and easiest way yet to get an OpenStack cluster running.

Before we drop into the guide, I'd like to thank Blue Chip Tek for providing hardware, advice and setup assistance, Dell Computers for donating the test hardware, and the awesome folks at Rackspace for writing and supporting the Chef scripts which are used for the bulk of the setup process.

The scripts provided in this guide build a Chef server inside a Vagrant box, which ends up acting as a sort of 'raygun' to blast OpenStack onto the nodes. Everyone knows rayguns are awesome.

Prerequisites for Install

The new install scripts are available for download from BlueChip's Github account. It is recommended you familiarize yourself first with the install process by watching the screencast below.


Before you start, make sure you have a minimum of one bare metal node running Ubuntu Server 12.04. If you are installing on more than one node, make sure all the nodes are on the same private IP block and are able to talk to each other before proceeding. All nodes will need Internet access via NAT provided by a DHCP server/router.

If you don't have Vagrant installed on your computer (desktop/laptop) yet, you'll need to download both Vagrant and VirtualBox:

Double click each package to run through the installation on your local machine.

Download the Install Scripts

Start a terminal on your local machine and make sure you have git installed. If you don't, you can download it here. Make and move yourself into a directory called openstack:

mkdir openstack; cd openstack

Next, clone the scripts from the repo:

git clone

Now move into the scripts directory and take a gander at the scripts:

cd vagrantstack; ls

Create the Setup File

The setup script provided in the repository will prompt you for a few variables, including the number of nodes for the cluster, the node IPs and names, and the network you'll be using for instances. Start the setup script by typing the following:


Once the setup script finishes, you will have a setuprc file that will look something like this:

export NODE_1_HOSTNAME=nero
export NODE_1_IP=
export NODE_2_HOSTNAME=spartacus
export NODE_2_IP=
export NODE_3_HOSTNAME=invictus
export NODE_3_IP=
export ROOT_PASSWD=af5b015ab50472e2368cdef95dfda120

Before you continue with the install, double check the network interface names on your nodes:

kord@nero:~$ ifconfig -a |grep Ethernet
br100     Link encap:Ethernet  HWaddr d4:3d:7e:33:f7:31  
eth0      Link encap:Ethernet  HWaddr d4:3d:7e:33:f7:31  

If your primary interface name is different than eth0, be sure to edit the setuprc file and change the BRIDGE_INTERFACE value to the correctly named interface. Things will go horribly wrong later if you don't do this now!

Note: If you are using a Windows box, and can't run bash scripts, you can move the setuprc.example file to setuprc and edit as needed:

move setuprc.example setuprc
notepad setuprc
dos2unix setuprc

Provision the Chef Server

The Chef server is built and started by the Vagrant manager and should take 5-10 minutes to build on a fast box and connection. Start the server by typing:

vagrant up

Note: If you have multiple network interfaces on your desktop or laptop, you will be prompted to choose one for the bridge that is created for the Vagrant server.

Once the Chef server is provisioned, ssh into it:

vagrant ssh

Once you are logged into the server, become root and change into the vagrantstack directory:

sudo su
cd /root/vagrantstack

Now run the install script to print out the node configuration commands:


Configuring the Nodes

You will need to do some manual configuration of your nodes now. The install script you just ran will dump out instructions and commands you can use to cut and paste and save time.

1. Begin by setting a temporary root password on each node:

root@chef-server# ssh user@hostname
user@hostname$ sudo passwd root	
[sudo] password for user: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
user@hostname$ exit

You will need to replace the user and hostname appropriate for your nodes and repeat these steps for each and every node you specified in the setup. For each node, you will be prompted for your user password twice and the new root password twice.

Note: The scripts will take care of disabling the temporary root password after the keys are installed.

2. Next, push the root key to each node from the Chef server:

ssh-copy-id root@hostname

As above, you will need to replace hostname with the node's actual hostname and then repeat this for each and every node in your cluster. You will be prompted by the nodes for the root password you set in step 1 above.

Delopy the Nodes

The deploy script installs the Chef client on all the nodes you specified in the setuprc file. After the deploy script is done, manually running the chef-client command kicks off the install of OpenStack. Start the install of the client by typing the following from the Chef server:


Once the deployment script completes, ssh to each node and manually run the Chef client command:

root@chef-server# ssh root@hostname
root@hostname# chef-client

As you did earlier, replace hostname here with the actual hostname of each node. Repeat this for each and every node in your cluster. You may run these commands simultaneously on all nodes to speed up the install process.

The first node in your cluster will be configured as an all-in-one controller. This node will host the database for OpenStack, provide authentication, host the web UI, and perform network coordination. The all-in-one node will also serve as a nova-compute node. If you have more than one node in your cluster, the remainder of the nodes will be deployed as nova-compute nodes.

Starting Instances

Once the all-in-one node is provisioned, you should be able to log into the web UI for OpenStack. Enter the IP address of the all-in-one node, which should be the NODE_1_IP variable in your Chef server environment:

The default user for the web UI is admin and the default password is secrete.

You can refer to the video guide for getting started using the UI.


If anything goes wrong with the install, be sure to ask for help. The easiest way to get help is to post in the forums. Here are a few simple suggestions you can try:

1. Check you can ping your nodes by name from the Chef server:

root@chef-server# ping nero
64 bytes from nero ( icmp_req=1 ttl=64 time=0.463 ms
--- nero ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.463/0.463/0.463/0.000 ms

2. Check you can ping your Chef server by name from a node:

root@chef-server# ssh nero 
root@nero# ping chef-server
PING chef-server ( 56(84) bytes of data.
64 bytes from chef-server ( icmp_req=1 ttl=64 time=0.455 ms
--- chef-server ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.455/0.455/0.455/0.000 ms

3. Check you can remotely execute commands on the nodes from the Chef server:

root@chef-server# ssh nero uptime
09:59:04 up 12 days, 15:04,  0 users,  load average: 0.10, 0.14, 0.14

4. See what nodes Chef knows about:

root@chef-server# knife node list

5. Run a sync on the environment for the nodes:

root@chef-server# knife exec -E 'nodes.transform("chef_environment:_default") { |n| n.chef_environment("grizzly") }'

6. Rerun the chef-client on each node:

root@chef-server# ssh nero
root@nero# chef-client

7. Check the OpenStack services are running normally:

root@nero:~# nova-manage service list
Binary           Host                       Zone             Status     State Updated_At
nova-scheduler   nero                       internal         enabled    :-)   2013-08-23 17:10:45
nova-conductor   nero                       internal         enabled    :-)   2013-08-23 17:10:49
nova-cert        nero                       internal         enabled    :-)   2013-08-23 17:10:48
nova-consoleauth nero                       internal         enabled    :-)   2013-08-23 17:10:48
nova-network     nero                       internal         enabled    :-)   2013-08-23 17:10:48
nova-compute     nero                       nova             enabled    :-)   2013-08-23 17:10:49
nova-network     invictus                   internal         enabled    :-)   2013-08-23 17:10:51
nova-compute     invictus                   nova             enabled    :-)   2013-08-23 17:10:47
nova-network     spartacus                  internal         enabled    :-)   2013-08-23 17:10:52
nova-compute     spartacus                  nova             enabled    :-)   2013-08-23 17:10:49