Cloud computing has revolutionised the world. With cloud computing you can spin up your technology stack anywhere in the world with just a click of a button and benefit from the economies of scale.
However using the cloud is not always desirable or possible for a variety of reasons.
What if I told you that you can setup your own cloud, using your very own infrastructure and using only Open Source software, with no licensing costs?
And I am not talking just about spinning up a VM in a server. Much more than that.
In this article I will try to give you some compelling reasons on why you might want to build your private cloud using OpenStack.
Then I might spin your head a bit at end when I will give you the other side of the argument. Why OpenStack might not be for you.
Welcome to OpenStack!
With OpenStack you can setup your own private cloud, using your very own bare metal servers and it is entirely API driven, suited for a containerised world.
OpenStack has some strong backing from Red Hat and a wide community support. There are big users of OpenStack, just to name a few; Paypal, Cathay Pacific, Ocado Technologies, Walmart, T-Mobile, UK Civil Service, you name it.
There are also a ton of different components and add-ons that you can pick & mix.
It can be overwhelming at first the quantity and variety of OpenStack distributions that you can pick and choose.
So for the sake of sanity I am only going to mention a few components, which will sound familiar to anyone who has used AWS or GCP before.
This is a major component of OpenStack. It gives you with the ability to start VMs on demand. It is agnostic of Hypervisor, so it can work with VMWARE, Hyper-V, QEMU, Xen, KVM and so on. By far the most popular hypervisor to use with OpenStack is KVM, which comes already integrated into the Linux kernel.
Swift provides storage services equivalent of what Amazon S3 offers. There are a number of features to highlight:
- It can self heal itself, and by design, provides data redundancy protection more robust than RAID
- Supports Amazon S3 API, which allows you to re-use popular AWS S3 tools
- Detects drive failures preempting data corruption.
- Gives you fine grained control of permissions to access data.
Cinder provides block storage which is needed to create volumes for Virtual Machines and docker containers. Offers similar functionality to AWS EBS.
- Storage is fault tolerant
- Highly available
- Api Driven
Neutron gives you the ability of creating software defined networks. This is very powerful and allows segregation of traffic between servers by design.
With Neutron you can create virtual routers, virtual switches, create separate subnets and you can assign floating ips to VMS all through a dashboard or a command line interface.
This component tracks usage of resources across all the OpenStack components. This is helpful for billing of computing resources or to help in monitoring usage.
Monitoring & Alerts
It is nice to be able to start a whole array of servers on demand, potentially too many to count. For that you need a powerful monitor solution like Prometheus and Grafana. The good news is that you can get one ready to go with OpenStack distributions available out there(e.g. OpenStack KOLLA)
I could go on and on, about all the components available in OpenStack that are incredibly useful to run in a private cloud. All these components are REST Api driven and have a command line utility that allows to control them. But wouldn’t it be nice to have a dashboard similar to AWS or GCP that give you a nice user interface and that you could customise to make it your own?
Welcome to the Horizon Dashboard.
Anyone who has used AWS before, will feel at home when first logging in to the Horizon dashboard.
All the functionalities you would expect in a public cloud are there.
In the horizon dashboard you can spin up VM, 1 or 10 instances at the same time. It is possible to create ssh keys, assign them to a server, assign floating ips, etc
You can also use HEAT templates to automate the work needed to deploy a whole stack of servers needed to run for instance a project.
And this is not just servers, you can also define the network elements needed such as routers, firewalls, networks, subnets, gateways, etc.
It is possible to create/edit security groups for controlling firewalls.
In Horizon you can have multiple users and setup fine-grained access control. This is important as allows us to separate responsibilities for OpenStack administrators and the most important ability is that you can control what a user can do and can’t do and also ensure that one user assigned to project X is not able to see assets for project Y.
Why OpenStack is not for everyone?
Having just mentioned some of the great features available in OpenStack, why would I want to convince you now that OpenStack is not for you?
Here are some of the reasons:
- OpenStack is hard to learn and to setup. It has so many configuration options, many distributions, especially for networking that it will be overwhelming at first. OVN, OVS, ML2, etc
- You need serious hardware. At least 5 servers to create an OpenStack private Cloud.
- You need a dedicated team to maintain OpenStack