Terraform Providers: Proxmox Edition

I responded to a question recently with someone having trouble creating a dynamically variable number of storage devices for a Proxmox VM using the Telmate/proxmox provider: Is there any way to turn those scsi<N> blocks into a loop or something like that? I tried dynamic, but that only works if they all have the same … Continue reading Terraform Providers: Proxmox Edition

Terraform Cross-Object Reference Limitations

Someone asked me for help with a provider that I never used before which led me to all sorts of recommendations and an issue that I will be opening. However, while writing up some examples of what could be done if they improved the provider, I ran across the next step in my unending dissatisfaction … Continue reading Terraform Cross-Object Reference Limitations

Handling Credential Zero

Managing secrets is a criicial part of any infrastructure. In this post, we'll discuss how to handle the "credential zero" problem in Infrastructure as Code. What is Credential Zero? Credential Zero is the concept that there is a point in your infrastructure where you need to provide a secret to get access to other secrets. … Continue reading Handling Credential Zero

Terraform v2 Ideas

Terraform was first released in 2014 and has been a staple in the infrastructure as code (IaC) community. I recently passed the Terraform Authoring and Operations Professional certification and I have been teaching Terraform for a few years and have helped a great many Fortune 500 companies with adoption. This has led me to think … Continue reading Terraform v2 Ideas

Evaporation and Barrels

Evaporation may invoke thoughts of the mundane. It is actually rather fascinating within physics. It is the phase change of a liquid into a gas that is experienced everyday. It allows for our hydrological cycle, temperature regulation in our bodies, cooling our of physical spaces, and the distillation of spirits. Water boils at 100C/212F, but … Continue reading Evaporation and Barrels

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