Terraform Module Design Is the Hard Part – So I Built an Agent Skill for It

Building Terraform modules is rarely the hard part. The harder part is deciding whether a module should exist at all, where the boundary should sit, how much of the provider surface to expose, and which platform defaults should be opinionated rather than endlessly configurable. In this post, I walk through why I built a terraform-module-creator GitHub Copilot skill to help with that design work up front, using live Azure MCP and HashiCorp MCP guidance to shape better module boundaries, interfaces, documentation, validation, and long-term supportability.

The Future of IaC: How AI Is Changing the Way We Build

The future of Infrastructure as Code isn’t about writing more Terraform. It’s about teaching agents how your platform works, letting AI handle the repetitive parts, and spending more time reviewing intent instead of syntax. Here’s how agent skills, MCP servers, and natural language workflows are quietly reshaping IaC.

Why You Should Use AI-Powered Terraform Plan Reviews in Your CI/CD Pipeline

Increase CI/CD efficiency with AI-powered Terraform plan reviews. Catch issues early, improve IaC quality, and speed up deployments. Learn more today.

Why You Should Setup Terraform MCP Server with GitHub Copilot

Have you ever wished your AI assistant could instantly surface the latest Terraform resources, modules, and syntax – without sending you off to dig through documentation? If you’re using GitHub Copilot for Infrastructure as Code, there’s a new way to make your workflow smarter and more up-to-date: the Terraform MCP Server. In this blog post, … Read more

Deploy Terraform to Azure with OIDC and GitHub Actions

Recently I blogged about Deploying to Azure: Secure Your GitHub Workflow with OIDC, this is a follow on post – looking at deploying Terraform to Azure using OIDC and GitHub Actions With Microsoft and GitHub both emphasising identity-based access, using OIDC for Terraform deployments isn’t just secure. It will become the new norm. OIDC authentication … Read more

Ensuring Terraform State Security with Ephemeral Values and Write-Only Outputs

In this blog post, I will cover what are ephmeral resources, why write-only arguments should be used and an example both being used in Azure to store and retrieve sensitive values without them being stored in the state file.

Autogenerating Terraform Documentation with terraform-docs and GitHub Actions

Writing a lot of Terraform modules and trying to maintain accurate and up-to-date Terraform documentation becomes increasingly challenging. This is where terraform-docs along with GitHub actions can assist you, they automate the generation of Terraform documentation. In this blog post, I will show you how to use terraform-docs with GitHub Actions. This setup will automatically … Read more

Getting Started Using Terraform Tests with Azure example

I have written a lot of Terraform over the years and learned the importance of testing Terraform configurations. Testing is often overlooked but is crucial for ensuring the reliability and correctness of your infrastructure code. In this blog post, I will show you how to write Terraform Tests along with an Azure example. Why Test … Read more

Getting Started with Terraform Preconditions

Terraform preconditions enforce specific criteria before managing resources, enhancing reliability and reducing deployment risks. By integrating preconditions within the lifecycle block, users can enforce checks, preventing potential errors. Benefits include improved consistency, error prevention, compliance, and documentation. Simplifying preconditions, using variables, and thoroughly testing are key practices. Ultimately, preconditions bolster infrastructure integrity while maintaining manageable configurations.

Improve Terraform Configurations with Variable Validation

Terraform variable validation, introduced in version 0.13, enables developers to enforce specific criteria for variable inputs, thus preventing errors and misconfigurations in resources. This includes defining conditions and error messages for various variables. Best practices emphasise clear messaging and the use of Terraform functions to improve reliability and maintainability in configurations.