All posts by Martin Atkins
Terraform 0.14 Introduces a Dependency Lock File for Providers
Terraform 0.14 Introduces a Dependency Lock File for Providers

New dependency lock files in Terraform 0.14 help duplicate previous runs so they use exactly the same provider versions.

HashiCorp Terraform 0.12 Preview: Reliable JSON Syntax
HashiCorp Terraform 0.12 Preview: Reliable JSON Syntax

As part of the lead up to the release of Terraform 0.12, we are publishing a series of feature preview blog posts. The post this week is on bringing a clear 1:1 mapping between JSON and HCL. Terraform has accepted JSON as configuration in addition to HCL since version 0.1. However, the implementation of this prior to version 0.12 had many shortcomings. The HCL improvements in Terraform 0.12 include a clear 1:1 mapping between HCL and JSON, including much clearer error messages and support for comments! These improvements make it easy to work with Terraform using HCL, JSON, or both.

HashiCorp Terraform 0.12 Preview: Template Syntax
HashiCorp Terraform 0.12 Preview: Template Syntax

As part of the lead up to the release of Terraform 0.12, we are publishing a series of feature preview blog posts. The post this week is on the addition of the template syntax. Terraform has always supported basic string interpolation using the ${...} syntax. Terraform 0.12 extends this syntax to support loops and conditionals that work directly within any value in a Terraform configuration.

HashiCorp Terraform 0.12 Preview: Rich Value Types
HashiCorp Terraform 0.12 Preview: Rich Value Types

As part of the lead up to the release of Terraform 0.12, we are publishing a series of feature preview blog posts. The post this week is on the addition of rich value types in variables and outputs. Terraform variables and outputs today support basic primitives and simple lists and maps. Lists and maps in particular have surprising limitations that lead to unintuitive and frustrating errors. Terraform 0.12 allows the use of arbitrarily complex values for both input variables and outputs, and the types of these values can be exactly specified.

Terraform 0.12: Lifting Conditional Limitations & Adding Null
Terraform 0.12: Lifting Conditional Limitations & Adding Null

Learn about HashiCorp Terraform 0.12's conditional operator improvements and conditionally omitted arguments.

HashiCorp Terraform 0.12 Preview: Generalized Splat Operator
HashiCorp Terraform 0.12 Preview: Generalized Splat Operator

As part of the lead up to the release of Terraform 0.12, we are publishing a series of feature preview blog posts. The post this week is on the new generalized splat operator. Terraform has always supported a special syntax to obtain a list of attribute values from a set of resources created using the count argument, known as a "splat expression." In Terraform 0.12, we've generalized this to work with any list values and call it the "splat operator."

HashiCorp Terraform 0.12 Preview: For and For-Each
HashiCorp Terraform 0.12 Preview: For and For-Each

Learn how the For and For Each expressions work in Terraform.

HashiCorp Terraform 0.12 Preview: First-Class Expressions
HashiCorp Terraform 0.12 Preview: First-Class Expressions

As part of the lead up to the release of Terraform 0.12, we are publishing a series of feature preview blog posts. The post this week is on first-class expressions. Terraform uses expressions for dynamic configuration and dependencies. First-class expressions enable variables and operations to be performed outside of strings such as var.foo. In Terraform 0.11 and earlier all expressions were required to be part of interpolations in existing strings, such as "${var.foo}". This simple change has far-ranging benefits, covered in the blog examples.

HashiCorp Terraform 0.11
HashiCorp Terraform 0.11

We are pleased to announce the release of HashiCorp Terraform 0.11. Terraform enables you to safely and predictably create, change, and improve infrastructure via declarative code.

HashiCorp Terraform Provider Versioning
HashiCorp Terraform Provider Versioning

In HashiCorp Terraform 0.10, Terraform was split into two logical components: Terraform Core and Terraform Providers. A major motivation for this change was the acknowledgement that provider development has a different scope and development speed. The various providers are constantly changing, and it's always been frustrating when a major new feature in your chosen platform is delayed in Terraform because of the need to coordinate releases with other providers and with Core. A more mundane aspect of separate provider releases is separate provider version numbers.