If you did read one of my very first blog posts about the deployment of OpenStack in my homelab you might want to have a look at this new article, where I will do the same but instead of using Vagrant I will use Terraform. And if you wonder why I have switched from Vagrant to Terraform than this is also a good read.

I was very happy about my setup using Vagrant but from time to time the deployments would fail or get stuck. The main reason for this was down to the network setup in the VMs. I raised an issue on the VMware-ESXi Vagrant plugin Github page and the person behind the plugin suggested to try his Terraform plugin instead. It took me quite some time to figure out how this works, but as usual Google is your best friend and there are enough good examples. I based my Terraform manifest on this one:

GitHub - linoproject/terraform
Contribute to linoproject/terraform development by creating an account on GitHub.

It was an excellent starting point for me, because it allowed me to understand how to deploy and configure multiple VMs using Terraform and cloud-init. But back to the actual topic on how to deploy OpenStack. My Terraform manifest can deploy a single node (VM) or if your ESXi has enough resources, even a multinode (multiple VMs) OpenStack cluster. I created it because I wanted to explore OpenStack and its various services like Cinder (Blockstorage), Magnum (Container Orchestration for Kubernetes), Octavia (Loadbalancer) and so on. OpenStack is a very powerful piece of software that is one of the top OpenSource projects besides Linux and Kubernetes. You can find my Terraform manifest on Github. All you need to do is check the Readme, clone the repo, either use one of the included terraform.tfvars files or adjust the example terraform.tfvars file, install Terraform and VMware OVFtool, in case you don't have it yet and run 3 commands. And you have your running OpenStack cluster on top of ESXi. Sounds too simple, give it a try.