github gruntwork-io/terragrunt v0.99.0

15 hours ago

🛠️ Breaking Changes

Undocumented behavior removed

We have removed several undocumented features that served as temporary stop-gaps to facilitate experimentation.

The following environment variables no longer affect Terragrunt behavior:

  • TERRAGRUNT_TEMP_QUOTE_NULL
  • TMP_UNDOCUMENTED_REPORT_PADDER
  • TMP_UNDOCUMENTED_REPORT_UNIT_COLORIZE
  • TMP_UNDOCUMENTED_COLORIZE_DEFAULT_SUMMARY_PADDING

Internal tflint deprecated

Terragrunt has been shipping with a version of tflint compiled into the binary to allow for more convenient usage without installing tflint directly. However due to the adoption of a BUSL license in tflint, the version included in Terragrunt was frozen.

We have now deprecated use of the internal tflint hook, and will be fully removing it in the future. We still do work to integrate with tflint; Including automatically running tflint init and passing through variables. For now using the internal version will only emit a warning, and you can opt in to the future behavior today in one of two ways:

  • The legacy-internal-tflint strict control (recommended)

  • Adding the --terragrunt-external-tflint flag to your hook usage (this also works in previous versions of Terragrunt); this flag is stripped prior to running the external tflint. Example:

    terraform {
        before_hook "tflint" {
        commands = ["apply", "plan"]
        execute = ["tflint", "--terragrunt-external-tflint", "--minimum-failure-severity=error", "--config", "custom.tflint.hcl"]
      }
    }

✨ New Features

Depth control for dependency traversal

Graph-based expressions in the --filter flag now support limiting the depth of graph traversal they perform when discovering units. You can now append/prepend a number to the end of a graph expression ellipsis to control how deep in graph traversal Terragrunt will look for dependents/dependencies.

e.g.

# Find 'service' and only its direct dependencies (1 level deep)
terragrunt find --filter 'service...1'

# Find 'vpc' and only components that directly depend on it (1 level)
terragrunt find --filter '1...vpc'

# Find 'db' with 2 levels of dependencies and 1 level of dependents
terragrunt find --filter '1...db...2'

This should result in significant performance and usability improvements for users with large dependency graphs.

Special thanks to @sofianedjerbi for contributing this feature!

Run report schema extended

The run report has been extended to include the Ref, Cmd and Args fields when relevant to a run.

  • The Ref field will be populated for runs performed in Git worktrees due to their discovery from a Git-based expression in a filter.
  • The Cmd field will contain the sub command of OpenTofu/Terraform executed in a run (e.g. plan , apply) and the Args field will contain the arguments passed to that subcommand (e.g. -auto-approve, -destroy). These can differ between runs when using Git-based expressions, as additions or modifications of units between Git references can result in a plan or apply, whereas removal of units can result in plan -destroy or apply -destroy .

🧪 Experiments Updated

IaC Engines Updated to use v0.1.0 of terragrunt-engine-go

The iac-engine experiment has been updated to use v0.1.0 of the terragrunt-engine-go library.

Given that this is still experimental functionality, no effort has been made to maintain backwards compatibility with existing engines. If you are currently using the OpenTofu engine, you will need to upgrade to v0.1.0 of the engine. The Terraform engine will be updated in the near future.

This update pulls in changes to the protobuf schema used in communication between Terragrunt and IaC engines to give engines the ability to log messages in Terragrunt and reduces the overall size of messages passed to Terragrunt for stdout/stderr messages.

⚙️ Process Updates

Curl to Bash script available

In addition to all the other installation mechanisms available to install Terragrunt, a convenient curl to bash script has been added to minimize the friction in installing and getting started with Terragrunt, and removing any dependency on third party tools if you don’t want to use them.

curl -sL https://terragrunt.gruntwork.io/install | bash

The installation can be customized, with full customization options available via the --help flag.

curl -sL https://terragrunt.gruntwork.io/install | bash -s -- --help

In addition to providing this script, the ASDF plugin for Terragrunt has been updated to automatically perform signature verification on an opt-out basis for any version of Terragrunt equal or newer to v0.98.0. The Terragrunt entry in the Aqua registry has been updated to do the same, meaning mise users will automatically benefit from this as well.

If you don’t want to use the curl to bash script, or any of the other distribution methods available, the instructions for performing signature verification manually have been updated in the installation documentation as well.

📖 Documentation Updates

OpenTofu/Terraform compatibility matrix now available as API

In addition to providing a compatibility matrix in the Supported Versions documentation, compatibility verification is also available via an API endpoint here:

https://terragrunt.gruntwork.io/api/v1/compatibility

See the compatibility API documentation for more details, including availability of query string parameters for filtering responses.

JSON schema for --auth-provider-cmd published

A JSON schema has been published for the schema expected for the stdout of commands invoked using --auth-provider-cmd. You can access the schema here.

You can use tools like this JSON schema validator or other simple utilities to programmatically validate that the stdout of JSON responses in your commands invoked by --auth-provider-cmd obey the expected schema.

🐛 Bug Fixes

Exit Codes for run --all more consistent

Fixed an issue where run --all incorrectly returned a 0 exit code when individual units failed.

Automatic retry for provider queries

To address intermittent errors in queries to the OpenTofu/Terraform provider registries, we expanded the automatic retry logic to include timeouts from provider registries.

What's Changed

New Contributors

Full Changelog: v0.98.0...v0.99.0

Don't miss a new terragrunt release

NewReleases is sending notifications on new releases.