Motivation
OpenStack is a virtualization environment supported by several operating systems. According to the OpenStack survey from October 2015, the most used Linux* distributions running production deployments are Ubuntu* Server, CentOS* and RHE [1]. To develop, debug and test new features among these operative systems, several industry standard, high volume servers will be needed. If available resources are limited, the cheapest option should be taken: every time a new operating system is needed, it must be installed on the testing server.
Over the years, Linux distributions have become easier to install and configure. Most of them have distributions with graphical user interfaces, making the installation process easy and intuitive. Popular server distributions also have cloud images to spawn a virtual machine, and tools like Clonezilla [2] allow a partition or drive to be cloned to another server.
However, despite all improvements and tools available, installing an OS on a server is still time consuming. After the OS installation, it’s important to remember to account for the time needed to customize the development environment. This whole process can take up to four hours and physical access to the device is needed.
Defining the Challenge
So what exactly is needed to solve this challenge? Let’s take a look:
-
A way to automatically deploy a new operating system on a server. Just select an operating system and press “Proceed”.
-
To have a repository of operating system images available.
-
To install everything remotely.
-
Not only to deploy the operating system, but also to configure it and install the development tools and repositories needed.
-
Reduce the number of machines required to deploy the controller(s) to manage this infrastructure.
Is this too much to ask for? Only time will tell.
Solving the Challenge
To get started, two main decisions must be made: which bare metal controller should be used and selecting the deployment tool, everything under the umbrella of OpenStack.
The first decision is easy. Ironic [3] is an integrated OpenStack program to provision bare metal machines, forked from the Nova bare metal driver, and it’s in the “Big Tent”.
The deployment tool should be able to install Ironic and must be ready for production use. Kolla [4] fits this requirement. It’s also used for development deployments, it’s fast and provides a reliable installation framework using containers to isolate the needed running services.
Hardware and Infrastructure Requirements
Before starting the deployment of this tool, a number of requirements should be met:
-
Two servers are required. One to install the controller and the other one to be used as a “node”. The term “node” is used by Ironic to define those servers attached to the controller and available to deploy an operating system on them.
-
Two network interfaces on the controller:
-
The first one is the management interface and is connected to the built-in company network. This interface is not going to be managed by this deployment. It’s very common having corporate DHCP servers on this networks; don’t be afraid, this deployment won’t interfere.
-
The second one will be integrated in the network infrastructure spawned by this deployment. It’s highly recommended to have both interfaces in separate physical networks.
-
-
Intelligent Platform Management Interface (IPMI) capabilities in the node network interface. This interface will allow us to control the server by sending commands over the network. Please, visit the IPMI website to learn more about this specification. [5]
Follow the Yellow Brick Road
Once the required infrastructure is in place, follow these steps in order to setup the bare metal deployment:
-
Configure the node.
-
Configure the controller host:setup some global variables, configure the network and install all the libraries needed.
-
Kolla setup: install Kolla, configure it, build the container images and deploy them.
-
OpenStack setup: once the deploy tool Kolla is ready, it’s time to setup and run this tool.
-
Deploy an operating system in the node.
Additional instructions on how to implement these steps will be provided in follow-on blogs.
References.
[1] OpenStack user survey, October 2015 (https://www.openstack.org/assets/survey/Public-User-Survey-Report.pdf)
[2] Clonezilla (http://clonezilla.org/)
[3] Ironic wiki webpage (https://wiki.openstack.org/wiki/Ironic)
[4] Kolla wiki webpage (https://wiki.openstack.org/wiki/Kolla)
[5] Intelligent Platform Management Interface (http://www.intel.com/content/www/us/en/servers/ipmi/ipmi-home.html)