Terrafile Version Locking

Terraspace provides a lot of control over version locking.

Example

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
vendor/modules/example1
vendor/modules/example2
vendor/modules/example3
vendor/modules/example4
vendor/modules/example5
vendor/modules/sg

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.