Azure Devops + VMWare + Terraform

Ah…so long since my last post! I have been extremely busy lately – as odd as it is in these times of Covid19 / stay at home (except if you are Mr Cummings of course) etc. … But let’s keep this space PC.

So since I have recently started at a new company, I worked in a few things, but since those are mostly around Active Directory (which is well known enough) I felt no urge to post much. I also learned a lot in terms of web development, but as I did not really had much time to develop any original and meaningful work, I also skipped that.

However as I just did some testing / proof of concept on a project, I thought tho share some of my experiences.

The background

In our current environment we have a hyper-converged infrastructure (this time Simplivity, courtesy of HP, as opposed to VxRail by DELL in my previous work). Of course the questin came forward: how to simplify the VM deployment? As I recently part-took in a workshop on Azure Devops and I already had some tests done on VMWare meets Terraform, I decided to implement this for our environment. I followed the guides part 1 and part 2.

The process

As the guides are as per above, I refrain from repeating the steps in great details. What I would add to them: the example they provide is pretty OK, but it of course needs some customization.

This part was proven completely unnecessary.

This type of declaration changed in the 12.x version of Terraform.

This is the new way.
In my version I have also added annotations as a default to the new VM-s (not a must) and I added the domain joining by default.

The process loosely follows the guides above. I am using a core win server vm as a build agent. I store the template files on a local repo synced to AzureDevops.
– The build agent executes the work to create the artefacts.
– This is followed by a deployment, where the secrets from the key vault will be inserted into the .tf file during the build, and the agent executes terraform init, plan and deploy processes.
– Finally a cleanup removes residual files from the agent.

At the end of the deployment (process took about 8-9 min, but I guess it depends on the size of the template) I have a nice blank Windows server, joined to our domain.

The biggest caveat I found during the process: Terraform (or the VMWare provider) is extra sensitive about the version of VMware tools – used for the customization. One would imagine 11.0.1 is still OK to use even though the latest version is 11.0.6. Well, not really. I could not copy VM-s that were below this. True, in the cluster I worked there was no 11.0.5 version, so I can’t say if only the latest or only the latest few versions are acceptable. But I can say 11.0.1 was instantly killing my pipeline.

Anyway, I think this is enough from the “devops trenches” for today. Fabrice out.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s