As more and more businesses consider the different options for a private cloud platform, it's important to know what distinguishes open source OpenStack from other popular cloud computing software on the market. In this article, I will attempt to explain what OpenStack is and what it is not, and explore some essential OpenStack components without getting bogged down in technical details.
The OpenStack ecosystem
OpenStack is very similar to Amazon EC2 in that both platforms allow users to provision VMs from a dashboard or API. The key difference between these products -- other than the fact that OpenStack is free -- is that Amazon EC2 is a public cloud service, while OpenStack allows you to build your own private cloud or subscribe to an OpenStack public cloud vendor.
OpenStack is not a hypervisor, but it is designed to work with a number of different hypervisors. Users have the option of deploying a hypervisor on the machine or an OS that has a built-in hypervisor, like Linux KVM. With the OpenStack bare-metal provisioning project, Ironic, users can push VMs onto bare-metal servers.
There are many OpenStack components, some of which I've listed below:
- Horizon (dashboard) provides a Web-based user interface for OpenStack services.
- Nova (compute) includes the controller and compute nodes. These fetch VM images from OpenStack's image service and create a VM on the target server. There are different APIs for different platforms, such as XenAPI, VMwareAPI, libvirt for Linux KVM or QEMU, API for Amazon EC2 and Microsoft Hyper-V.
- Neutron (networking) creates virtual networks and network interfaces, and attaches to many proprietary vendor networking products.
- Swift (object storage) operates like Amazon S3, meaning individual objects, like an image, are retrieved using REST Web services.
- Cinder (block storage) includes disk files, like logs and more. Compared to object storage, which only allows you to replace files, block storage allows you to append files.
- Keystone (identity storage) grants users and processes access to different OpenStack tools based on an authentication token that Keystone generates.
- Glance (image service) generates VM images. This is where the idea of OpenStack as a cloud operating system really manifests itself: Since images can be all kinds of VMs, this means there will be many different versions across different platforms, all dispatched from a common source. Glance is the catalogue of VMs you have uploaded and made available to your organization.
- Trove (database server) provides support for different databases.
OpenStack components use different variations of MySQL databases, message queue servers and Python to carry out their work. OpenStack even gives you a Python command-line interface (CLI). I've included some sample commands below to help get you started.
You can use the following command to download Keystone from public Linux repositories:
apt-get install keystone python-keystoneclient
To then create users on Keystone, use the command shown below:
keystone user-create --name Sam --description "Sam"
To list VM images with Nova, enter the following command:
To open a Python shell, type "python" and then a command such as the one below:
from keystoneclient.v2_0 import client
You can then start creating users and granting permissions, one interpreted command at a time.
Not familiar with Python? Never fear -- OpenStack gives you the option of using either the Python CLI or the point-and-click dashboard.
OpenStack as an open source platform
Rackspace and NASA developed OpenStack and then gave it away as an open source platform. This, of course, means any programmer may write new routines or fix existing ones and then view those changes in the source code with Github. Most OpenStack contributors work for big corporate sponsors, such as Rackspace. Another major sponsor, PayPal, uses OpenStack to power its platform.
There are numerous OpenStack projects, many of which are specialty projects, such as bare-metal installations. Most users don't even need the OpenStack source code, as OpenStack is available through compiled Python packages, which can be installed with the apt-get tool.
If you're interested in learning more about OpenStack or testing out OpenStack components, OpenStack offers a development version. So turn your architects and programmers loose on OpenStack -- or try it out yourself -- to see how it might fit into your organization.
To get started, you can follow our written set of instructions for installing OpenStack on a single Ubuntu desktop. Or, you can use Canonical's OpenStack Autopilot wizard to deploy OpenStack on.
Is OpenStack really worth the hype?
Build a storage cloud with OpenStack
Building trust in open source clouds