Terrafile Version Locking

Terraspace provides a lot of control over version locking.


Here’s a Terrafile example with the different version options:

# GitHub repo
mod "example1", source: "boltops-tools/terraform-aws-s3", version: "master"
mod "example2", source: "boltops-tools/terraform-aws-s3", branch: "master"
mod "example3", source: "boltops-tools/terraform-aws-s3", ref: "3a414a39"
mod "example4", source: "boltops-tools/terraform-aws-s3", sha: "c1d04816"
mod "example5", source: "boltops-tools/terraform-aws-s3", tag: "v0.1.0"

# Terraform registry
mod "sg", source: "terraform-aws-modules/security-group/aws", version: "3.10.0"

Run terraspace bundle to download the modules:

$ terraspace bundle
Bundling with Terrafile...
Exporting example1
Exporting example2
Exporting example3
Exporting example4
Exporting example5
Exporting sg
Modules saved to vendor/modules

To list the modules:

$ terraspace list --type module

A Terrafile.lock is also generated to lock the versions. For strict versions like tag: "v0.1.0" the versions are locked as-is. For “loose” versions like branch: "master" the latest current version is snapshotted. You can update these versions with:

terraspace bundle update

This updates the Terrafile.lock versions.

Version Locking with Different Environments like Dev and Prod

Somewhat related documentation that you may be interested is the Patterns Different Versions Docs. It show how to use different versions of modules for different environments like dev and prod.