3 min read

Learning OpenStack: the hard way

Learning OpenStack: the hard way

Even for small deployment, thinking about building OpenStack infrastructure without automation will be crazy. But is it when you try to learn how OpenStack work?

This is my 2 cents feedback from my personnal experience.

Question or issue with no known solution

It's possible that when you have an issue or just a question, you won't find any informations or threads with what you are looking for. That happens a lot, because there's thousands questions that you can have.

You'll find some resources, some more or less related threads on the OpenStack forum, some informations on Gerrit or repositories, maybe blueprints as well as IRC archives.

A lot of time you will have to go deep in your own infrastructure and find more informations to have a better idea about how to solve your problem or answer your question. The key word is extrapolation.

Problem with too many solutions

At the opposite some issues are so common that you will have... too much resources to work with because you will find so many different root cause and so many different setup. The ideal situation : you get your answer and you resolve your issue. But it could also be a nightmare to find what you want.

The downside of using automation too early in your learning process

It's so much difficult when you don't know how to begin or where you going. If you have learn how to deploy OpenStack with automation tool you have already do a big step in your learning process, but when come the time to go to production and to get your hand dirty, even for a lab with low criticity, it'll be impossible. For more important project it can simply be a disaster from a business standpoint.

It's crucial to understand how OpenStack work, otherwise it could be a really difficult and stressing experience.

First move : discover then play

I think the first thing you can do if you want to learn is to deploy a development OpenStack with project like Devstack. Yep that's automation, but it's the first time.

When you deploy an environment like that you can have a first experience with OpenStack : how to use Horizon, how to deploy an instance, play a little with the CLI.


Going more deep

You can still have fun with your sandbox. Now that you have play with it it's time to go under the hood :

  • take a look at the different process that are running
  • check how the configuration files are
  • add more node to your lab
  • try to replace OVS with Linux Bridge
  • ...

Going crazy

Now that you know better how OpenStack is working, you can do your own deployment from scratch.

The official documentation is really good for that, there is ton of useful resources : https://docs.openstack.org/train/

This will be an incredible help and assets in order to understand better OpenStack.

When you install it from scratch without any automation, you'll do every step that a deployment system will do.

For example if we look the Neutron steps by steps installations here :
  • Host networking

    • Controller node

    • Compute node

    • Block storage node (Optional)

    • Verify connectivity

  • Install and configure controller node

    • Prerequisites
    • Configure networking options
    • Configure the metadata agent
    • Configure the Compute service to use the Networking service
    • Finalize installation
  • Install and configure compute node

    • Install the components
    • Configure the common component
    • Configure networking options
    • Configure the Compute service to use the Networking service
  • Finalize installation

    • Verify operation
    • Networking Option 1: Provider networks
    • Networking Option 2: Self-service networks


Creation of the endpoints, databases, writing configuration files, install and configure each services... you'll see quickly that doing everything steps by steps it's the best decision you can take to level up, and in my opinion there is no more efficient strategy than doing all the deployment manually, even if you'll be probably lost at first.

I assure you that when all steps are done, you'll have a far more better knowledge base and a better global view. Back then I've have made ton of manual deployments before starting to understand a little better how it's work, and I've never regret it.

Then automate!

Now it's time to go look at the automation projects to deploy your cluster.

There are incredible projects out there, like Kolla-Ansible, TripleO, OpenStack-Ansible, Airship or StarlingX...

And after?

I still use documentations every day, I dig on forums, gerrit, launchpad, IRC and it's still a lot of fun even after years. The most important part I remember whenever I design, deploy or perform daily operations on an OpenStack infrastructure is that the learning process never ends. That's the beauty of this kind of project.

Picture from https://superuser.openstack.org/articles/oscon-2019-recap/