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 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

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

Azure Bastion On-demand

Azure Bastion is a fantastic service for securely accessing virtual machines deployed in Azure, relying on the capabilites of Azure AD and the Azure portal like Multi-Factor Authentication. In terms of cost, it isn't prohibitive for an organization that needs such a capability. However, when you're working in a significantly constrained subscription for the purposes … Continue reading Azure Bastion On-demand

Embrace at Least Some of Immutable Infrastructure

With respect to immutability, the first exposure many folks in technology experience with with arrays. An array is a contiguous space of memory for elements of the same time to be groups together. We can quickly read the element because they're accessed sequentially. However, this adjacency limits our ability to expand because any new elements … Continue reading Embrace at Least Some of Immutable Infrastructure

Creating a Git Repo with Terraform In Mind

Creating a Git repository is an easy enough task: mkdir my-new-repo cd my-new-repo git init If this is just a local repository, you might be safe to just start using it. However, if there is any chance that this repository is going to be stored in a platform, whether it is public or private, it … Continue reading Creating a Git Repo with Terraform In Mind