Writing reusable Terraform modules

High-Level Design (HLD) diagram showing a Terraform root module with various possibilities for other modules built from it. The image illustrates the root module at the center, with arrows or lines connecting to multiple other modules, depicting how these modules can be derived or integrated from the root module for different infrastructure components.

Are you using Terraform? Deploying to multiple environments? Terraform code duplication? If you answered yes, in this blog post I am going to look at creating reusable Terraform modules including the basics, benefits and why you should be using them and finish with two examples. Deploying and managing Terraform over time in a single file … Read more

Microsoft Build In-Person UK Event 2022

Screenshot of slide DevOps from Microsoft Build

It has been 2.5 years from my last in person event, what a pleasure it was to see an email arrive with an invite to attend Microsoft Build UK in person event! What a totally epic event it was, met a lot of people who I have spoke to online but didn’t have the chance … Read more

If, elseif or else in Azure DevOps Pipelines

Writing Azure DevOps Pipelines YAML, have you thought about including some conditional expressions? In this blog post, I am going to show how you can use If, elseif or else expressions to assist in your pipeline creation Probably the most common expression you may be using is determining if a stage or job can run. … Read more

Analyze your Kubernetes YAML files and Helm Charts to ensure best practices using KuberLinter in Azure DevOps Pipeline

Screenshot from Azure DevOps showing the Kube-linter checks stage with a message indicating that lint errors were found, causing the pipeline to fail. The image highlights the error details and confirms that the pipeline did not pass due to the identified lint issues.

Deploying a number of YAML files or Helm Charts as part of your Kubernetes deployment? Unsure if they are representing best practices? KubeLinter will help you to achieve best practices within your YAML configurations & Helm Charts – I will show how you can add this tool as part of your CI integration tooling or … Read more

Creating dynamic variables during a pipeline run in Azure DevOps

In Azure DevOps Pipelines – you can create variables “on the fly” during your pipeline run! Wanting to create a variable such as resource ID, location of a resource in Azure etc? This blog post is for you! I will show how you can dynamically create variables during a pipeline run that can be referenced … Read more

Deploying a container image to Azure Container Registry using a GitHub Action with Azure CLI

Screenshot from Azure Container Registry (ACR) showing the sampleapp repository with two image tags. The image highlights the repository details, including the listed tags and their associated images

Storing your application container images in Azure Container Registry(ACR)? In this blog post, I am going to show how you can deploy a new container image to ACR automatically using a GitHub Action when there has been a merge to the main branch in GitHub GitHub Repository Secrets To start, we need to create two … Read more

Referencing Azure Key Vault secrets in Terraform

A quick blog post on how to store your secrets in Azure Key Vault and referencing them within your Terraform configurations. The Azure Key Vault and secrets Azure key Vault and secrets is certainly the recommended approach for storing secrets in Azure! Benefits include: Now the Terraform I am assuming you have used Terraform previously; … Read more

Using Azure Container Apps and KEDA to create self-hosted scalable Azure DevOps Agents deployed using Azure DevOps and Azure CLI

Screenshot from Azure DevOps showing the agent pool with a list of available agents. The image highlights the agents in the pool, displaying their names, statuses, and other relevant details indicating their availability for running jobs

You may have the requirement of creating self-hosted agents in Azure DevOps, there are multiple ways of doing this including Virtual Machine, Virtual Machine Scaleset & various Container-type approaches. In this blog I am going to to be using Azure Container Apps and KEDA to create self-hosted scalable Azure DevOps Agents deployed using Azure DevOps … Read more

Deleted APIM Instance and get error ServiceAlreadyExistsInSoftDeletedState when redeploying

Was recently deploying an APIM instance using automaton and noticed error ServiceAlreadyExistsInSoftDeletedState in the output. Full error below To resolve this soft-delete with APIM resource; currently only available option is via Azure API. I used the below to assist in resolving this error: API reference used here I thought i’d add this issue/resolution to my … Read more

Deploy to Azure Container App from Azure Container Registry using a CI/CD Azure DevOps Pipeline and Azure CLI

High-Level Design (HLD) diagram illustrating a CI/CD pipeline for a container app in Azure. The image shows the flow from Azure Repos for source code, through an Azure Pipeline for build and deployment, to Azure Container Registry (ACR) for image storage and retrieval, culminating in the deployment of the container app

Azure Container Apps are relatively new in Azure, still in Preview as of writing this blog post. In this blog, I will be deploying to Azure Container App from Azure Container Registry using a CI/CD Azure DevOps Pipeline and Azure CLI. You may be thinking, what is the difference between a Container App and Container … Read more