Posted on Tue, Dec 15, 2015
Deploying OpenStack, or any cloud middleware for that matter, is no piece of cake. OpenStack consists of many many moving parts that need to be carefully configured to work correctly. (To give you an idea of the number of components and their interrelations we have reproduced below the diagram of the logical architecture from the official OpenStack documentation.) On top of that each cloud deployment is different: different number of servers to deploy on, different network topologies, different integration points with existing sytesm, and so on. The complexity of the configuration far exceeds the capabilities of regular Linux package managers like APT and YUM.
So is it possible to tame this complexity? One has to decide between two main approaches to installing OpenStack:
Install manually by following the 150+ page OpenStack Installation Guide.
Use a configuration management tool like Puppet, Chef or Ansible and use ready-made scripts to automate the installation.
The manual install will be a lot of work. There is a non-negligible risk of making errors. The installation effort needs to be repated for every machine. Let’s say you want to dedicate ten servers to the compute component that provides virtual machines. You would have to repeat ten times the installation of the compute component.
The automated install reduces the chances of making errors as you are relying on scripts developed and tested by somebody else. Repeating the installation, once it is working, on nine more machines is a breeze. However a considerable manual effort is still needed to customize the deployment scripts to your particular situation. To be able to do that, and to be able to troubleshoot any installation problems that are likely to occur, you need to become familiar with the configuration management tool.
So it worth learning a configuration management tool? We think in the case of OpenStack, the answer is yes.
Among the most widely used configuration management tools Ansible is the least complex one. It is relatively easy to learn. It is also easyer to deploy as the competition, as it does not need the setup of a central server. Instead configuration scripts are pushed from your local workstation to the machines that need to be configured.
RackSpace, one of the bigger cloud service providers, has developed an OpenStack deployment solution based on Ansible that is now officialy part of the OpenStack project: openstack-ansible. This is our starting base to create a private cloud at HEIG-VD. More on that in an upcoming blog post.