OpenStack Cloud Software

OpenStack is an Open Source software collection for creating private and public clouds that allows us to virtualize an entire datacenter infrastructure. It is described on the project site ( as "a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface or via API".

OpenStack Cloud Platform

OpenStack began his journey in 2010 as a joint project of Rackspace Hosting and of NASA. As of 2015 it is managed by the OpenStack Foundation, a non-profit corporate entity established in September 2012 to promote OpenStack software and its community. Since then hundreds of companies have joined the project (, and hundreds of the world’s largest brands rely on OpenStack to run their businesses every day, reducing costs and helping them move faster. In the same time creating a very strong support around it and continuing a fantastic grow, reminding me of one particular project named “Linux”.

OpenStack Growth

Looking at commits (contribution by lines of code) in Juno here are the most active companies:

OpenStack Contribution by company

OpenStack has a modular architecture with various code names for its components:

  • Nova is a cloud computing fabric controller, which is the main part of an IaaS system.
  • Glance provides discovery, registration, and delivery services for disk and server images.
  • Swift is a scalable redundant storage system where objects and files are written to multiple disk drives spread throughout servers in the data center
  • Keystone provides a central directory of users mapped to the OpenStack services they can access.
  • Neutron (formerly Quantum) is a system for managing networks and IP addresses.
  • Cinder provides persistent block-level storage devices for use with OpenStack compute instances.
  • Heat is a service to orchestrate multiple composite cloud applications using templates or APIs.
  • Telemetry Service (Ceilometer) provides a Single Point of Contact for billing systems, providing all the counters they need to establish customer billing
  • Trove is a database-as-a-service provisioning relational and non-relational database engine
  • Sahara aims to provide users with simple means to provision Hadoop clusters
  • Ironic is an incubated OpenStack project that aims to provision bare metal machines instead of virtual machines.
  • Zaqar is a multi-tenant cloud messaging service for Web developers. It combines the ideas pioneered by Amazon's SQS product with additional semantics to support event broadcasting
  • Manila provides an open API to manage shares in a vendor agnostic framework
  • Designate provides DNS as a Service
  • Barbican is a REST API designed for the secure storage, provisioning and management of secrets.

Additionally companies can create their own plugins to extend the framework.

 OpenStack Cloud Architecture

One interesting notice OpenStack APIs are compatible with Amazon EC2 and Amazon S3 and thus client applications written for Amazon Web Services can be used with OpenStack with minimal porting effort.

Setting up an OpenStack cloud takes approximately 15 minutes, all you will need is an Linux OS installed on all nodes, have a repository where you will have all the components available and setup SSH key authentication to all nodes. You will be able to have a push installation to all the nodes, using “answers file” or just use command line arguments.

Once you start putting all those modules together you start realizing the power it gives you to manage every component it the most subtitle ways. It will require basic knowledge of Linux, networking and storage to have a more advanced configuration.

It has something to offer to everybody, the geeky admin will appreciate the power of command line and the possibility to script/automate every operation, the network admin will appreciate the flexibility of open switch, and virtual network, the programmers will love the API interface, and the others will enjoy the simplicity of setting up components from the web interface.

Once the installation is completed the first thing that you will need to setup is network. The network setup relay heavy in using an open virtual switch (OVS) that will control virtual bridges (br-ex – external, br-int – internal), and a virtual router (neutron) that will handle layer 3 operations.

OpenStack Network

One of the most basic setup is to create an virtual router and 2 networks (one internal and one external), and assign some virtual IPs (called floating IPs here) that will behave like a public IP, so you will need that if you want to connect to the instance remotely, but luckily this part is easily done via the provided dashboard (web interface).

OpenStack Dashboard

On your first project you will have the administrative menu (Project/Admin/Identity).

The identity section is allowing creating users, setup user quotas, and assigning users to different projects.

The admin section is allowing you to do operations like define all resources that will be available to projects, do administrative tasks, and generate usage reports.

The Project section allows you to manage the resource that has been allocated for your project. I will not focus on the installation on this section instead I just want to give you an insight how it is used, and it’s all here in the project section.

First thing that needs to be setup is your network, this is done from Project > Network> Network Topology section. You need to setup a virtual router first that will act as a gateway between your public network (or outside interface br-ex) and internal OpenStack network (br-int), and define your networks, then just click on the router and connect one interface to each network.

OpenStack Network Topology

You’re done, now we can get ready to start VMs. Next thing that I like to do it is to generate a SSH private/public key that I can use for authentication (Project>Compute>Access & Security<Key Pairs>Create Key Pair). Most vendors provide cloud images with only key authentication enabled.

Upload such an image to your data store (Project > Compute > Images > Create Image)

OpenStack Create an Image Dialog

You will need to provide name and minimum hardware specs and an image (a multitude of formats are supported (ISO, QCOW2, RAW, Amazon)).

Once the image is uploaded you can start your first VM, just click “Launch”.

OpenStack Instance Listings

And you will be prompted with the Launch menu.

Give an name and select a flavor (size) then go on access & security tab

OpenStack Launch Instance Menu

You will need to select the SSH key pair you generated on the previous step, this is the key that will be used for initial login. And lastly add a network interfaces in the desired networks.

OpenStack Select Network

Houston, we’re ready for take-off.

OpenStack Creating Instance

Once the machine booted, usually we have only an internal IP on it, we can click on instance and login from console or we can choose to login via SSH but for that we need to have a floating IP (an IP in the external network) assigned to it (Compute > Access & Security > Floating IPs > Allocate IP to Project) .

The default security (managed transparently thru iptables) is deny by default, so we will need to allow at least Ingress SSH (22) access on the internal firewall called Security Groups (very Amazonish), so go on Compute > Access & Security > Security Groups > Manage Rules (default) and make it happened.

Next step it will be to allocate one floating IP to our instance (by clicking on Associate Floating IP near the instance name). Now you can enjoy your new instance.

That’s it, a really short overview of OpenStack and how you can start your first project, and start your journey.

Author Septimius Paul Tompa



Currently unrated