Skip to content

Releases: gruntwork-io/terragrunt

v0.69.4-alpha2024120101

01 Dec 20:16
6dde255
Compare
Choose a tag to compare
Pre-release

What's Changed

  • added support for errors block
errors {
    # Retry block for transient errors
    retry "retry_network" {
        retryable_errors = [".*Error: network timeout.*"]
        max_attempts = 3
        sleep_interval_sec = 5
    }

    # Ignore block for non-critical errors
    ignore "ignore_warnings" {
        ignorable_errors = [
            ".*Warning: non-critical issue.*"
        ]
        message = "Ignoring non-critical warnings"
    }
}

RFC: #3134

Full Changelog: v0.69.3...v0.69.4-alpha2024120101

v0.69.3

28 Nov 21:27
d8313f9
Compare
Choose a tag to compare

What's Changed

  • Fixing an issue when error_hook processing only takes stderr into account and ignores stdout TF output.
  • Displaying stack trace only at log level trace, e.g. --terragrunt-log-level trace.

Full Changelog: v0.69.2...v0.69.3

v0.69.2

27 Nov 17:50
8e65d1e
Compare
Choose a tag to compare

Updated CLI args, config attributes and blocks

Breaking Changes

  • OpenTofu/Terraform stdout and stderr is wrapped in JSON by default with --terragurnt-log-format json flag. In other words, the previous behavior with the --terragrunt-json-log --terragrunt-tf-logs-to-json flags is now equivalent to --terragrunt-log-format json and the previous behavior with the --terragrunt-json-log is now equivalent to --terragrunt-log-format json --terragrunt-forward-tf-stdout.
  • Renaming log keys in --terragurnt-log-format json and --terragurnt-log-format key-value formats:
    • tfpath -> tf-path
    • workingDir -> working-dir
    • executedCommandArgs -> tf-command-args

What's Changed

New Contributors

Full Changelog: v0.69.1...v0.69.2

v0.69.1

22 Nov 20:48
f3210dd
Compare
Choose a tag to compare

New Feature

Using the OpenTofu/Terraform -detailed-exitcode flag with the run-all command results in an aggregate exit code being returned, rather than the exit code of any particular unit.

The algorithm for determining the aggregate exit code is as follows:

If any unit throws a 1, Terragrunt will throw a 1.
If any unit throws a 2, but nothing throws a 1, Terragrunt will throw a 2.
If nothing throws a non-zero, Terragrunt will throw a 0.

What's Changed

Full Changelog: v0.69.0...v0.69.1

v0.69.0

19 Nov 20:34
3624cc9
Compare
Choose a tag to compare

TFLint update

The internal version of TFLint has been updated from v0.47.0 to v0.50.3.

Given that this might result in breakage for users with tflint hooks, this is being released as a new minor release.

What's Changed

Full Changelog: v0.68.17...v0.69.0

v0.68.17

19 Nov 18:56
51cd2ff
Compare
Choose a tag to compare

Updated CLI args, config attributes and blocks

  • terraform

What's Changed

  • feat: Introduced support for detecting and handling symlinked modules, ensuring seamless module discovery.
  • docs: Quick start documentation update.
  • docs: Improved documentation for feature and exclude.

Related links

Full Changelog: v0.68.16...v0.68.17

v0.68.16

19 Nov 15:46
533bc11
Compare
Choose a tag to compare

Updated CLI args, config attributes and blocks

  • exclude
  • feature

New Feature: exclude configuration block

The exclude configuration block allows for dynamic exclusion of units from the run queue, similar to the now deprecated skip attribute. The exclude configuration block allows for more control over exactly how units are excluded from the run queue, and integrates very well with the feature block introduced in v0.68.9.

For more information, read the docs.

Example

# Exclude configurations allowing for dynamically determining when and how to exclude execution of nodes in the Terragrunt graph
exclude {
    if = feature.feature_name.value # Boolean expression that determines if the node should be excluded.
    actions = ["all"] # Actions to exclude when active. Other options might be ["plan", "apply", "all_except_output"], etc
    exclude_dependencies = feature.feature_name.value # Exclude dependencies of the node as well
}

Demo

tg-flags-exclude

What's Changed

  • feat: Introduced a new exclude block, enabling users to define more advanced and flexible criteria for excluding specific units, enhancing customization and control over unit selection processes.
  • fix: Fixed handling of empty feature blocks
  • fix: Fix spelling of RenderJSONithMetadata as RenderJSONWithMetadata

Related links

v0.68.15

18 Nov 21:13
d8adfda
Compare
Choose a tag to compare

Updated CLI args, config attributes and blocks

  • --terragrunt-log-format [ bare | pretty | json | key-value ]
  • --terragrunt-log-custom-format "%time %level %prefix %msg"

Feature Description

Using the --terragrunt-log-custom-format <format> flag you can customize the Terragrunt logs. Make sure to read Custom Log Format for syntax details.

Examples

--terragrunt-log-format bare

1  tmuxinator local 2024-11-19 at 11 09 30 AM

--terragrunt-log-format key-value

1  tmuxinator local 2024-11-19 at 11 10 05 AM

--terragrunt-log-format json

1  tmuxinator local 2024-11-19 at 11 10 55 AM

--terragrunt-log-format pretty

1  tmuxinator local 2024-11-19 at 11 11 22 AM

--terragrunt-log-custom-format "%level(format=tiny,case=upper,color=preset) %interval %prefix(path=short-relative,color=gradient,suffix=' ')%msg(path=relative)"

1  tmuxinator local 2024-11-19 at 11 19 18 AM

"%time(format='H:m:s',color=yellow) %level(format=short,case=upper,color=preset) %prefix(color=gradient,suffix=' ',align=right)%msg(path=relative)"

1  tmuxinator local 2024-11-19 at 11 27 51 AM

--terragrunt-log-custom-format "%(content='time=',color=magenta)%time %(content='level=',color=light-blue)%level %(content='msg=',color=green)%msg"

1  tmuxinator local 2024-11-19 at 11 41 33 AM

What's Changed

Full Changelog: v0.68.14...v0.68.15

v0.68.15-beta2024111501

15 Nov 20:27
806a153
Compare
Choose a tag to compare
Pre-release

Updated CLI args, config attributes and blocks

  • exclude

What's Changed

  • Introduced a new exclude block, enabling users to define more advanced and flexible criteria for excluding specific units, enhancing customization and control over unit selection processes.

Example:

# Exclude configurations allowing for dynamically determining when and how to exclude execution of nodes in the Terragrunt graph
exclude {
    if = feature.feature_name.value # Boolean expression that determines if the node should be excluded.
    actions = ["all"] # Actions to exclude when active. Other options might be ["plan", "apply", "all_except_output"], etc
    exclude_dependencies = feature.feature_name.value # Exclude dependencies of the node as well
}

Relevant RFC

#3134

v0.68.14

15 Nov 15:37
cb85244
Compare
Choose a tag to compare

Updated CLI args, config attributes and blocks

  • terragrunt-queue-include-units-reading
  • terragrunt-auth-provider-cmd

terragrunt-queue-include-units-reading Updates

The terragrunt-queue-include-units-reading flag is now results in a super set of functionality provided by the terragrunt-modules-that-include flag.

Using either will include all units that include particular Terragrunt configurations, while the terragrunt-queue-include-units-reading will also add in files that are read by HCL functions.

For more information (including limitations of the flag), read the docs.

terragrunt-auth-provider-cmd Updates

The terragrunt-auth-provider-cmd flag is now capable of supporting AWS role assumptions in addition to supporting the setting of explicit AWS credentials, and generic environment variables.

This allows users to configure Terragrunt to dynamically assume different AWS roles at runtime, depending on the context of the unit.

This support includes support for role assumption using the AssumeRoleWithWebIdentity API, which allows for dynamic assumption of OIDC roles in CI platforms like GitHub Actions, GitLab CI/CD and CircleCI.

For more information, read the docs.

What's Changed

Full Changelog: v0.68.13...v0.68.14