Terragrunt supports operating in a mode referred to as “Experiment Mode”.
Experiment Mode is a set of controls that can be enabled to opt-in to experimental features before they’re stable. These features are subject to change and may be removed or altered at any time. They generally provide early access to new features or changes that are being considered for inclusion in future releases.
Those experiments will be documented here so that you know the following:
Sometimes, the criteria for an experiment to be considered stable is unknown, as there may not be a clear path to stabilization. In that case, this will be noted in the experiment documentation, and collaboration with the community will be encouraged to help determine the future of the experiment.
The simplest way to enable experiment mode is to set the experiment-mode flag.
This will enable experiment mode for all Terragrunt commands, for all experiments (note that this isn’t generally recommended, unless you are following Terragrunt development closely and are prepared for the possibility of breaking changes).
terragrunt plan --experiment-mode
You can also use the environment variable, which can be more useful in CI/CD pipelines:
TERRAGRUNT_EXPERIMENT_MODE='true' terragrunt plan
Instead of enabling experiment mode, you can also enable specific experiments by setting the experiment flag to a value that’s specific to a experiment. This can allow you to experiment with a specific unstable feature that you think might be useful to you.
terragrunt plan --experiment symlinks
Again, you can also use the environment variable, which can be more useful in CI/CD pipelines:
TERRAGRUNT_EXPERIMENT='symlinks' terragrunt plan
You can also enable multiple experiments at once with a comma delimited list.
TODO: Will add an example here once there’s more than one officially supported experiment. The existing experiments are scattered throughout configuration, so they need to be pulled into this system first.
The following strict mode controls are available:
symlinks
Support symlink resolution for Terragrunt units.
symlinks
- What it doesBy default, Terragrunt will ignore symlinks when determining which units it should run. By enabling this experiment, Terragrunt will resolve symlinks and add them to the list of units being run.
symlinks
- How to provide feedbackProvide your feedback on the Experiment: Symlinks discussion.
symlinks
- Criteria for stabilizationTo stabilize this feature, the following need to be resolved, at a minimum:
stacks
Support for Terragrunt stacks.
stacks
- What it doesEnable stack
command to manage Terragrunt stacks.
stacks
- How to provide feedbackShare your experience with the stack
command in the Stacks RFC.
Feedback is crucial for ensuring the feature meets real-world use cases. Please include:
stacks
- Criteria for stabilizationTo transition the stacks
feature to a stable release, the following must be addressed:
stack run *
commandstack output
commands to extend stack-level operations.plan
, apply
, and destroy
operations.--parallel
), especially for stacks with dependencies.cli-redesign
Support for the new Terragrunt CLI design.
cli-redesign
- What it doesEnable features from the CLI Redesign RFC.
This includes:
run
command.exec
command.cli-redesign
- How to provide feedbackShare your experience with these features in the CLI Redesign RFC. Feedback is crucial for ensuring the feature meets real-world use cases. Please include:
cli-redesign
- Criteria for stabilizationTo transition cli-redesign
features to a stable release, the following must be addressed:
run
command.
run
command (e.g., terragrunt run plan
, terragrunt run -- plan -no-color
).--all
flag.--graph
flag.exec
command.--terragrunt-
prefixed flags so that they no longer need the prefix.hcl
command, replacing commands like hclfmt
, hclvalidate
and validate-inputs
.backend
command.render
command.info
command.dag
command.find
command.
find
without flags.find
with colorful output.find
with --format=json
flag.find
with stdout redirection detection.find
with --hidden
flag.find
with --sort=alpha
flag.find
with --sort=dag
flag.find
with the exclude
block used to exclude units from the search.symlinks
experiment to support finding units/stacks via symlinks.find
with --sort=dag
flag on all the fixtures in the test/fixtures
directory.list
command.
list
without flags.list
with colorful output.list
with --format=tree
flag.list
with --format=long
flag.list
with stdout redirection detection.list
with --hidden
flag.list
with --sort=alpha
flag.list
with --sort=dag
flag.list
with --group-by=fs
flag.list
with --group-by=dag
flag.list
with the exclude
block used to exclude units from the search.symlinks
experiment to support listing units/stacks via symlinks.list
with --sort=dag
flag on all the fixtures in the test/fixtures
directory.cas
Support for Terragrunt Content Addressable Storage (CAS).
cas
- What it doesAllow Terragrunt to store and retrieve state files from a Content Addressable Storage (CAS) system.
At the moment, the CAS is only used to speed up catalog cloning, but in the future, it can be used to store more content.
cas
- How to provide feedbackShare your experience with this feature in the CAS Feedback GitHub Discussion. Feedback is crucial for ensuring the feature meets real-world use cases. Please include:
cas
- Criteria for stabilizationTo transition the cas
feature to a stable release, the following must be addressed: