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 (www.openstack.org) 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 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 (https://www.openstack.org/foundation/companies/), 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”.
Looking at commits (contribution by lines of code) in Juno here are the most active companies:
OpenStack has a modular architecture with various code names for its components:
Additionally companies can create their own plugins to extend the framework.
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.
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).
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.
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)
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”.
And you will be prompted with the Launch menu.
Give an name and select a flavor (size) then go on access & security tab
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.
Houston, we’re ready for take-off.
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
Share on Twitter Share on Facebook
Septimius Paul Tompa
tsepty [at] linux.com