All reputable Buzzword Bingo cards will have entries for “Cloud”, “CI/CD” and “DevOps” on them, and here we will be using all with astounding frequency. I can only assure you that, much like you, I tire of the loose terminology that seems to encompass any and all concepts that could possibly link to them in an effort to inspire excitement.
If DevOps were a product you could buy, we surely would have all bought it by now and have solved all of our problems, right? We’ve re-factored our application infrastructure into microservices, deployed as containers on Kubernetes, all underpinned by a CI/CD pipeline orchestrating the solutions like a performance by the English National Ballet.
Or, perhaps not?
Unfortunately, we are not all Netflix or Amazon, and a lot of these concepts may seem quite alien to the things we know and work with today. However, many of these solutions that people would have considered as “DevOps” have reached the point of the hype-cycle where they have moved from crazy concepts that only huge technology companies use, to being toolsets that are accessible to everyone and can provide a substantial benefit when aligned with their technology strategy.
What I want to talk about today is Infrastructure as Code, both in general and specifically regarding Azure Virtual Desktop Deployments.
Let us start with, what is Infrastructure as Code? Infrastructure as Code (IaC) is effectively the definition or description of your Infrastructure implemented as machine readable code. The alternative to IaC is the interactive configuration of your infrastructure – effectively what we do today. There are two main types of IaC toolsets, declarative (what) and imperative (how) which provide different benefits, however fundamentally they will provide a layer of abstraction between your definition of the infrastructure and the physical resources which need to be configured and provisioned.
Declarative tools, such as HashiCorp Terraform are used to express the desired state of the infrastructure. For example- if your definition says that in Azure UK South there should be a Virtual Network with three subnets and in each of those subnets there should be a single A2_V2 Virtual Machine, each time the IaC deployment process is run Terraform will ensure that each of those resources are present and configured as per the definition. Changes to those Terraform deployed resources will be reverted to the definition if any variances are found.
Imperative tools are more process focused – an example of an Imperative toolset is ARM Templates in Microsoft Azure. Using ARM Templates, if you have a definition to create a Virtual Machine and run it once – it will create you a virtual machine based on your definition. If you run it again you will get another virtual machine.
Declarative tools are well suited to Cloud environments where uncontrolled infrastructure growth can lead to change management headaches and additional costs. Ensuring that your infrastructure is deployed as defined simplifies operational support and enforces standardisation. Imperative tools are more representative of traditional deployment processes where automation is introduced to simplify deployment, but does not necessarily provide any additional control mechanisms.
Most organisations are somewhere on their journey to consuming public cloud services and one of the key considerations of public cloud is that you cannot “box-shift” your current operational processes without incurring cost. There are other ways to deploy and manage your infrastructure – IaC being a major candidate. If operating at scale it becomes almost essential.
If this sounds interesting so far – you may be thinking, this is great, but there must be a catch here. Not really – the main challenge is skills and awareness of capabilities. There is an incredibly low barrier to entry – the majority of major IaC toolsets are open source and free for commercial use. Terraform for example is freely downloadable and with support for all major platforms (VMware, Azure, AWS, GCP) you can get started in minutes. The configuration tool (UI) is notepad. Or, if you are more adventurous, Notepad++ or Visual Studio Code. It really can be that simple.
You can level-up your IaC game by adding source control, for version management and release management – this can be as simple as a GitHub account or a free Azure DevOps account.
Want to reach peak Buzzword Bingo? Run your IaC deployments from a CI/CD tool of your choosing – Azure DevOps Pipelines or Jenkins to name but a couple.
Why IaC for Azure Virtual Desktop deployments? There are a few quirks of User Workloads in Public Cloud which make IaC a valuable tool. With User Workloads – consistency is essential. We need to ensure that all the dependencies in the environment are configured and present as needed to ensure that users get a great user experience. As AVD does not support non-persistent workloads, the ability to ensure consistency of configuration across a deployment (and again, the larger the scale of the deployment the larger the challenge) is a critical capability. IaC tools can support the consistent provisioning, deprovisioning of services based on your definition of the service configuration.
In the video below, you can watch an example of deploying an Azure Virtual Desktop environment in Azure using Terraform (and a tiny bit of PowerShell) from clicking go, to a user logging onto a desktop in under 15 minutes. The only tools used for creating this are Terraform and a text editor – all run from a laptop. That is how simple it can be.
Regardless of what your existing infrastructure looks like, or where it resides - you could gain some very real operational benefits from adopting modern management processes such as Infrastructure as Code. If we go back to the original example of organisations not doing DevOps - because they’re not Netflix or Amazon, we should really look at why do they do it? The driving forces are typically efficiency, cost management and reliability. Now that the tools and processes are becoming more readily accessible to a wider array of organisations, to which the same driving forces apply, I anticipate much wider adoption of modern infrastructure management across the board.
If you’re interested in any of the technology areas I’ve mentioned – AVD, Infrastructure as Code, Azure DevOps, get in touch with your Account Manager. We have a wide range of skills across all of these solution areas and would love to help you on your journey.
Why Ultima for Citrix & Microsoft
We are also the first UK Citrix Platinum Plus Partner, highlighting their recognition of our ability to deliver solutions across their full portfolio.