Automating Deployments with Proxmox and OpenTofu

If you are getting started as a system administrator or software developer, you might have noticed that tutorials for basic tasks are easy to find online, but intermediate material is pretty much non-existent. If you are trying to learn a programming language, it is trivial enough to find entry level information (like how to build a Hello, World program), but finding examples and explanations on how to use the essential principles to build something useful is much, much harder.

That is pretty much what happened to me when I was doing research on Terraform and OpenTofu and trying to apply them to Proxmox in order to get actual tasks done. Both Terraform and OpenTofu are provisioners aimed at automating the deployment of services, machines and containers. There are many “Hello, World” tutorials for them, but they are always focused on popular cloud service providers (such Amazon’s AWS). There are some examples floating around the web with actual use cases that you might check if you want to achieve an actual, real world deployment with them, but usually they are poorly explained and come across as if they are just telling you “If you want to do X, take these steps and don’t ask any questions.” This is sometimes fine, but does not make for a good learning experience.

As a result, I am announcing my article about automated deployments with Proxmox, OpenTofu and cloud-init, published in ADMIN Magazine #84. It is an in-depth tutorial for using OpenTofu to provision a number of web servers, backed by a reverse proxy, on a Proxmox Virtual Environment. In case you are not familiar with Proxmox, suffices to say it is an hypervisor for virtual machines designed to run on your own servers. My tutorial also explains how to use cloud-init to automatically configure the virtual machines in your deployment. Every step of the process is detailed and clearly explained.

I hope this article will be of help for people learning the trade.