What is OpenStack?
So, if you haven’t been sleeping under a huge rock in the last few years, you’ve probably heard of Virtualization and Cloud Computing. And chances are you’ve heard of OpenStack. A free and open source framework to deploy clouds as IaaS of any size: big, small, medium, private and not. This article is an introduction to OpenStack for beginners. However, as such it is a quite complicated argument for people who haven’t understood what Virtualization, Clustering and scalability are. So if you don’t know what they are, better go learn them now!
A bit of history
In the first years of cloud computing, most of the clouds up in the sky were proprietary and didn’t allow much flexibility. Today not much has changed, many clouds have developed and each one of them follows its rule set. Microsoft has got Azure, Amazon has got Web Services, Google’s got Google Cloud Computing. However they all speak different languages, at the point the customer will find it hard to migrate from one cloud to another one. This is the so-called vendor lock-in. Fortunately for us, today we have OpenStack.
So what is OpenStack?
In the first paragraph I called it framework, however there are many definitions like: set of tools or even Operating System. OpenStack falls in each category however it doesn’t fit completely, so it is and it isn’t each one of them. OpenStack COO Mark Collier, says OpenStack is an Integration Engine. Let’s put it this way: OpenStack needs an Operating System underlying: Ubuntu, RHEL, CentOS, SUSE, Fedora, Debian or whatever. It is a framework, since it is also extensible. But it also provides many set of tools, including a Web Interface, a CLI interface (pardon the repetition) and a REST interface. So, yes, it is each and no one of them. OpenStack is also modular: it is made up of many components that can be deployed singularly or together, and that’s what we are going to look at in the next paragraph.
As we said OpenStack is composed of many modules that can run alone or together. Each module covers a different area and is good at doing only one thing.
Nova is the principal component of OpenStack, it is responsible of managing VMs and can use different hypervisors including KVM, XEN, VMware and even Hyper-V or Docker (experimental)! (you can find a full list of supported hypervisors even though it’s a bit messy.)
Swift & Cinder [storage]
Swift and Cinder are two separate modules, however they serve the same purpose: storage. Cinder provides Block storage, while Swift provides Object Storage.
This one is probably the most complicated component, it handles networks and require a lot of knowledge to use it fully. It can handle many things like floating IP, static IP, dhcp, subnets, routing and much, much more!
Glance is used to store, manage and delivery disk images. Let’s suppose you want to deploy 100 RHEL VMs. Storing a template image in Glance will allow you to start from that and deploy the 100 instances you need. Glance however, doesn’t store the images, it relies on a back-end like Swift to do so; instead it stores metadata for other services to consume; primarily Nova.
Horizon is the Web Interface for OpenStack, it is designed to be an elegant way to communicate with OpenStack without using the CLI. It can be used by both administrators (to manage projects) or by end-users (to manage their own projects).
Keystone works behind the scenes to provide a central point to authenticate users. It can also interface to other authentication methods like LDAP or even Kerberos! (I haven’t tried it myself, but I guess it’s not that simple.)
There are also other components, but we won’t speak of them here. Just know there are other components. For the sake of completeness here are the names (up to date): Ceilometer, Heat, Trove, Ironic, Zaqar, Sahara.
So THIS is OpenStack?
Yes, this is OpenStack. In the end it is a set of tools that provides services similar to a framework being similar to a Operating System. It is modular, hence provide flexibility. And it is scalable horizontally (adding nodes to the cluster). Yes, we didn’t speak of clusters yet! This is a difficult point: usually many individuals fear expanding a all-in-one OpenStack to a multiple-nodes OpenStack. We don’t have neither time nor space to speak of clustering, however keep in mind that OpenStack is designed to scale horizontally; I’ll speak of that in another article.
Fantastic! How do I get started?
To get started with OpenStack might be a bit difficult. If you just want to get a glance (pardon the joke), you can go at trystack.org. If you are interested in installing OpenStack you should use DevStack. If you decide to use Fedora/CentOS/RHEL, I suggest you to take a look at RDO: managing SELinux while learning OpenStack might be a bad trip, so if you use this option, I highly recommend RDO.
Now the only thing left for you to do is pick up patience and will to learn! In the next few weeks I’ll be writing about how to set up a little home lab and tips and trick using OpenStack.
Thanks to Tal ETouch for the image.