Terraform Provider Functions

Have you ever wished for a function to exist in Terraform but it simply wasn't there? Fret no more! Terraform 1.8 was released last week and includes the general availability of Provider Functions. This feature allows you to write your own functions in Go and use them in your Terraform configuration. This is a game … Continue reading Terraform Provider Functions

Terraform Best Practices: Variables

I've previously discussed the concept of not hardcoding values in your Terraform configuration files. This is a best practice that is generally agreed upon by the Terraform community. However, there are some nuances to this best practice that are worth discussing. In this post, I'll cover some best practices around fully utilizing variables in your … Continue reading Terraform Best Practices: Variables

Terraform Best Pratices: Defining Modules

Modularity in programming is a crucial capability for creating extensible and reusable pieces of code. It helps to reduce the volume of code, which promotes maintainability. It takes many forms, from initially establishing functions, subroutines, and methods, to bundling them into libraries, packages, or modules that are redistributable. In Terraform, there are two forms of … Continue reading Terraform Best Pratices: Defining Modules

GitHub Actions Release Flow

I have been working with numerous customers lately using Release Flow to support highly reusable Terraform deployments. There are a number of practices that have been in place within the community, some of which I will proclaim are bad (and have done so repeatedly and publicly). The practice described in "Terraform Up and Running" whereby … Continue reading GitHub Actions Release Flow

Terraform Best Practices: Versioning

Versioning is an important topic when authoring any kind of code, and Terraform is no exception. We'll discuss the best practices for versioning Terraform code. We'll also discuss how to use versioning to manage the lifecycle of your infrastructure. Problems Versioning has presented challenges for many platforms and it includes aspects of managing dependencies and … Continue reading Terraform Best Practices: Versioning

Terraform Best Practices: Files

A fantastic feature of Terraform is that the code is simply a set of files in a directory with the *.tf extension (or the *.tf.json extension). It doesn't include subdirectories and we would call this our "working directory" when we're using our code editor or we're in the shell. We can check the directory with … Continue reading Terraform Best Practices: Files

Terraform Best Practices: Do Not Hard Code Values

I want to start capturing some best practices with the intent of keeping them simple and slowly building them up in the coming weeks. I get to observe so many people learn Terraform and I see patterns emerge as better understanding occurs. How I get to observe people learn Terraform: My primary role at CDW … Continue reading Terraform Best Practices: Do Not Hard Code Values

The Problem with On-Demand Heating and Cooling

I have been interested in energy efficiency since I was very young. Learning about physics and improving systems is just ingrained in my mind. A very popular idea starting about 20 years ago was the concept of using an on-demand tankless water heater rather than heating water to temperature and storing it for later use. … Continue reading The Problem with On-Demand Heating and Cooling

Terraform Cloud Agent on Apple Silicon

Running self-hosted agents for Terraform Cloud is a great option for facilitating access to privately hosted API endpoints. To perform a test in Terraform Cloud, an agent pool can be created and an agent token generated to register the agent with Terraform Cloud. However, the agent software is only built for Linux on the x86_64 … Continue reading Terraform Cloud Agent on Apple Silicon