├── .circleci └── config.yml ├── .coderabbit.yaml ├── .codespellrc ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── 01-bug_report.md │ ├── 02-rfc.yml │ ├── 03-feature-request.md │ └── 04-iac-engine-bug-report.md ├── cloud-nuke │ └── config.yml ├── dependabot.yml ├── pull_request_template.md ├── scripts │ ├── announce-release.sh │ └── setup │ │ ├── engine.sh │ │ ├── gcp.sh │ │ ├── generate-mocks.sh │ │ ├── generate-secrets.sh │ │ ├── provider-cache.sh │ │ ├── run-setup-scripts.sh │ │ ├── sops.sh │ │ ├── ssh.sh │ │ ├── terraform-switch-latest-oss.sh │ │ ├── terraform-switch-latest.sh │ │ ├── terraform-switch.sh │ │ ├── tofu-switch.sh │ │ └── windows-setup.ps1 └── workflows │ ├── announce-release.yml │ ├── base-test.yml │ ├── build-no-proxy.yml │ ├── build.yml │ ├── cloud-nuke.yml │ ├── codespell.yml │ ├── flake.yml │ ├── integration-test.yml │ ├── license-check.yml │ ├── lint.yml │ ├── markdownlint.yml │ ├── oidc-integration-test.yml │ ├── pages.yml │ ├── precommit.yml │ ├── stale.yml │ └── strict-lint.yml ├── .gitignore ├── .golangci.yml ├── .gon_amd64.hcl ├── .gon_arm64.hcl ├── .licensei.toml ├── .markdownlint-cli2.yaml ├── .pre-commit-config.yaml ├── .sonarcloud.properties ├── .strict.golangci.yml ├── CODEOWNERS ├── LICENSE.txt ├── Makefile ├── README.md ├── SECURITY.md ├── _ci └── verify-release-assets.sh ├── awshelper ├── config.go ├── config_test.go ├── policy.go └── policy_test.go ├── cli ├── app.go ├── app_test.go ├── commands │ ├── aws-provider-patch │ │ ├── aws-provider-patch.go │ │ ├── aws-provider-patch_test.go │ │ ├── cli.go │ │ └── errors.go │ ├── backend │ │ ├── bootstrap │ │ │ ├── bootstrap.go │ │ │ └── cli.go │ │ ├── cli.go │ │ ├── delete │ │ │ ├── cli.go │ │ │ └── delete.go │ │ └── migrate │ │ │ ├── cli.go │ │ │ └── migrate.go │ ├── catalog │ │ ├── catalog.go │ │ ├── cli.go │ │ └── tui │ │ │ ├── command │ │ │ └── scaffold.go │ │ │ ├── components │ │ │ └── buttonbar │ │ │ │ └── buttonbar.go │ │ │ ├── delegate.go │ │ │ ├── keys.go │ │ │ ├── model.go │ │ │ ├── tui.go │ │ │ ├── update.go │ │ │ └── view.go │ ├── commands.go │ ├── common │ │ ├── errors.go │ │ ├── graph │ │ │ ├── cli.go │ │ │ └── graph.go │ │ └── runall │ │ │ ├── cli.go │ │ │ ├── errors.go │ │ │ ├── runall.go │ │ │ └── runall_test.go │ ├── dag │ │ ├── cli.go │ │ └── graph │ │ │ ├── cli.go │ │ │ └── cli_test.go │ ├── deprecated.go │ ├── exec │ │ ├── cli.go │ │ ├── exec.go │ │ └── options.go │ ├── find │ │ ├── cli.go │ │ ├── find.go │ │ ├── find_test.go │ │ └── options.go │ ├── hcl │ │ ├── cli.go │ │ ├── format │ │ │ ├── cli.go │ │ │ ├── format.go │ │ │ ├── format_test.go │ │ │ └── testdata │ │ │ │ └── fixtures │ │ │ │ ├── a │ │ │ │ ├── b │ │ │ │ │ └── c │ │ │ │ │ │ ├── d │ │ │ │ │ │ ├── e │ │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ │ └── services.hcl │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── expected.hcl │ │ │ │ ├── ignored │ │ │ │ ├── .gitignore │ │ │ │ ├── .history │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── .terragrunt-cache │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── terragrunt.hcl │ │ └── validate │ │ │ ├── cli.go │ │ │ ├── validate.go │ │ │ └── validate_test.go │ ├── help │ │ └── cli.go │ ├── info │ │ ├── cli.go │ │ ├── print │ │ │ ├── cli.go │ │ │ └── print.go │ │ └── strict │ │ │ └── command.go │ ├── list │ │ ├── cli.go │ │ ├── list.go │ │ ├── list_test.go │ │ └── options.go │ ├── output-module-groups │ │ ├── cli.go │ │ └── output-module-groups.go │ ├── render │ │ ├── cli.go │ │ ├── options.go │ │ ├── render.go │ │ └── render_test.go │ ├── run │ │ ├── cli.go │ │ ├── cli_test.go │ │ ├── context.go │ │ ├── creds │ │ │ ├── getter.go │ │ │ └── providers │ │ │ │ ├── amazonsts │ │ │ │ └── provider.go │ │ │ │ ├── externalcmd │ │ │ │ └── provider.go │ │ │ │ └── provider.go │ │ ├── debug.go │ │ ├── download_source.go │ │ ├── download_source_test.go │ │ ├── errors.go │ │ ├── file_copy_getter.go │ │ ├── flags.go │ │ ├── help.go │ │ ├── hook.go │ │ ├── run.go │ │ ├── run_test.go │ │ ├── target.go │ │ ├── test-fixtures │ │ │ ├── dir-with-no-files │ │ │ │ └── .gitignore │ │ │ ├── dir-with-no-terraform │ │ │ │ └── main.yaml │ │ │ ├── dir-with-terraform-and-tofu-json │ │ │ │ ├── main.tf.json │ │ │ │ └── main.tofu.json │ │ │ ├── dir-with-terraform-and-tofu │ │ │ │ ├── main.tf │ │ │ │ └── main.tofu │ │ │ ├── dir-with-terraform-json │ │ │ │ └── main.tf.json │ │ │ ├── dir-with-terraform │ │ │ │ └── main.tf │ │ │ ├── dir-with-tofu-json │ │ │ │ └── main.tofu.json │ │ │ └── dir-with-tofu │ │ │ │ └── main.tofu │ │ ├── version_check.go │ │ ├── version_check_test.go │ │ └── version_command.go │ ├── scaffold │ │ ├── cli.go │ │ ├── scaffold.go │ │ └── scaffold_test.go │ ├── shortcuts.go │ ├── stack │ │ ├── cli.go │ │ ├── output.go │ │ ├── output_test.go │ │ └── stack.go │ └── version │ │ └── cli.go ├── flags │ ├── deprecated_flag.go │ ├── error_handler.go │ ├── errors.go │ ├── flag.go │ ├── flag_opts.go │ ├── flag_test.go │ ├── global │ │ └── flags.go │ └── prefix.go ├── help.go └── help_test.go ├── codegen ├── codegen.go ├── errors.go ├── generate.go └── generate_test.go ├── config ├── cache_test.go ├── catalog.go ├── catalog_test.go ├── config.go ├── config_as_cty.go ├── config_as_cty_test.go ├── config_helpers.go ├── config_helpers_test.go ├── config_partial.go ├── config_partial_test.go ├── config_test.go ├── context.go ├── cty_helpers.go ├── dependency.go ├── dependency_test.go ├── engine.go ├── errors.go ├── errors_block.go ├── exclude.go ├── feature_flag.go ├── hclparse │ ├── attributes.go │ ├── block.go │ ├── errors.go │ ├── file.go │ ├── options.go │ └── parser.go ├── include.go ├── include_test.go ├── locals.go ├── locals_test.go ├── parsing_context.go ├── stack.go ├── stack_test.go ├── stack_validation.go ├── stack_validation_test.go ├── util.go ├── variable.go └── variable_test.go ├── configstack ├── errors.go ├── log.go ├── log_test.go ├── module.go ├── module_test.go ├── module_writer.go ├── options.go ├── running_module.go ├── running_module_test.go ├── stack.go ├── stack_test.go └── test_helpers_test.go ├── docs-starlight ├── .gitignore ├── Dockerfile ├── README.md ├── TODO.md ├── astro.config.mjs ├── bun.lock ├── docker-compose.yml ├── mise.toml ├── package.json ├── patches │ └── @astrojs%2Fstarlight@0.31.1.patch ├── public │ ├── d2 │ │ └── docs │ │ │ └── 02-features │ │ │ └── 05-run-queue-0.svg │ ├── favicon.ico │ ├── favicon.svg │ └── robots.txt ├── src │ ├── assets │ │ ├── gruntwork-logo-mark-black.svg │ │ ├── gruntwork-logo-mark-white.svg │ │ ├── horizontal-logo-dark.svg │ │ ├── horizontal-logo-light.svg │ │ ├── img │ │ │ ├── collections │ │ │ │ └── documentation │ │ │ │ │ ├── dependency-graph.png │ │ │ │ │ ├── graph.png │ │ │ │ │ └── promote-immutable-Terraform-code-across-envs.png │ │ │ ├── d2 │ │ │ │ └── docs │ │ │ │ │ └── 02-features │ │ │ │ │ └── 05-run-queue-0.svg │ │ │ └── screenshots │ │ │ │ ├── catalog-screenshot.png │ │ │ │ ├── find-no-color.png │ │ │ │ ├── find.png │ │ │ │ ├── list-long.png │ │ │ │ ├── list-narrow.png │ │ │ │ ├── list-tree.png │ │ │ │ └── list.png │ │ ├── logo-dark.svg │ │ ├── logo-light.svg │ │ └── pipelines.svg │ ├── components │ │ ├── Command.astro │ │ ├── Flag.astro │ │ ├── Header.astro │ │ ├── InstallTab.astro │ │ ├── InstallTabs.astro │ │ ├── ResponsiveTable.astro │ │ ├── SiteTitle.astro │ │ └── SkipLink.astro │ ├── content.config.ts │ ├── content │ │ └── docs │ │ │ ├── 01-getting-started │ │ │ ├── 01-quick-start.mdx │ │ │ ├── 02-overview.mdx │ │ │ ├── 03-install.mdx │ │ │ └── 04-terminology.md │ │ │ ├── 02-features │ │ │ ├── 01-units.mdx │ │ │ ├── 02-stacks.mdx │ │ │ ├── 03-includes.mdx │ │ │ ├── 04-state-backend.mdx │ │ │ ├── 05-run-queue.mdx │ │ │ ├── 06-catalog.md │ │ │ ├── 07-scaffold.md │ │ │ ├── 08-extra-arguments.mdx │ │ │ ├── 09-authentication.md │ │ │ ├── 10-hooks.md │ │ │ ├── 11-auto-init.md │ │ │ ├── 12-runtime-control.md │ │ │ ├── 13-provider-cache-server.md │ │ │ ├── 14-engine.mdx │ │ │ └── 15-cas.md │ │ │ ├── 03-community │ │ │ ├── 01-contributing.mdx │ │ │ ├── 02-support.md │ │ │ └── 03-license.md │ │ │ ├── 04-reference │ │ │ ├── 01-hcl │ │ │ │ ├── 01-overview.mdx │ │ │ │ ├── 02-blocks.mdx │ │ │ │ ├── 03-attributes.mdx │ │ │ │ └── 04-functions.mdx │ │ │ ├── 02-cli │ │ │ │ ├── 01-overview.mdx │ │ │ │ ├── 02-commands │ │ │ │ │ ├── 0-opentofu-shortcuts.md │ │ │ │ │ ├── 0100-run.md │ │ │ │ │ ├── 0200-exec.md │ │ │ │ │ ├── 0500-catalog.md │ │ │ │ │ ├── 0600-scaffold.md │ │ │ │ │ ├── 0700-find.md │ │ │ │ │ ├── 0800-list.md │ │ │ │ │ ├── 1100-render.md │ │ │ │ │ ├── backend │ │ │ │ │ │ ├── 0300-bootstrap.md │ │ │ │ │ │ ├── 0301-migrate.md │ │ │ │ │ │ └── 0302-delete.md │ │ │ │ │ ├── dag │ │ │ │ │ │ └── 1000-graph.md │ │ │ │ │ ├── hcl │ │ │ │ │ │ ├── 0900-fmt.md │ │ │ │ │ │ └── 0901-validate.md │ │ │ │ │ ├── info │ │ │ │ │ │ └── 1200-print.md │ │ │ │ │ └── stack │ │ │ │ │ │ ├── 0400-generate.md │ │ │ │ │ │ ├── 0401-run.md │ │ │ │ │ │ ├── 0402-output.md │ │ │ │ │ │ └── 0403-clean.md │ │ │ │ ├── 98-global-flags.mdx │ │ │ │ └── 99-rules.mdx │ │ │ ├── 03-strict-controls.mdx │ │ │ ├── 04-experiments.md │ │ │ ├── 05-supported-versions.md │ │ │ ├── 06-lock-files.mdx │ │ │ ├── 07-logging │ │ │ │ ├── 01-overview.md │ │ │ │ └── 02-formatting.md │ │ │ └── 08-terragrunt-cache.md │ │ │ ├── 05-troubleshooting │ │ │ ├── 01-debugging.mdx │ │ │ ├── 02-open-telemetry.md │ │ │ └── 03-performance.mdx │ │ │ └── 06-migrate │ │ │ ├── 01-migrating-from-root-terragrunt-hcl.md │ │ │ ├── 02-upgrading-to-terragrunt-0-19-x.md │ │ │ ├── 03-cli-redesign.md │ │ │ ├── 04-terragrunt-stacks.mdx │ │ │ └── 05-bare-include.md │ ├── data │ │ ├── commands │ │ │ ├── backend │ │ │ │ ├── bootstrap.mdx │ │ │ │ ├── delete.mdx │ │ │ │ └── migrate.mdx │ │ │ ├── catalog.mdx │ │ │ ├── dag │ │ │ │ └── graph.mdx │ │ │ ├── exec.mdx │ │ │ ├── find.mdx │ │ │ ├── hcl │ │ │ │ ├── fmt.mdx │ │ │ │ └── validate.mdx │ │ │ ├── info │ │ │ │ └── print.mdx │ │ │ ├── list.mdx │ │ │ ├── opentofu-shortcuts.mdx │ │ │ ├── render.mdx │ │ │ ├── run.mdx │ │ │ ├── scaffold.mdx │ │ │ └── stack │ │ │ │ ├── clean.mdx │ │ │ │ ├── generate.mdx │ │ │ │ ├── output.mdx │ │ │ │ └── run.mdx │ │ └── flags │ │ │ ├── all.mdx │ │ │ ├── auth-provider-cmd.mdx │ │ │ ├── backend-bootstrap-all.mdx │ │ │ ├── backend-bootstrap-config.mdx │ │ │ ├── backend-bootstrap-download-dir.mdx │ │ │ ├── backend-delete-all.mdx │ │ │ ├── backend-delete-config.mdx │ │ │ ├── backend-delete-download-dir.mdx │ │ │ ├── backend-delete-force.mdx │ │ │ ├── backend-migrate-config.mdx │ │ │ ├── backend-migrate-download-dir.mdx │ │ │ ├── backend-migrate-force.mdx │ │ │ ├── backend-require-bootstrap.mdx │ │ │ ├── catalog-no-include-root.mdx │ │ │ ├── catalog-root-file-name.mdx │ │ │ ├── config.mdx │ │ │ ├── dependency-fetch-output-from-state.mdx │ │ │ ├── disable-bucket-update.mdx │ │ │ ├── disable-command-validation.mdx │ │ │ ├── download-dir.mdx │ │ │ ├── engine-cache-path.mdx │ │ │ ├── engine-log-level.mdx │ │ │ ├── engine-skip-check.mdx │ │ │ ├── experiment-mode.mdx │ │ │ ├── experiment.mdx │ │ │ ├── experimental-engine.mdx │ │ │ ├── feature.mdx │ │ │ ├── find-dag.mdx │ │ │ ├── find-dependencies.mdx │ │ │ ├── find-exclude.mdx │ │ │ ├── find-external.mdx │ │ │ ├── find-format.mdx │ │ │ ├── find-hidden.mdx │ │ │ ├── find-include.mdx │ │ │ ├── find-json.mdx │ │ │ ├── graph.mdx │ │ │ ├── hcl-fmt-check.mdx │ │ │ ├── hcl-fmt-diff.mdx │ │ │ ├── hcl-fmt-exclude-dir.mdx │ │ │ ├── hcl-fmt-file.mdx │ │ │ ├── hcl-fmt-stdin.mdx │ │ │ ├── hcl-validate-inputs.mdx │ │ │ ├── hcl-validate-json.mdx │ │ │ ├── hcl-validate-show-config-path.mdx │ │ │ ├── hcl-validate-strict.mdx │ │ │ ├── help.mdx │ │ │ ├── iam-assume-role-duration.mdx │ │ │ ├── iam-assume-role-session-name.mdx │ │ │ ├── iam-assume-role-web-identity-token.mdx │ │ │ ├── iam-assume-role.mdx │ │ │ ├── in-download-dir.mdx │ │ │ ├── inputs-debug.mdx │ │ │ ├── list-dag.mdx │ │ │ ├── list-dependencies.mdx │ │ │ ├── list-external.mdx │ │ │ ├── list-format.mdx │ │ │ ├── list-hidden.mdx │ │ │ ├── list-long.mdx │ │ │ ├── list-tree.mdx │ │ │ ├── log-custom-format.mdx │ │ │ ├── log-disable.mdx │ │ │ ├── log-format.mdx │ │ │ ├── log-level.mdx │ │ │ ├── log-show-abs-paths.mdx │ │ │ ├── no-auto-approve.mdx │ │ │ ├── no-auto-init.mdx │ │ │ ├── no-auto-retry.mdx │ │ │ ├── no-color.mdx │ │ │ ├── no-destroy-dependencies-check.mdx │ │ │ ├── no-stack-generate.mdx │ │ │ ├── non-interactive.mdx │ │ │ ├── parallelism.mdx │ │ │ ├── provider-cache-dir.mdx │ │ │ ├── provider-cache-hostname.mdx │ │ │ ├── provider-cache-port.mdx │ │ │ ├── provider-cache-registry-names.mdx │ │ │ ├── provider-cache-token.mdx │ │ │ ├── provider-cache.mdx │ │ │ ├── queue-construct-as.mdx │ │ │ ├── queue-exclude-dir.mdx │ │ │ ├── queue-exclude-external.mdx │ │ │ ├── queue-excludes-file.mdx │ │ │ ├── queue-ignore-dag-order.mdx │ │ │ ├── queue-ignore-errors.mdx │ │ │ ├── queue-include-dir.mdx │ │ │ ├── queue-include-external.mdx │ │ │ ├── queue-include-units-reading.mdx │ │ │ ├── queue-strict-include.mdx │ │ │ ├── render-all.mdx │ │ │ ├── render-format.mdx │ │ │ ├── render-write.mdx │ │ │ ├── scaffold-no-include-root.mdx │ │ │ ├── scaffold-root-file-name.mdx │ │ │ ├── scaffold-var-file.mdx │ │ │ ├── scaffold-var.mdx │ │ │ ├── source-map.mdx │ │ │ ├── source-update.mdx │ │ │ ├── source.mdx │ │ │ ├── stack-output-format.mdx │ │ │ ├── stack-output-json.mdx │ │ │ ├── stack-output-raw.mdx │ │ │ ├── strict-control.mdx │ │ │ ├── strict-mode.mdx │ │ │ ├── tf-forward-stdout.mdx │ │ │ ├── tf-path.mdx │ │ │ ├── units-that-include.mdx │ │ │ ├── use-partial-parse-config-cache.mdx │ │ │ ├── version.mdx │ │ │ └── working-dir.mdx │ ├── layouts │ │ └── BaseLayout.astro │ ├── lib │ │ └── commands │ │ │ ├── headings │ │ │ └── index.ts │ │ │ └── sidebar │ │ │ └── index.ts │ ├── pages │ │ ├── api │ │ │ └── compatibility.json.ts │ │ ├── docs │ │ │ └── reference │ │ │ │ └── cli │ │ │ │ └── commands │ │ │ │ └── [...slug].astro │ │ └── index.astro │ └── styles │ │ └── global.css ├── tsconfig.json └── vercel.json ├── docs ├── .gitignore ├── .tool-versions ├── CNAME ├── Dockerfile ├── Gemfile ├── Gemfile.lock ├── README.md ├── _config.yml ├── _docs │ ├── 01_getting-started │ │ ├── 01-quick-start.md │ │ ├── 02-overview.md │ │ ├── 03-install.md │ │ └── 04-terminology.md │ ├── 02_features │ │ ├── 01-units.md │ │ ├── 02-stacks.md │ │ ├── 03-includes.md │ │ ├── 04-state-backend.md │ │ ├── 05-run-queue.md │ │ ├── 06-catalog.md │ │ ├── 07-scaffold.md │ │ ├── 08-extra-arguments.md │ │ ├── 09-aws-authentication.md │ │ ├── 10-hooks.md │ │ ├── 11-auto-init.md │ │ ├── 12-runtime-control.md │ │ ├── 13-provider-cache-server.md │ │ ├── 14-engine.md │ │ └── 15-cas.md │ ├── 03_community │ │ ├── 01-contributing.md │ │ ├── 02-support.md │ │ └── 03-license.md │ ├── 04_reference │ │ ├── 01-configuration.md │ │ ├── 02-cli-options.md │ │ ├── 03-built-in-functions.md │ │ ├── 04-config-blocks-and-attributes.md │ │ ├── 05-strict-mode.md │ │ ├── 06-experiments.md │ │ ├── 07-supported-versions.md │ │ ├── 08-lock-file-handling.md │ │ ├── 09-logging.md │ │ ├── 10-log-formatting.md │ │ └── 11-terragrunt-cache.md │ ├── 05_troubleshooting │ │ ├── 01-debugging.md │ │ ├── 02-open-telemetry.md │ │ └── 03-performance.md │ └── 06_migration_guides │ │ ├── 01-migrating-from-root-terragrunt-hcl.md │ │ ├── 02-upgrading_to_terragrunt_0.19.x.md │ │ ├── 03-cli-redesign.md │ │ ├── 04-terragrunt-stacks.md │ │ └── 05-bare-include.md ├── _includes │ ├── banner.html │ ├── built-by.html │ ├── canonical-url.html │ ├── collection_browser │ │ ├── _cta-section.html │ │ ├── _doc-header.html │ │ ├── _doc-page.html │ │ ├── _doc-sidebar.html │ │ ├── _doc-thumb.html │ │ ├── _docs-list.html │ │ ├── _no-search-results.html │ │ ├── _search.html │ │ ├── _sidebar.html │ │ ├── browser.html │ │ └── navigation │ │ │ └── _collection_toc.html │ ├── favicon.html │ ├── footer.html │ ├── get-access.html │ ├── head.html │ ├── header-min.html │ ├── header.html │ ├── links-n-built-by.html │ ├── links-n-get-access.html │ ├── links-n-use-cases.html │ ├── links-section.html │ ├── logo.html │ ├── navbar.html │ ├── scripts.html │ ├── share-meta.html │ ├── styles.html │ └── use-cases-box.html ├── _layouts │ ├── collection-browser-doc.html │ ├── collection-browser.html │ ├── contact.html │ ├── default.html │ ├── post.html │ └── subpage.html ├── _pages │ ├── 404 │ │ └── 404.md │ ├── commercial-support │ │ └── index.html │ ├── contact │ │ ├── _contact-form.html │ │ └── index.html │ ├── cookie-policy │ │ └── index.md │ ├── docs │ │ └── index.html │ ├── index │ │ ├── _built_by.html │ │ ├── _form.html │ │ ├── _header.html │ │ ├── _key-features.html │ │ └── index.html │ └── thanks │ │ └── index.html ├── _posts │ └── .keep ├── assets │ ├── css │ │ ├── bootstrap │ │ │ └── scss │ │ │ │ └── bootstrap.scss │ │ ├── collection_browser.scss │ │ ├── components.scss │ │ ├── global.scss │ │ ├── pages │ │ │ ├── contact.scss │ │ │ ├── cookie-policy.scss │ │ │ ├── home.scss │ │ │ └── support.scss │ │ ├── prism.css │ │ ├── styles.scss │ │ ├── subpage.scss │ │ └── utilities.scss │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── img │ │ ├── 05-run-queue-0.svg │ │ ├── arrows │ │ │ ├── arrow-down.svg │ │ │ ├── arrow-right.svg │ │ │ ├── arrow-thin-down.svg │ │ │ ├── arrow-thin-right.svg │ │ │ └── dash-thin.svg │ │ ├── collections │ │ │ └── documentation │ │ │ │ ├── dependency-graph.png │ │ │ │ ├── graph.png │ │ │ │ └── promote-immutable-Terraform-code-across-envs.png │ │ ├── commercial-support │ │ │ ├── terragrunt-mobile-links.svg │ │ │ └── top-right.svg │ │ ├── contact │ │ │ ├── bottom.svg │ │ │ ├── bottom@3x.png │ │ │ ├── contact-mobile-bottom.svg │ │ │ ├── right.svg │ │ │ ├── right@3x.png │ │ │ ├── top.svg │ │ │ └── top@3x.png │ │ ├── favicon │ │ │ ├── android-icon-144x144.png │ │ │ ├── android-icon-192x192.png │ │ │ ├── android-icon-36x36.png │ │ │ ├── android-icon-48x48.png │ │ │ ├── android-icon-72x72.png │ │ │ ├── android-icon-96x96.png │ │ │ ├── apple-icon-114x114.png │ │ │ ├── apple-icon-120x120.png │ │ │ ├── apple-icon-144x144.png │ │ │ ├── apple-icon-152x152.png │ │ │ ├── apple-icon-180x180.png │ │ │ ├── apple-icon-57x57.png │ │ │ ├── apple-icon-60x60.png │ │ │ ├── apple-icon-72x72.png │ │ │ ├── apple-icon-76x76.png │ │ │ ├── apple-icon-precomposed.png │ │ │ ├── apple-icon.png │ │ │ ├── browserconfig.xml │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon-96x96.png │ │ │ ├── favicon.ico │ │ │ ├── manifest.json │ │ │ ├── ms-icon-144x144.png │ │ │ ├── ms-icon-150x150.png │ │ │ ├── ms-icon-310x310.png │ │ │ └── ms-icon-70x70.png │ │ ├── home │ │ │ ├── built-by-bg.svg │ │ │ ├── built-by-left.png │ │ │ ├── built-by-right.png │ │ │ ├── links-shapes-left.png │ │ │ ├── links-shapes-right.png │ │ │ ├── shape-single-right.svg │ │ │ ├── t-all.png │ │ │ ├── t-o-1@3x.png │ │ │ ├── t-o-2@3x.png │ │ │ ├── t-o-3@3x.png │ │ │ └── top_left.svg │ │ ├── icons │ │ │ ├── bug.svg │ │ │ ├── chatbubbles.svg │ │ │ ├── checkmark-blue.svg │ │ │ ├── checkmark-darkblue.svg │ │ │ ├── codereviews.svg │ │ │ ├── menu-dots-icon.png │ │ │ ├── play_icon.png │ │ │ ├── quote.svg │ │ │ ├── wand.svg │ │ │ └── xmark.svg │ │ ├── key-features │ │ │ ├── key-features-backend-dry-sm.png │ │ │ ├── key-features-backend-dry.png │ │ │ ├── key-features-backend-dry.svg │ │ │ ├── key-features-cli-dry-sm.png │ │ │ ├── key-features-cli-dry.svg │ │ │ ├── key-features-multiple-modules-at-once-sm.png │ │ │ ├── key-features-multiple-modules-at-once.png │ │ │ ├── key-features-multiple-modules-at-once.svg │ │ │ ├── key-features-terraform-code-dry-sm.png │ │ │ ├── key-features-terraform-code-dry.png │ │ │ └── key-features-terraform-code-dry.svg │ │ ├── link-icon.png │ │ ├── link-icon.svg │ │ ├── logos │ │ │ ├── discord-logo.png │ │ │ └── github-logo.png │ │ ├── no-search-results.png │ │ ├── screenshots │ │ │ ├── catalog-screenshot.png │ │ │ ├── custom-log-format-1.jpg │ │ │ ├── find-no-color.png │ │ │ ├── find.png │ │ │ ├── list-long.png │ │ │ ├── list-narrow.png │ │ │ ├── list-tree.png │ │ │ └── list.png │ │ └── terragrunt-thumbnail.png │ └── js │ │ ├── collection-browser_scroll.js │ │ ├── collection-browser_search.js │ │ ├── collection-browser_toc.js │ │ ├── contact-form.js │ │ ├── cookie.js │ │ ├── main.js │ │ └── prism.js ├── docker-compose.yml ├── jekyll-serve.sh └── scripts │ ├── convert_adoc_to_md.sh │ └── convert_md_to_adoc.sh ├── engine ├── engine.go ├── engine_test.go ├── public_keys.go └── verification.go ├── go.mod ├── go.sum ├── internal ├── cache │ ├── cache.go │ ├── cache_test.go │ └── context.go ├── cas │ ├── benchmark_test.go │ ├── cas.go │ ├── cas_test.go │ ├── content.go │ ├── content_test.go │ ├── errors.go │ ├── errors_test.go │ ├── getter.go │ ├── getter_ssh_test.go │ ├── getter_test.go │ ├── git.go │ ├── git_test.go │ ├── integration_test.go │ ├── race_test.go │ ├── store.go │ ├── store_test.go │ ├── tree.go │ └── tree_test.go ├── cli │ ├── app.go │ ├── args.go │ ├── args_test.go │ ├── autocomplete.go │ ├── bool_flag.go │ ├── bool_flag_test.go │ ├── category.go │ ├── command.go │ ├── command_test.go │ ├── commands.go │ ├── context.go │ ├── errors.go │ ├── exit_code.go │ ├── flag.go │ ├── flag_test.go │ ├── flags.go │ ├── flags_test.go │ ├── funcs.go │ ├── generic_flag.go │ ├── generic_flag_test.go │ ├── help.go │ ├── map_flag.go │ ├── map_flag_test.go │ ├── slice_flag.go │ ├── slice_flag_test.go │ ├── sort.go │ └── sort_test.go ├── cloner │ ├── clone.go │ └── cloner.go ├── ctyhelper │ ├── helper.go │ └── helper_test.go ├── discovery │ ├── discovery.go │ └── discovery_test.go ├── errors │ ├── errors.go │ ├── export.go │ ├── multierror.go │ └── util.go ├── experiment │ ├── errors.go │ ├── experiment.go │ ├── experiment_test.go │ └── warnings.go ├── hclhelper │ ├── wrap.go │ └── wrap_test.go ├── locks │ └── lock.go ├── os │ ├── exec │ │ ├── cmd.go │ │ ├── cmd_unix_test.go │ │ ├── cmd_windows_test.go │ │ ├── opts.go │ │ ├── ptty_unix.go │ │ ├── ptty_windows.go │ │ └── testdata │ │ │ ├── infinite_loop.bat │ │ │ ├── test_exit_code.bat │ │ │ ├── test_exit_code.sh │ │ │ ├── test_sigint_multiple.sh │ │ │ └── test_sigint_wait.sh │ └── signal │ │ ├── context_canceled.go │ │ ├── signal.go │ │ ├── signal_unix.go │ │ └── signal_windows.go ├── providercache │ ├── provider_cache.go │ └── provider_cache_test.go ├── queue │ ├── queue.go │ └── queue_test.go ├── remotestate │ ├── backend │ │ ├── backend.go │ │ ├── common.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── errors.go │ │ ├── gcs │ │ │ ├── backend.go │ │ │ ├── client.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── errors.go │ │ │ └── remote_state_config.go │ │ └── s3 │ │ │ ├── backend.go │ │ │ ├── backend_test.go │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ ├── config.go │ │ │ ├── counting_semaphore.go │ │ │ ├── counting_semaphore_test.go │ │ │ ├── errors.go │ │ │ ├── remote_state_config.go │ │ │ ├── remote_state_config_test.go │ │ │ └── retryer.go │ ├── config.go │ ├── remote_encryption.go │ ├── remote_encryption_test.go │ ├── remote_state.go │ ├── remote_state_test.go │ ├── terraform_state_file.go │ └── terraform_state_file_test.go ├── services │ └── catalog │ │ ├── catalog.go │ │ ├── catalog_test.go │ │ └── module │ │ ├── doc.go │ │ ├── doc_test.go │ │ ├── module.go │ │ ├── repo.go │ │ ├── repo_test.go │ │ └── testdata │ │ └── find_modules │ │ ├── gitdir │ │ ├── HEAD │ │ └── config │ │ └── modules │ │ ├── eks-alb-ingress-controller-iam-policy │ │ ├── README.md │ │ ├── main.tf │ │ └── variables.tf │ │ ├── eks-alb-ingress-controller │ │ ├── README.md │ │ ├── main.tf │ │ └── variables.tf │ │ └── eks-aws-auth-merger │ │ ├── README.adoc │ │ ├── core-concepts.md │ │ ├── main.tf │ │ └── variables.tf ├── strict │ ├── category.go │ ├── control.go │ ├── control_test.go │ ├── controls │ │ ├── control.go │ │ ├── controls.go │ │ ├── deprecated_command.go │ │ ├── deprecated_env_var.go │ │ └── deprecated_flag_name.go │ ├── errors.go │ ├── status.go │ ├── strict.go │ └── view │ │ ├── plaintext │ │ ├── plaintext.go │ │ ├── render.go │ │ └── template.go │ │ ├── render.go │ │ ├── view.go │ │ └── writer.go ├── view │ ├── diagnostic │ │ ├── diagnostic.go │ │ ├── expression_value.go │ │ ├── extra.go │ │ ├── function.go │ │ ├── range.go │ │ ├── servity.go │ │ └── snippet.go │ ├── human_render.go │ ├── json_render.go │ ├── view.go │ └── writer.go └── worker │ ├── worker.go │ └── worker_test.go ├── main.go ├── mise.cicd.toml ├── mise.toml ├── options ├── auto_retry_options.go └── options.go ├── pkg ├── log │ ├── context.go │ ├── fields.go │ ├── format │ │ ├── format.go │ │ ├── formatter.go │ │ ├── options │ │ │ ├── align.go │ │ │ ├── case.go │ │ │ ├── color.go │ │ │ ├── common.go │ │ │ ├── content.go │ │ │ ├── errors.go │ │ │ ├── escape.go │ │ │ ├── level_format.go │ │ │ ├── option.go │ │ │ ├── path_format.go │ │ │ ├── prefix.go │ │ │ ├── suffix.go │ │ │ ├── time_format.go │ │ │ ├── util.go │ │ │ └── width.go │ │ └── placeholders │ │ │ ├── common.go │ │ │ ├── errors.go │ │ │ ├── field.go │ │ │ ├── interval.go │ │ │ ├── level.go │ │ │ ├── message.go │ │ │ ├── placeholder.go │ │ │ ├── plaintext.go │ │ │ └── time.go │ ├── formatter.go │ ├── level.go │ ├── log.go │ ├── logger.go │ ├── options.go │ ├── util.go │ └── writer │ │ ├── options.go │ │ └── writer.go └── pkg.go ├── scripts ├── gofmtcheck.sh └── pre-commit ├── shell ├── error_explainer.go ├── error_explainer_test.go ├── git.go ├── prompt.go ├── run_cmd.go ├── run_cmd_output_test.go ├── run_cmd_test.go ├── run_cmd_unix_test.go ├── run_cmd_windows_test.go └── testdata │ ├── test_outputs.sh │ ├── test_sigint_wait.bat │ └── test_sigint_wait.sh ├── telemetry ├── context.go ├── errors.go ├── meter.go ├── meter_test.go ├── opts.go ├── telemeter.go ├── tracer.go ├── tracer_test.go └── util.go ├── test ├── benchmarks │ ├── .gitignore │ ├── helpers │ │ └── helpers.go │ └── integration_bench_test.go ├── cliconfig.go ├── fixtures │ ├── assume-role-web-identity │ │ └── file-path │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── assume-role │ │ ├── duration │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── external-id-with-comma │ │ │ └── terragrunt.hcl │ │ └── external-id │ │ │ └── terragrunt.hcl │ ├── auth-provider-cmd │ │ ├── creds-for-dependency │ │ │ ├── dependency │ │ │ │ ├── creds.config │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── dependent │ │ │ │ ├── creds.config │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── mock-auth-cmd.sh │ │ ├── multiple-apps │ │ │ ├── app1 │ │ │ │ ├── creds.config │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── creds.config │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app3 │ │ │ │ ├── creds.config │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── creds.config │ │ │ ├── root.hcl │ │ │ └── test-creds.sh │ │ ├── oidc │ │ │ ├── main.tf │ │ │ ├── mock-auth-cmd.sh │ │ │ └── terragrunt.hcl │ │ ├── remote-state │ │ │ ├── creds.config │ │ │ └── terragrunt.hcl │ │ └── sops │ │ │ ├── creds.config │ │ │ ├── main.tf │ │ │ ├── secrets.json │ │ │ └── terragrunt.hcl │ ├── auto-retry │ │ ├── apply-all │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── configurable-retries-incorrect-retry-attempts │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── configurable-retries-incorrect-sleep-interval │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── configurable-retries │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── custom-errors-not-set │ │ │ ├── main.tf │ │ │ ├── script.sh │ │ │ └── terragrunt.hcl │ │ ├── custom-errors │ │ │ ├── main.tf │ │ │ ├── script.sh │ │ │ └── terragrunt.hcl │ │ ├── exhaust │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── get-default-errors │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── re-run │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── aws-provider-patch │ │ ├── example-module │ │ │ └── main.tf │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── broken-dependency │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── dependency │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── broken-locals │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── buffer-module-output │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── app2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── app3 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── catalog │ │ ├── complex-legacy-root │ │ │ ├── common.hcl │ │ │ ├── dev │ │ │ │ ├── account.hcl │ │ │ │ └── us-west-1 │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── modules │ │ │ │ │ └── terraform-aws-eks │ │ │ │ │ │ └── main.tf │ │ │ │ │ ├── region.hcl │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── prod │ │ │ │ ├── account.hcl │ │ │ │ └── terragrunt.hcl │ │ │ ├── stage │ │ │ │ ├── account.hcl │ │ │ │ └── terragrunt.hcl │ │ │ └── terragrunt.hcl │ │ ├── complex │ │ │ ├── common.hcl │ │ │ ├── dev │ │ │ │ ├── account.hcl │ │ │ │ └── us-west-1 │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── modules │ │ │ │ │ └── terraform-aws-eks │ │ │ │ │ │ └── main.tf │ │ │ │ │ ├── region.hcl │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── prod │ │ │ │ ├── account.hcl │ │ │ │ └── terragrunt.hcl │ │ │ ├── root.hcl │ │ │ └── stage │ │ │ │ ├── account.hcl │ │ │ │ └── terragrunt.hcl │ │ ├── config1.hcl │ │ ├── config2.hcl │ │ ├── config3.hcl │ │ ├── config4.hcl │ │ └── terraform-aws-eks │ │ │ └── README.md │ ├── cli-flag-hints │ │ └── terragrunt.hcl │ ├── codegen │ │ ├── generate-attr │ │ │ ├── main.tf │ │ │ ├── terragrunt.hcl │ │ │ └── test.tf │ │ ├── generate-block │ │ │ ├── disable-signature │ │ │ │ ├── .gitignore │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── disable │ │ │ │ ├── .gitignore │ │ │ │ └── terragrunt.hcl │ │ │ ├── enable │ │ │ │ ├── .gitignore │ │ │ │ └── terragrunt.hcl │ │ │ ├── nested │ │ │ │ ├── .gitignore │ │ │ │ ├── child_inherit │ │ │ │ │ ├── backend.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── child_overwrite │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── root.hcl │ │ │ ├── overwrite │ │ │ │ ├── .gitignore │ │ │ │ ├── backend.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── overwrite_terragrunt │ │ │ │ ├── backend.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── overwrite_terragrunt_error │ │ │ │ ├── backend.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── same_name_error │ │ │ │ └── terragrunt.hcl │ │ │ ├── same_name_includes_error │ │ │ │ ├── app1.hcl │ │ │ │ ├── app2.hcl │ │ │ │ └── terragrunt.hcl │ │ │ ├── same_name_pair_error │ │ │ │ └── terragrunt.hcl │ │ │ └── skip │ │ │ │ └── terragrunt.hcl │ │ ├── module │ │ │ └── main.tf │ │ ├── remote-state │ │ │ ├── base │ │ │ │ ├── .gitignore │ │ │ │ └── terragrunt.hcl │ │ │ ├── error │ │ │ │ └── terragrunt.hcl │ │ │ ├── overwrite │ │ │ │ ├── .gitignore │ │ │ │ ├── backend.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── s3 │ │ │ │ ├── .gitignore │ │ │ │ └── terragrunt.hcl │ │ │ └── skip │ │ │ │ ├── backend.tf │ │ │ │ └── terragrunt.hcl │ │ └── remove-file │ │ │ ├── remove │ │ │ ├── backend.tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── remove_terragrunt │ │ │ ├── backend.tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── remove_terragrunt_error │ │ │ ├── backend.tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── skip │ │ │ ├── backend.tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── commands-that-need-input │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── config-files │ │ ├── ignore-cached-config │ │ │ └── terragrunt.hcl │ │ ├── ignore-terraform-data-dir │ │ │ ├── .tf_data │ │ │ │ └── modules │ │ │ │ │ └── mod │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── root.hcl │ │ │ └── subdir │ │ │ │ ├── .terraform │ │ │ │ └── modules │ │ │ │ │ └── mod │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── .tf_data │ │ │ │ └── modules │ │ │ │ │ └── mod │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-configs │ │ │ ├── subdir-1 │ │ │ │ └── empty.txt │ │ │ ├── subdir-2 │ │ │ │ └── subdir │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── subdir-3 │ │ │ │ └── terragrunt.hcl │ │ │ └── terragrunt.hcl │ │ ├── multiple-json-configs │ │ │ ├── subdir-1 │ │ │ │ └── empty.txt │ │ │ ├── subdir-2 │ │ │ │ └── subdir │ │ │ │ │ └── terragrunt.hcl.json │ │ │ ├── subdir-3 │ │ │ │ └── terragrunt.hcl.json │ │ │ └── terragrunt.hcl.json │ │ ├── multiple-mixed-configs │ │ │ ├── subdir-1 │ │ │ │ └── empty.txt │ │ │ ├── subdir-2 │ │ │ │ └── subdir │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── subdir-3 │ │ │ │ └── terragrunt.hcl.json │ │ │ └── terragrunt.hcl.json │ │ ├── none │ │ │ ├── empty.txt │ │ │ └── subdir │ │ │ │ └── main.tf │ │ ├── one-config │ │ │ ├── empty.txt │ │ │ └── subdir │ │ │ │ └── terragrunt.hcl │ │ ├── one-json-config │ │ │ ├── empty.txt │ │ │ └── subdir │ │ │ │ └── terragrunt.hcl.json │ │ ├── single-json-config │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl.json │ │ └── with-non-default-names │ │ │ ├── app │ │ │ ├── main.hcl │ │ │ └── main.tf │ │ │ ├── common.hcl │ │ │ ├── dependency │ │ │ ├── another-name.hcl │ │ │ └── main.tf │ │ │ └── parent.hcl │ ├── config-terraform-functions │ │ ├── other-file.txt │ │ └── terragrunt.hcl │ ├── dependency-optimisation │ │ ├── module-a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── module-b │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── module-c │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── dependency-output │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── dependency │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── destroy-dependent-module │ │ ├── a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── b │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── c │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── destroy-order │ │ ├── app │ │ │ ├── module-a │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-b │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-c │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-d │ │ │ │ └── terragrunt.hcl │ │ │ └── module-e │ │ │ │ └── terragrunt.hcl │ │ └── hello │ │ │ ├── hello │ │ │ └── main.tf │ │ │ └── main.tf │ ├── destroy-warning │ │ ├── app-v1 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── app-v2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── root.hcl │ │ └── vpc │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── detailed-exitcode │ │ ├── changes │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── error │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── fail-on-first-run │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── dirs │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── disabled-path │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── disabled │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── unit-disabled │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── unit-enabled │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── unit-without-enabled │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── docs │ │ ├── 01-quick-start │ │ │ ├── step-01.1 │ │ │ │ └── foo │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── step-01 │ │ │ │ └── foo │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── step-02 │ │ │ │ ├── bar │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── foo │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── step-03 │ │ │ │ ├── bar │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── foo │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── shared │ │ │ │ │ └── main.tf │ │ │ ├── step-04 │ │ │ │ ├── .gitignore │ │ │ │ ├── bar │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── foo │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── shared │ │ │ │ │ └── main.tf │ │ │ ├── step-05.1 │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── bar │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── foo │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── shared │ │ │ │ │ └── main.tf │ │ │ ├── step-05 │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── bar │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── foo │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── shared │ │ │ │ │ └── main.tf │ │ │ ├── step-06 │ │ │ │ ├── .gitignore │ │ │ │ ├── bar │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── foo │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── shared │ │ │ │ │ ├── main.tf │ │ │ │ │ └── output.tf │ │ │ ├── step-07.1 │ │ │ │ ├── .gitignore │ │ │ │ ├── bar │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── foo │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── shared │ │ │ │ │ ├── main.tf │ │ │ │ │ └── output.tf │ │ │ └── step-07 │ │ │ │ ├── .gitignore │ │ │ │ ├── bar │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── foo │ │ │ │ └── terragrunt.hcl │ │ │ │ └── shared │ │ │ │ ├── main.tf │ │ │ │ └── output.tf │ │ └── 02-overview │ │ │ ├── step-01-terragrunt.hcl │ │ │ └── terragrunt.hcl │ │ │ ├── step-02-dependencies │ │ │ ├── ec2 │ │ │ │ └── terragrunt.hcl │ │ │ ├── root.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ │ ├── step-03-mock-outputs │ │ │ ├── ec2 │ │ │ │ └── terragrunt.hcl │ │ │ ├── root.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ │ ├── step-04-configuration-hierarchy │ │ │ ├── root.hcl │ │ │ └── us-east-1 │ │ │ │ ├── ec2 │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── region.hcl │ │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ │ └── step-05-exposed-includes │ │ │ ├── root.hcl │ │ │ ├── us-east-1 │ │ │ ├── ec2 │ │ │ │ └── terragrunt.hcl │ │ │ ├── region.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ │ └── us-west-2 │ │ │ ├── ec2 │ │ │ └── terragrunt.hcl │ │ │ ├── region.hcl │ │ │ └── vpc │ │ │ └── terragrunt.hcl │ ├── download-source │ │ ├── download-dir-version-file-local-hash │ │ │ ├── main.tf │ │ │ └── version-file.txt │ │ ├── download-dir-version-file-no-query │ │ │ ├── main.tf │ │ │ └── version-file.txt │ │ ├── download-dir-version-file-tf-code │ │ │ ├── main.tf │ │ │ └── version-file.txt │ │ ├── download-dir-version-file │ │ │ └── version-file.txt │ │ ├── hello-world-2 │ │ │ ├── main.tf │ │ │ └── version-file.txt │ │ ├── hello-world-local-hash-failed │ │ │ └── main.tf │ │ ├── hello-world-local-hash │ │ │ └── main.tf │ │ ├── hello-world-version-remote │ │ │ ├── main.tf │ │ │ └── version-file.txt │ │ └── hello-world │ │ │ └── main.tf │ ├── download │ │ ├── custom-lock-file-module │ │ │ └── main.tf │ │ ├── custom-lock-file-terraform │ │ │ ├── .terraform.lock.hcl │ │ │ └── terragrunt.hcl │ │ ├── custom-lock-file-tofu │ │ │ ├── .terraform.lock.hcl │ │ │ └── terragrunt.hcl │ │ ├── extra-args │ │ │ └── common.tfvars │ │ ├── hello-world-no-remote │ │ │ └── main.tf │ │ ├── hello-world-with-backend │ │ │ └── main.tf │ │ ├── hello-world │ │ │ ├── hello │ │ │ │ └── main.tf │ │ │ └── main.tf │ │ ├── init-on-source-change │ │ │ └── terragrunt.hcl │ │ ├── invalid-path │ │ │ └── terragrunt.hcl │ │ ├── local-disable-copy-terraform-lock-file │ │ │ └── terragrunt.hcl │ │ ├── local-include-disable-copy-lock-file │ │ │ ├── module-a │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-b │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── local-include-with-prevent-destroy-dependencies │ │ │ ├── module-a │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-b │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-c │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── local-relative-extra-args-unix │ │ │ └── terragrunt.hcl │ │ ├── local-relative │ │ │ └── terragrunt.hcl │ │ ├── local-windows │ │ │ ├── JZwoL6Viko8bzuRvTOQFx3Jh8vs │ │ │ │ └── 3mU4huxMLOXOW5ZgJOFXGUFDKc8 │ │ │ │ │ ├── hello │ │ │ │ │ └── main.tf │ │ │ │ │ └── main.tf │ │ │ └── terragrunt.hcl │ │ ├── local-with-allowed-hidden │ │ │ ├── live │ │ │ │ └── terragrunt.hcl │ │ │ └── modules │ │ │ │ ├── .nonce │ │ │ │ └── main.tf │ │ ├── local-with-backend │ │ │ └── terragrunt.hcl │ │ ├── local-with-exclude-dir │ │ │ ├── integration-env │ │ │ │ ├── aws │ │ │ │ │ └── module-aws-a │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── gce │ │ │ │ │ ├── module-gce-b │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── module-gce-c │ │ │ │ │ └── terragrunt.hcl │ │ │ └── production-env │ │ │ │ ├── aws │ │ │ │ └── module-aws-d │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── gce │ │ │ │ └── module-gce-e │ │ │ │ └── terragrunt.hcl │ │ ├── local-with-hidden-folder │ │ │ ├── .hidden-folder │ │ │ │ └── README.md │ │ │ └── terragrunt.hcl │ │ ├── local-with-include-dir │ │ │ ├── integration-env │ │ │ │ ├── aws │ │ │ │ │ └── module-aws-a │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── gce │ │ │ │ │ ├── module-gce-b │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── module-gce-c │ │ │ │ │ └── terragrunt.hcl │ │ │ └── production-env │ │ │ │ ├── aws │ │ │ │ └── module-aws-d │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── gce │ │ │ │ └── module-gce-e │ │ │ │ └── terragrunt.hcl │ │ ├── local-with-missing-backend │ │ │ └── terragrunt.hcl │ │ ├── local-with-prevent-destroy-dependencies │ │ │ ├── module-a │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-b │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-c │ │ │ │ └── terragrunt.hcl │ │ │ ├── module-d │ │ │ │ └── terragrunt.hcl │ │ │ └── module-e │ │ │ │ └── terragrunt.hcl │ │ ├── local-with-prevent-destroy │ │ │ └── terragrunt.hcl │ │ ├── local │ │ │ └── terragrunt.hcl │ │ ├── override │ │ │ └── terragrunt.hcl │ │ ├── relative │ │ │ └── main.tf │ │ ├── remote-invalid-with-retries │ │ │ └── terragrunt.hcl │ │ ├── remote-invalid │ │ │ └── terragrunt.hcl │ │ ├── remote-module-in-root │ │ │ └── terragrunt.hcl │ │ ├── remote-ref │ │ │ └── terragrunt.hcl │ │ ├── remote-relative-with-slash │ │ │ └── terragrunt.hcl │ │ ├── remote-relative │ │ │ └── terragrunt.hcl │ │ ├── remote-with-backend │ │ │ └── terragrunt.hcl │ │ ├── remote │ │ │ └── terragrunt.hcl │ │ ├── stdout-test │ │ │ └── terragrunt.hcl │ │ └── stdout │ │ │ └── main.tf │ ├── empty-state │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── endswith │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── engine │ │ ├── engine-dependencies │ │ │ ├── .gitignore │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── local-engine │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── opentofu-engine │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── opentofu-latest-run-all │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app4 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app5 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── opentofu-run-all │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app4 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app5 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── remote-engine │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── trace-parent │ │ │ ├── get_traceparent.sh │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── env-vars-block │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── ephemeral-inputs │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── error-print │ │ ├── custom-tf-script.sh │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── errors │ │ ├── default │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── ignore-negative-pattern │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── ignore-signal │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── ignore │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── multi-line │ │ │ ├── main.tf │ │ │ ├── script.sh │ │ │ └── terragrunt.hcl │ │ ├── retry-fail │ │ │ ├── main.tf │ │ │ ├── script.sh │ │ │ └── terragrunt.hcl │ │ ├── retry │ │ │ ├── main.tf │ │ │ ├── script.sh │ │ │ └── terragrunt.hcl │ │ ├── run-all-ignore │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── run-all │ │ │ ├── app1 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ ├── main.tf │ │ │ ├── script.sh │ │ │ └── terragrunt.hcl │ │ │ └── common.hcl │ ├── exclude │ │ ├── action │ │ │ ├── exclude-apply │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── exclude-plan │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── all-except-output │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── basic │ │ │ ├── unit1 │ │ │ │ └── terragrunt.hcl │ │ │ ├── unit2 │ │ │ │ └── terragrunt.hcl │ │ │ └── unit3 │ │ │ │ └── terragrunt.hcl │ │ ├── default │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── dependencies │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── disabled │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── feature-flags │ │ │ ├── app1 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── flags.hcl │ ├── excludes-file │ │ ├── .terragrunt-excludes │ │ ├── a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── b │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── c │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── d │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── excludes-file-pass-as-flag │ ├── exec-cmd-tf-path │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── dep │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── script.sh │ │ ├── terraform-output-json.sh │ │ └── tofu-output-json.sh │ ├── exec-cmd │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── script.sh │ ├── external-dependencies │ │ ├── module-a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── module-b │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── external-dependency │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── extra-args │ │ ├── dev.tfvars │ │ ├── extra.tfvars │ │ ├── main.tf │ │ ├── terragrunt.hcl │ │ └── us-west-2.tfvars │ ├── failure │ │ ├── main.tf │ │ ├── missingvars │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── submod │ │ │ └── main.tf │ │ └── terragrunt.hcl │ ├── feature-flags │ │ ├── error-empty-flag │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── include-flag │ │ │ ├── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── run-all │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── common.hcl │ │ └── simple-flag │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── find-parent-with-deprecated-root │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── terragrunt.hcl │ ├── find-parent │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── find │ │ ├── basic │ │ │ ├── stack │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── unit │ │ │ │ └── terragrunt.hcl │ │ ├── dag │ │ │ ├── a-dependent │ │ │ │ └── terragrunt.hcl │ │ │ └── b-dependency │ │ │ │ └── terragrunt.hcl │ │ ├── hidden │ │ │ ├── .hide │ │ │ │ └── unit │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── stack │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── unit │ │ │ │ └── terragrunt.hcl │ │ ├── include │ │ │ ├── bar │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── cloud.hcl │ │ │ └── foo │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── internal-v-external │ │ │ ├── external │ │ │ └── c-dependency │ │ │ │ └── terragrunt.hcl │ │ │ └── internal │ │ │ ├── a-dependent │ │ │ └── terragrunt.hcl │ │ │ └── b-dependency │ │ │ └── terragrunt.hcl │ ├── gcs-backend │ │ ├── common.hcl │ │ ├── unit1 │ │ │ └── terragrunt.hcl │ │ └── unit2 │ │ │ └── terragrunt.hcl │ ├── gcs-byo-bucket │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── gcs-impersonate │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── gcs-no-bucket │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── gcs-no-prefix │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── gcs-parallel-state-init │ │ ├── root.hcl │ │ └── template │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── gcs │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── get-aws-account-alias │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── get-aws-caller-identity │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── get-output │ │ ├── cycle │ │ │ ├── aa │ │ │ │ └── foo │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── aba │ │ │ │ ├── bar │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── foo │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── abca │ │ │ │ ├── bar │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── baz │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── foo │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ └── abcda │ │ │ │ ├── bar │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── baz │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── car │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── foo │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── download-dir │ │ │ ├── in-config │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── not-set │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── integration │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── empty │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── localstate │ │ │ ├── live │ │ │ │ ├── child │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── parent │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── root.hcl │ │ │ └── modules │ │ │ │ ├── child │ │ │ │ └── main.tf │ │ │ │ └── parent │ │ │ │ └── main.tf │ │ ├── mock-outputs-merge-strategy-with-state │ │ │ ├── merge-strategy-with-state-compat-conflict │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ ├── child │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-strategy-with-state-compat-false │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ ├── child │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-strategy-with-state-compat-true │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ ├── child │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-strategy-with-state-deep-map-only │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ ├── child │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-strategy-with-state-default │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ ├── child │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-strategy-with-state-no-merge │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ ├── child │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ └── merge-strategy-with-state-shallow │ │ │ │ ├── live │ │ │ │ ├── child │ │ │ │ │ ├── child │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── parent │ │ │ │ │ ├── parent │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ ├── child │ │ │ │ └── main.tf │ │ │ │ └── parent │ │ │ │ └── main.tf │ │ ├── mock-outputs-merge-with-state │ │ │ ├── merge-with-state-default │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-with-state-false │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-with-state-no-override │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ ├── parent │ │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ ├── merge-with-state-true-validate-only │ │ │ │ ├── live │ │ │ │ │ ├── child │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ ├── parent │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ │ ├── child │ │ │ │ │ └── main.tf │ │ │ │ │ └── parent │ │ │ │ │ └── main.tf │ │ │ └── merge-with-state-true │ │ │ │ ├── live │ │ │ │ ├── child │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── parent │ │ │ │ │ ├── parent │ │ │ │ │ │ └── terraform.tfstate │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── root.hcl │ │ │ │ └── modules │ │ │ │ ├── child │ │ │ │ └── main.tf │ │ │ │ └── parent │ │ │ │ └── main.tf │ │ ├── mock-outputs │ │ │ ├── dependent1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dependent2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dependent3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── source │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── nested-mocks │ │ │ ├── deepdep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── live │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── nested-optimization-disable │ │ │ ├── .gitignore │ │ │ ├── deepdep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── live │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── nested-optimization-nogen │ │ │ ├── .gitignore │ │ │ ├── deepdep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── live │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── nested-optimization │ │ │ ├── .gitignore │ │ │ ├── deepdep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── live │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── regression-1102 │ │ │ ├── .gitignore │ │ │ ├── backend.tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── regression-1124 │ │ │ ├── live │ │ │ │ ├── app │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── dependency │ │ │ │ │ └── terragrunt.hcl │ │ │ └── modules │ │ │ │ ├── app │ │ │ │ └── main.tf │ │ │ │ └── dependency │ │ │ │ └── main.tf │ │ ├── regression-1273 │ │ │ ├── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── main │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── regression-854 │ │ │ └── root │ │ │ │ ├── environments │ │ │ │ ├── network │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── web │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── sg │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── terragrunt.hcl │ │ ├── regression-906 │ │ │ ├── a │ │ │ │ └── terragrunt.hcl │ │ │ ├── b │ │ │ │ └── terragrunt.hcl │ │ │ ├── c │ │ │ │ └── terragrunt.hcl │ │ │ ├── common-dep │ │ │ │ └── terragrunt.hcl │ │ │ ├── d │ │ │ │ └── terragrunt.hcl │ │ │ ├── e │ │ │ │ └── terragrunt.hcl │ │ │ ├── f │ │ │ │ └── terragrunt.hcl │ │ │ └── g │ │ │ │ └── terragrunt.hcl │ │ └── type-conversion │ │ │ └── terragrunt.hcl │ ├── get-path │ │ ├── get-path-from-repo-root │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── get-path-to-repo-root │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── path_relative_from_include │ │ │ ├── lives │ │ │ ├── dev │ │ │ │ ├── base │ │ │ │ │ ├── terragrunt.hcl │ │ │ │ │ └── tier.hcl │ │ │ │ ├── cluster │ │ │ │ │ ├── terragrunt.hcl │ │ │ │ │ └── tier.hcl │ │ │ │ └── env.hcl │ │ │ ├── org.hcl │ │ │ └── root.hcl │ │ │ └── modules │ │ │ ├── base │ │ │ └── main.tf │ │ │ └── cluster │ │ │ └── main.tf │ ├── get-platform │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── get-repo-root │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── get-terragrunt-source-cli │ │ ├── terraform_config_cli │ │ │ └── main.tf │ │ └── terragrunt.hcl │ ├── get-terragrunt-source-hcl │ │ ├── terraform_config_hcl │ │ │ └── main.tf │ │ └── terragrunt.hcl │ ├── get-working-dir │ │ ├── main.tf │ │ ├── modules │ │ │ └── a │ │ │ │ └── main.tf │ │ └── terragrunt.hcl │ ├── graph-dependencies │ │ ├── root.hcl │ │ └── root │ │ │ ├── backend-app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── frontend-app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── mysql │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── redis │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── graph │ │ ├── dependency-graph.png │ │ ├── eks │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── lambda │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── services │ │ │ ├── eks-service-1 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── eks-service-2-v2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── eks-service-2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── eks-service-3-v2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── eks-service-3-v3 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── eks-service-3 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── eks-service-4 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── eks-service-5 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── lambda-service-1 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── lambda-service-2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── hclfmt-check-errors │ │ ├── a │ │ │ ├── b │ │ │ │ └── c │ │ │ │ │ ├── d │ │ │ │ │ ├── e │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── services.hcl │ │ │ │ │ └── terragrunt.hcl │ │ │ └── terragrunt.hcl │ │ ├── expected.hcl │ │ └── terragrunt.hcl │ ├── hclfmt-check │ │ ├── a │ │ │ ├── b │ │ │ │ └── c │ │ │ │ │ ├── d │ │ │ │ │ ├── e │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── services.hcl │ │ │ │ │ └── terragrunt.hcl │ │ │ └── terragrunt.hcl │ │ ├── expected.hcl │ │ └── terragrunt.hcl │ ├── hclfmt-diff │ │ ├── expected.diff │ │ └── terragrunt.hcl │ ├── hclfmt-errors │ │ ├── dangling-attribute │ │ │ └── terragrunt.hcl │ │ ├── invalid-character │ │ │ └── terragrunt.hcl │ │ └── invalid-key │ │ │ └── terragrunt.hcl │ ├── hclfmt-heredoc │ │ ├── expected.hcl │ │ └── terragrunt.hcl │ ├── hclfmt-stdin │ │ ├── expected.hcl │ │ └── terragrunt.hcl │ ├── hclvalidate │ │ ├── first │ │ │ └── b │ │ │ │ └── terragrunt.hcl │ │ └── second │ │ │ ├── a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── c │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── d │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── hooks │ │ ├── after-only │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── all │ │ │ ├── after-only │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── before-only │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── bad-arg-action │ │ │ ├── empty-command-list │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── empty-string-command │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── before-after-and-error-merge │ │ │ ├── qa │ │ │ │ └── my-app │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── before-after-and-on-error │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── before-and-after │ │ │ ├── hook.sh │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── before-only │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── error-hooks │ │ │ ├── main.tf │ │ │ ├── terragrunt.hcl │ │ │ └── tf.sh │ │ ├── if-parameter │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── init-once │ │ │ ├── backend.tf │ │ │ ├── base-module │ │ │ │ └── main.tf │ │ │ ├── no-source-no-backend │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── no-source-with-backend │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── with-source-no-backend-suppress-hook-stdout │ │ │ │ └── terragrunt.hcl │ │ │ ├── with-source-no-backend │ │ │ │ └── terragrunt.hcl │ │ │ └── with-source-with-backend │ │ │ │ └── terragrunt.hcl │ │ ├── interpolations │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── one-arg-action │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── skip-on-error │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── working_dir │ │ │ ├── main.tf │ │ │ ├── mydir │ │ │ └── hello_world │ │ │ └── terragrunt.hcl │ ├── include-deep │ │ ├── child │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── root.hcl │ │ └── vpc │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── include-expose │ │ ├── mixed-with-bare │ │ │ └── child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── multiple │ │ │ └── child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── root.hcl │ │ ├── single-bare │ │ │ └── child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── single │ │ │ └── child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── terragrunt_env.hcl │ │ ├── with-dependency-reference-input │ │ │ ├── child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ └── with-dependency │ │ │ ├── child │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── dep │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ ├── include-multiple │ │ ├── deep-merge-nonoverlapping │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── deep-merge-overlapping │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── expose │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── has-bare-include │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── json │ │ │ ├── child │ │ │ │ └── terragrunt.hcl.json │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── modules │ │ │ ├── empty │ │ │ │ └── main.tf │ │ │ └── reflect │ │ │ │ └── main.tf │ │ ├── shallow-deep-merge-overlapping │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── shallow-merge │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── terragrunt_inputs.hcl │ │ ├── terragrunt_inputs_final.hcl │ │ ├── terragrunt_inputs_override.hcl │ │ ├── terragrunt_vpc_dep.hcl │ │ ├── terragrunt_vpc_dep_for_expose.hcl │ │ └── terragrunt_vpc_dep_override.hcl │ ├── include-parent │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── common.hcl │ │ ├── dependency │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── parent.hcl │ ├── include-runall │ │ ├── a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── alpha.hcl │ │ ├── b │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── c │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── include │ │ ├── qa │ │ │ └── my-app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── root.hcl │ │ └── stage │ │ │ └── my-app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── init-cache │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── init-error │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── init-once │ │ ├── module │ │ │ └── main.tf │ │ └── terragrunt.hcl │ ├── inputs-defaults │ │ └── main.tf │ ├── inputs-from-dependency │ │ ├── apps │ │ │ ├── a │ │ │ │ └── terragrunt.hcl │ │ │ ├── b │ │ │ │ ├── local.hcl │ │ │ │ └── terragrunt.hcl │ │ │ ├── c │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ └── modules │ │ │ ├── a │ │ │ └── main.tf │ │ │ ├── b │ │ │ └── main.tf │ │ │ └── c │ │ │ └── main.tf │ ├── inputs │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── list │ │ ├── basic │ │ │ ├── a-unit │ │ │ │ └── terragrunt.hcl │ │ │ └── b-unit │ │ │ │ └── terragrunt.hcl │ │ ├── dag │ │ │ ├── stacks │ │ │ │ └── live │ │ │ │ │ ├── dev │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ │ └── prod │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ └── live │ │ │ │ ├── dev │ │ │ │ ├── db │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── ec2 │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── vpc │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── prod │ │ │ │ ├── db │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── ec2 │ │ │ │ └── terragrunt.hcl │ │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ └── long │ │ │ ├── unit-0 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-1 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-2 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-3 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-4 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-5 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-6 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-7 │ │ │ └── terragrunt.hcl │ │ │ ├── unit-8 │ │ │ └── terragrunt.hcl │ │ │ └── unit-9 │ │ │ └── terragrunt.hcl │ ├── locals-errors │ │ ├── undefined-local-but-input │ │ │ └── terragrunt.hcl │ │ └── undefined-local │ │ │ └── terragrunt.hcl │ ├── locals │ │ ├── canonical │ │ │ ├── contents.txt │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── local-in-include │ │ │ ├── qa │ │ │ │ └── my-app │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── run-multiple │ │ │ └── terragrunt.hcl │ │ └── run-once │ │ │ └── terragrunt.hcl │ ├── log │ │ ├── formatter │ │ │ ├── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── dep │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── levels │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── rel-paths │ │ │ └── duplicate-dir-names │ │ │ └── workspace │ │ │ └── one │ │ │ └── two │ │ │ ├── aaa │ │ │ └── bbb │ │ │ │ └── ccc │ │ │ │ ├── module-b │ │ │ │ └── terragrunt.hcl │ │ │ │ └── workspace │ │ │ │ └── terragrunt.hcl │ │ │ └── tf │ │ │ └── main.tf │ ├── manifest-removal │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── manifest │ │ ├── version-1 │ │ │ ├── main.tf │ │ │ └── stale.tf │ │ ├── version-2 │ │ │ └── main.tf │ │ ├── version-3-subfolder │ │ │ ├── main.tf │ │ │ └── sub │ │ │ │ └── main.tf │ │ ├── version-4-subfolder-empty │ │ │ └── main.tf │ │ └── version-5-not-empty-subfolder │ │ │ ├── main.tf │ │ │ └── sub2 │ │ │ └── main.tf │ ├── missing-dependencies │ │ ├── main │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── module-a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── module-path-in-error │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── d1 │ │ │ ├── main.tf │ │ │ ├── provider.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── modules │ │ ├── hcl-module-b │ │ │ ├── module-b-child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl.json │ │ ├── hcl-module-c │ │ │ └── terragrunt.hcl │ │ ├── json-module-a │ │ │ └── terragrunt.hcl.json │ │ ├── json-module-b │ │ │ ├── module-b-child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl.json │ │ │ └── root.hcl │ │ ├── json-module-c │ │ │ └── terragrunt.hcl.json │ │ ├── json-module-d │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl.json │ │ ├── module-a │ │ │ └── terragrunt.hcl │ │ ├── module-abba │ │ │ └── terragrunt.hcl │ │ ├── module-b │ │ │ ├── module-b-child │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── module-c │ │ │ └── terragrunt.hcl │ │ ├── module-d │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── module-e │ │ │ ├── main.tf │ │ │ ├── module-e-child │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── module-f │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── module-g │ │ │ └── terragrunt.hcl │ │ ├── module-h │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── module-i │ │ │ ├── terragrunt.hcl │ │ │ └── test.tf │ │ ├── module-j │ │ │ └── terragrunt.hcl │ │ ├── module-k │ │ │ └── terragrunt.hcl │ │ ├── module-l │ │ │ └── terragrunt.hcl │ │ ├── module-m │ │ │ ├── env.hcl │ │ │ ├── module-m-child │ │ │ │ ├── main.tf │ │ │ │ ├── terragrunt.hcl │ │ │ │ └── tier.hcl │ │ │ └── root.hcl │ │ └── module-missing-dependency │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── multiinclude-dependency │ │ ├── depa.hcl │ │ ├── depa │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── depb.hcl │ │ ├── depb │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── depc.hcl │ │ ├── depc │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── main │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── terragrunt.hcl │ ├── no-color │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── no-submodules │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── null-values │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── out-dir │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── dependency │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── output-all │ │ ├── env1 │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── output-from-dependency │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── dependency │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ ├── output-from-remote-state │ │ ├── env1 │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ ├── terragrunt.hcl │ │ │ │ └── variables.tf │ │ │ └── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── output-module-groups │ │ └── root │ │ │ ├── backend-app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── frontend-app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── mysql │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── redis │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── root.hcl │ │ │ └── vpc │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── parallel-run │ │ ├── .tflint.hcl │ │ ├── common │ │ │ └── terragrunt.hcl │ │ ├── dev │ │ │ └── app │ │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── parallel-state-init │ │ ├── root.hcl │ │ └── template │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── parallelism │ │ ├── template │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── terragrunt.hcl │ ├── parent-folders │ │ ├── in-another-subfolder │ │ │ ├── common │ │ │ │ └── foo.txt │ │ │ └── live │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-terragrunt-in-parents │ │ │ ├── child │ │ │ │ ├── root.hcl │ │ │ │ └── sub-child │ │ │ │ │ ├── root.hcl │ │ │ │ │ └── sub-sub-child │ │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── no-terragrunt-in-root │ │ │ └── child │ │ │ │ └── sub-child │ │ │ │ └── terragrunt.hcl │ │ ├── other-file-names │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── foo.txt │ │ ├── terragrunt-in-root │ │ │ ├── child │ │ │ │ └── sub-child │ │ │ │ │ └── sub-sub-child │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── override │ │ │ │ │ └── terragrunt.hcl │ │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ └── with-params │ │ │ └── tfwork │ │ │ ├── test-var │ │ │ └── providers.tf │ │ │ └── tg │ │ │ └── terragrunt.hcl │ ├── partial-parse │ │ ├── ignore-bad-block-in-parent │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── partial-inheritance │ │ │ ├── child │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ └── terragrunt-version-constraint │ │ │ └── terragrunt.hcl │ ├── planfile-order-test │ │ ├── .gitignore │ │ ├── inputs.tf │ │ ├── resource.tf │ │ ├── terragrunt.hcl │ │ └── vars │ │ │ └── variables.tfvars │ ├── prevent-destroy-not-set │ │ ├── child │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── prevent-destroy-override │ │ ├── child │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── provider-cache │ │ ├── direct │ │ │ ├── first │ │ │ │ ├── app │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app1 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app2 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app3 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app4 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app5 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app6 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app7 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app8 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── app9 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ └── second │ │ │ │ ├── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app4 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app5 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app6 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app7 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── app8 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── app9 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── filesystem-mirror │ │ │ └── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-platforms │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── app3 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── network-mirror │ │ │ └── apps │ │ │ ├── app0 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── app1 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── read-config │ │ ├── from_dependency │ │ │ ├── dep │ │ │ │ ├── main.tf │ │ │ │ ├── terragrunt.hcl │ │ │ │ └── vars.hcl │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── full │ │ │ ├── main.tf │ │ │ ├── source.hcl │ │ │ └── terragrunt.hcl │ │ ├── iam_role_in_file │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── iam_roles_multiple_modules │ │ │ ├── component1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── component2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── with_constraints │ │ │ └── main.tf │ │ ├── with_default │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── with_dependency │ │ │ ├── dep │ │ │ │ └── terragrunt.hcl │ │ │ └── terragrunt.hcl │ │ └── with_original_terragrunt_dir │ │ │ ├── dep │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── foo │ │ │ └── bar.hcl │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── read-tf-vars │ │ ├── empty.tfvars │ │ ├── my.tfvars │ │ ├── my.tfvars.json │ │ ├── only-comments.tfvars │ │ └── terragrunt.hcl │ ├── regressions │ │ ├── accesslogging-bucket │ │ │ ├── no-target-prefix-input │ │ │ │ ├── .gitignore │ │ │ │ ├── main.tf │ │ │ │ └── remote_terragrunt.hcl │ │ │ └── with-target-prefix-input │ │ │ │ ├── .gitignore │ │ │ │ ├── main.tf │ │ │ │ └── remote_terragrunt.hcl │ │ ├── apply-all-envvar │ │ │ ├── module │ │ │ │ └── main.tf │ │ │ ├── no-require-envvar │ │ │ │ └── terragrunt.hcl │ │ │ └── require-envvar │ │ │ │ └── terragrunt.hcl │ │ ├── benchmark-parsing-includes │ │ │ ├── modules │ │ │ │ └── dummy-module │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── outputs.tf │ │ │ │ │ ├── variables.tf │ │ │ │ │ └── versions.tf │ │ │ ├── production │ │ │ │ ├── dependency-group-1 │ │ │ │ ├── dependency-group-2 │ │ │ │ ├── dependency-group-3 │ │ │ │ ├── dependency-group-4 │ │ │ │ ├── dependency-group-template │ │ │ │ │ ├── app.hcl │ │ │ │ │ └── webserver │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── deployment-group-1 │ │ │ │ │ ├── app.hcl │ │ │ │ │ └── webserver │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── environment.hcl │ │ │ └── root-terragrunt.hcl │ │ ├── benchmark-parsing │ │ │ ├── modules │ │ │ │ └── dummy-module │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── outputs.tf │ │ │ │ │ ├── variables.tf │ │ │ │ │ └── versions.tf │ │ │ ├── production │ │ │ │ ├── dependency-group-1 │ │ │ │ ├── dependency-group-2 │ │ │ │ ├── dependency-group-3 │ │ │ │ ├── dependency-group-4 │ │ │ │ ├── dependency-group-template │ │ │ │ │ ├── app.hcl │ │ │ │ │ └── webserver │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── deployment-group-1 │ │ │ │ │ ├── app.hcl │ │ │ │ │ └── webserver │ │ │ │ │ │ └── terragrunt.hcl │ │ │ │ └── environment.hcl │ │ │ └── root-terragrunt.hcl │ │ ├── exclude-dependency │ │ │ ├── amazing-app │ │ │ │ └── k8s │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── clusters │ │ │ │ └── eks │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── modules │ │ │ │ ├── eks │ │ │ │ │ └── main.tf │ │ │ │ └── k8s │ │ │ │ │ └── main.tf │ │ │ ├── root.hcl │ │ │ └── testapp │ │ │ │ └── k8s │ │ │ │ └── terragrunt.hcl │ │ ├── include-error │ │ │ ├── _envcommon.hcl │ │ │ └── project │ │ │ │ ├── app │ │ │ │ └── terragrunt.hcl │ │ │ │ └── eng_teams.hcl │ │ ├── mocks-merge-with-state │ │ │ ├── deep-map │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── module │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── shallow │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-dependency-load-sync │ │ │ ├── dep1 │ │ │ │ └── terragrunt.hcl │ │ │ ├── dep2 │ │ │ │ └── terragrunt.hcl │ │ │ ├── main │ │ │ │ └── terragrunt.hcl │ │ │ ├── modules │ │ │ │ └── dummy-module │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── outputs.tf │ │ │ │ │ ├── variables.tf │ │ │ │ │ └── versions.tf │ │ │ └── root-terragrunt.hcl │ │ ├── skip-init │ │ │ ├── main.tf │ │ │ ├── module │ │ │ │ └── main.tf │ │ │ └── terragrunt.hcl │ │ ├── skip-versioning │ │ │ ├── .gitignore │ │ │ ├── local_terragrunt.hcl │ │ │ ├── main.tf │ │ │ └── remote_terragrunt.hcl │ │ └── yamldecode │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── relative-include-cmd │ │ ├── app │ │ │ ├── app.tf │ │ │ └── terragrunt.hcl │ │ └── terragrunt-test.hcl │ ├── render-json-inputs │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── dependency │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── render-json-metadata │ │ ├── attributes │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── dependencies │ │ │ ├── app │ │ │ │ ├── include.hcl │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dependency1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── dependency2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── dependency │ │ │ ├── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── dependency │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── dependency2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── includes │ │ │ ├── app │ │ │ │ ├── generate.hcl │ │ │ │ ├── inputs.hcl │ │ │ │ ├── locals.hcl │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── common │ │ │ │ └── common.hcl │ │ └── terraform-remote-state │ │ │ ├── app │ │ │ └── terragrunt.hcl │ │ │ ├── common │ │ │ ├── remote_state.hcl │ │ │ └── terraform.hcl │ │ │ └── terraform │ │ │ └── main.tf │ ├── render-json-mock-outputs │ │ ├── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── dependency │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── render-json-regression │ │ ├── bar │ │ │ └── terragrunt.hcl │ │ ├── baz │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── foo │ │ │ └── main.tf │ │ └── terragrunt.hcl │ ├── render-json-with-encryption │ │ ├── common_vars.hcl │ │ ├── dep │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── main │ │ │ ├── module │ │ │ │ └── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── render-json │ │ ├── common_vars.hcl │ │ ├── dep │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── main │ │ │ ├── module │ │ │ │ └── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ ├── s3-backend-migrate │ │ ├── unit1 │ │ │ └── terragrunt.hcl │ │ └── unit2 │ │ │ └── terragrunt.hcl │ ├── s3-backend │ │ ├── common.hcl │ │ ├── unit1 │ │ │ └── terragrunt.hcl │ │ └── unit2 │ │ │ └── terragrunt.hcl │ ├── s3-encryption │ │ ├── basic-encryption │ │ │ └── terragrunt.hcl │ │ ├── custom-key │ │ │ ├── backend.tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── sse-aes │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── sse-kms │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── s3-errors │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── scaffold │ │ ├── custom-default-template │ │ │ ├── root.hcl │ │ │ └── unit │ │ │ │ └── .gitkeep │ │ ├── external-template │ │ │ ├── boilerplate.yml │ │ │ ├── external-template.txt │ │ │ └── terragrunt.hcl │ │ ├── module-with-template │ │ │ ├── .boilerplate │ │ │ │ ├── boilerplate.yml │ │ │ │ ├── template-file.txt │ │ │ │ └── terragrunt.hcl │ │ │ └── main.tf │ │ ├── root-hcl │ │ │ ├── root.hcl │ │ │ └── unit │ │ │ │ └── .gitkeep │ │ └── scaffold-module │ │ │ ├── main.tf │ │ │ └── variables.tf │ ├── skip-dependencies │ │ ├── first │ │ │ ├── foo.hcl │ │ │ └── terragrunt.hcl │ │ ├── module │ │ │ └── main.tf │ │ └── second │ │ │ └── terragrunt.hcl │ ├── skip-legacy-root │ │ ├── base-module │ │ │ └── main.tf │ │ ├── skip-false │ │ │ ├── resource1 │ │ │ │ └── terragrunt.hcl │ │ │ ├── resource2 │ │ │ │ └── terragrunt.hcl │ │ │ └── terragrunt.hcl │ │ └── skip-true │ │ │ ├── resource1 │ │ │ └── terragrunt.hcl │ │ │ ├── resource2 │ │ │ └── terragrunt.hcl │ │ │ └── terragrunt.hcl │ ├── skip │ │ ├── base-module │ │ │ └── main.tf │ │ ├── skip-false │ │ │ ├── resource1 │ │ │ │ └── terragrunt.hcl │ │ │ ├── resource2 │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ └── skip-true │ │ │ ├── resource1 │ │ │ └── terragrunt.hcl │ │ │ ├── resource2 │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ ├── sops-errors │ │ ├── file.yaml │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── sops-kms │ │ ├── main.tf │ │ ├── secrets.env │ │ ├── secrets.ini │ │ ├── secrets.json │ │ ├── secrets.txt │ │ ├── secrets.yaml │ │ └── terragrunt.hcl │ ├── sops-missing │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── sops │ │ ├── main.tf │ │ ├── secrets.env │ │ ├── secrets.ini │ │ ├── secrets.json │ │ ├── secrets.txt │ │ ├── secrets.yaml │ │ ├── terragrunt.hcl │ │ └── test_pgp_key.asc │ ├── source-map │ │ ├── modules │ │ │ ├── app │ │ │ │ └── main.tf │ │ │ └── vpc │ │ │ │ └── main.tf │ │ ├── multiple-match │ │ │ ├── terragrunt-vpc │ │ │ │ └── terragrunt.hcl │ │ │ └── terratest-vpc │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-only-one-match │ │ │ ├── terragrunt-vpc │ │ │ │ └── terragrunt.hcl │ │ │ └── terratest-vpc │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-with-dependency-same-url │ │ │ ├── app │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-with-dependency │ │ │ ├── app │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ └── terragrunt.hcl │ │ ├── single │ │ │ └── terragrunt.hcl │ │ └── slashes-in-ref │ │ │ └── terragrunt.hcl │ ├── stack │ │ ├── disjoint-symlinks │ │ │ ├── a │ │ │ │ └── terragrunt.hcl │ │ │ └── module │ │ │ │ └── main.tf │ │ ├── disjoint │ │ │ ├── a │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── b │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── c │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── mgmt │ │ │ ├── bastion-host │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ ├── kms-master-key │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── root.hcl │ │ └── stage │ │ │ ├── backend-app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── frontend-app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── mysql │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── redis │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ ├── search-app │ │ │ ├── example-module │ │ │ │ └── main.tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ │ └── vpc │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── stacks │ │ ├── basic │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ ├── chick │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── chicken │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── father │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── mother │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── dependencies │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ ├── app-with-dependency │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── errors │ │ │ ├── absolute-path │ │ │ │ ├── live │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── units │ │ │ │ │ └── app │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── cycles │ │ │ │ ├── live │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ ├── stack │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── unit │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── incorrect-source │ │ │ │ ├── live │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── units │ │ │ │ │ └── api │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── locals-error │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── not-existing-path │ │ │ │ └── live │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── relative-path-outside-of-stack │ │ │ │ ├── live │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── units │ │ │ │ │ └── app1 │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── stack-empty-path │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── unit-empty-path │ │ │ │ ├── live │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── units │ │ │ │ │ └── app │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ ├── validation-stack │ │ │ │ ├── live │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ ├── stacks │ │ │ │ │ └── v1 │ │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── units │ │ │ │ │ └── api │ │ │ │ │ ├── main.tf │ │ │ │ │ └── terragrunt.hcl │ │ │ └── validation-unit │ │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── units │ │ │ │ └── v1 │ │ │ │ ├── api │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── db │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── web │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── inputs │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ └── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── locals │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ ├── chick │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── chicken │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── father │ │ │ │ └── terragrunt.hcl │ │ │ │ └── mother │ │ │ │ └── terragrunt.hcl │ │ ├── multiple-stacks │ │ │ ├── dev │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── unit │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── nested-outputs │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── stacks │ │ │ │ ├── v1 │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ ├── v2 │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── v3 │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ └── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── nested │ │ │ ├── live-v2 │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── stacks │ │ │ │ ├── dev │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── prod │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ ├── api │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── db │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── web │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── no-stack-dir │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── unit │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── no-stack │ │ │ ├── config │ │ │ │ └── config.txt │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── stacks │ │ │ │ └── dev │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ ├── api │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ ├── db │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── web │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── no-validation │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── stacks │ │ │ │ └── stack1 │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ └── app1 │ │ │ │ └── code │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── outputs │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ ├── app1 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ │ └── app2 │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── read-stack │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── stacks │ │ │ │ ├── dev │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── prod │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ └── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ ├── remote │ │ │ └── terragrunt.stack.hcl │ │ ├── self-include │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── module │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── unit │ │ │ │ └── terragrunt.hcl │ │ ├── source-map │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── tf │ │ │ │ └── modules │ │ │ │ │ └── main.tf │ │ │ └── units │ │ │ │ └── app │ │ │ │ └── terragrunt.hcl │ │ ├── stack-values │ │ │ ├── live │ │ │ │ └── terragrunt.stack.hcl │ │ │ ├── stacks │ │ │ │ ├── dev │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ │ └── prod │ │ │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ │ └── app │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ └── unit-values │ │ │ ├── live │ │ │ └── terragrunt.stack.hcl │ │ │ └── units │ │ │ └── app │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── startswith │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── strcontains │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── streaming │ │ ├── unit1 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── unit2 │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── strict-bare-include │ │ ├── main.tf │ │ ├── parent.hcl │ │ └── terragrunt.hcl │ ├── terragrunt-info-error │ │ ├── module-a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── module-b │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── terragrunt.hcl │ ├── terragrunt │ │ ├── main.tf │ │ ├── outputs.tf │ │ ├── terragrunt.hcl │ │ └── vars.tf │ ├── tf-path │ │ ├── main.tf │ │ ├── other-tf.sh │ │ ├── terragrunt.hcl │ │ └── tf.sh │ ├── tflint │ │ ├── custom-tflint-config │ │ │ ├── custom.tflint.hcl │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ │ ├── external-tflint │ │ │ ├── .tflint.hcl │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ │ ├── issues-found │ │ │ ├── .tflint.hcl │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── module-found │ │ │ ├── .tflint.hcl │ │ │ ├── dummy_module │ │ │ │ └── main.tf │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ │ ├── no-config-file │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── no-issues-found │ │ │ ├── .tflint.hcl │ │ │ ├── d1 │ │ │ │ └── file.txt │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ │ ├── no-tf-source │ │ │ ├── .tflint.hcl │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ │ ├── tflint-args │ │ │ ├── .tflint.hcl │ │ │ ├── extra.tfvars │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ │ └── tfvar-passing │ │ │ ├── .tflint.hcl │ │ │ ├── extra.tfvars │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ ├── tfr │ │ ├── root-shorthand │ │ │ └── terragrunt.hcl │ │ ├── root │ │ │ └── terragrunt.hcl │ │ ├── subdir-with-reference │ │ │ └── terragrunt.hcl │ │ └── subdir │ │ │ └── terragrunt.hcl │ ├── tftest │ │ ├── main.tf │ │ ├── terragrunt.hcl │ │ └── validate_name.tftest.hcl │ ├── timecmp-errors │ │ └── invalid-timestamp │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ ├── timecmp │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── tofu-state-encryption │ │ ├── aws-kms │ │ │ └── terragrunt.hcl │ │ ├── gcp-kms │ │ │ └── terragrunt.hcl │ │ └── pbkdf2 │ │ │ └── terragrunt.hcl │ ├── trace-parent │ │ ├── get_traceparent.sh │ │ ├── main.tf │ │ └── terragrunt.hcl │ ├── units-reading │ │ ├── including │ │ │ └── terragrunt.hcl │ │ ├── indirect │ │ │ ├── main.tf │ │ │ ├── src │ │ │ │ └── test.txt │ │ │ └── terragrunt.hcl │ │ ├── reading-from-tf │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── reading-hcl-and-tfvars │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── reading-hcl │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── reading-json │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── reading-sops │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── reading-tfvars │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── secrets.txt │ │ ├── shared.hcl │ │ ├── shared.json │ │ ├── shared.tfvars │ │ └── test_pgp_key.asc │ ├── validate-inputs │ │ ├── fail-generated-var │ │ │ ├── main.tf │ │ │ ├── terragrunt.hcl │ │ │ └── variables.tf │ │ ├── fail-included-unused │ │ │ ├── module │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── fail-no-inputs │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── fail-remote-module │ │ │ └── terragrunt.hcl │ │ ├── fail-unused-inputs │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── fail-unused-varfile │ │ │ ├── main.tf │ │ │ ├── terragrunt.hcl │ │ │ └── varfiles │ │ │ │ └── main.tfvars │ │ ├── success-autovar-file │ │ │ ├── bar.auto.tfvars.json │ │ │ ├── foo.auto.tfvars │ │ │ ├── main.tf │ │ │ ├── terraform.tfvars │ │ │ ├── terraform.tfvars.json │ │ │ └── terragrunt.hcl │ │ ├── success-cli-args │ │ │ ├── main.tf │ │ │ ├── terragrunt.hcl │ │ │ └── varfiles │ │ │ │ └── main.tfvars │ │ ├── success-included │ │ │ ├── module │ │ │ │ ├── main.tf │ │ │ │ └── terragrunt.hcl │ │ │ └── root.hcl │ │ ├── success-inputs-only │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── success-mixed │ │ │ ├── main.tf │ │ │ ├── terragrunt.hcl │ │ │ └── varfiles │ │ │ │ └── main.tfvars │ │ ├── success-null-default │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── success-var-file │ │ │ ├── main.tf │ │ │ ├── terragrunt.hcl │ │ │ └── varfiles │ │ │ └── main.tfvars │ ├── version-check │ │ ├── a │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ ├── b │ │ │ ├── main.tf │ │ │ └── terragrunt.hcl │ │ └── root.hcl │ └── version-invocation │ │ ├── app │ │ ├── main.tf │ │ └── terragrunt.hcl │ │ ├── dependency-with-custom-version │ │ ├── .tool-versions │ │ ├── main.tf │ │ └── terragrunt.hcl │ │ └── dependency │ │ ├── main.tf │ │ └── terragrunt.hcl ├── helpers │ ├── aws.go │ ├── logger │ │ └── logger.go │ ├── package.go │ ├── test_helpers.go │ ├── test_helpers_unix.go │ └── test_helpers_windows.go ├── integration_auto_retry_test.go ├── integration_aws_oidc_test.go ├── integration_aws_test.go ├── integration_awsgcp_test.go ├── integration_catalog_test.go ├── integration_common_test.go ├── integration_debug_test.go ├── integration_deprecated_test.go ├── integration_destroy_test.go ├── integration_docs_aws_test.go ├── integration_docs_test.go ├── integration_download_test.go ├── integration_engine_test.go ├── integration_errors_test.go ├── integration_exclude_test.go ├── integration_exec_test.go ├── integration_feature_flags_test.go ├── integration_find_test.go ├── integration_functions_test.go ├── integration_gcp_test.go ├── integration_graph_test.go ├── integration_hooks_test.go ├── integration_include_test.go ├── integration_json_test.go ├── integration_list_test.go ├── integration_local_dev_test.go ├── integration_locals_test.go ├── integration_parse_test.go ├── integration_registry_test.go ├── integration_regressions_test.go ├── integration_run_test.go ├── integration_s3_encryption_test.go ├── integration_scaffold_ssh_test.go ├── integration_scaffold_test.go ├── integration_serial_aws_test.go ├── integration_serial_gcp_test.go ├── integration_serial_test.go ├── integration_sops_kms_test.go ├── integration_sops_test.go ├── integration_ssh_test.go ├── integration_stacks_test.go ├── integration_strict_test.go ├── integration_test.go ├── integration_tflint_test.go ├── integration_tofu_state_encryption_test.go ├── integration_units_reading_test.go ├── integration_unix_test.go ├── integration_windows_test.go └── race_test.go ├── tf ├── cache │ ├── config.go │ ├── controllers │ │ ├── discovery.go │ │ ├── downloader.go │ │ └── provider.go │ ├── handlers │ │ ├── common_provider.go │ │ ├── direct_provider.go │ │ ├── errors.go │ │ ├── filesystem_mirror_provider.go │ │ ├── network_mirror_provider.go │ │ ├── provider.go │ │ ├── provider_test.go │ │ ├── proxy_provider.go │ │ └── registry_urls.go │ ├── helpers │ │ ├── client.go │ │ ├── http.go │ │ └── reverse_proxy.go │ ├── middleware │ │ ├── key_auth.go │ │ ├── logger.go │ │ ├── package.go │ │ └── recover.go │ ├── models │ │ ├── helper.go │ │ ├── provider.go │ │ └── provider_test.go │ ├── router │ │ ├── controller.go │ │ └── router.go │ ├── server.go │ └── services │ │ ├── provider_cache.go │ │ └── service.go ├── cliconfig │ ├── config.go │ ├── config_test.go │ ├── credentials.go │ ├── provider_installation.go │ └── user_config.go ├── context.go ├── detailed_exitcode.go ├── doc.go ├── errors.go ├── getproviders │ ├── hash.go │ ├── hash_test.go │ ├── lock.go │ ├── lock_test.go │ ├── mocks │ │ ├── mock_lock.go │ │ └── mock_provider.go │ ├── package_authentication.go │ ├── package_authentication_test.go │ ├── provider.go │ ├── public_keys.go │ └── testdata │ │ └── filesystem-mirror │ │ ├── registry.terraform.io │ │ └── hashicorp │ │ │ └── null │ │ │ ├── terraform-provider-null_2.1.0_linux_amd64.zip │ │ │ └── terraform-provider-null_invalid.zip │ │ └── tfe.example.com │ │ └── AwesomeCorp │ │ └── happycloud │ │ └── 0.1.0-alpha.2 │ │ └── darwin_amd64 │ │ ├── extra-data.txt │ │ └── terraform-provider-happycloud ├── getter.go ├── getter_test.go ├── log.go ├── run_cmd.go ├── run_cmd_test.go ├── source.go ├── source_test.go ├── testdata │ └── test_outputs.sh └── tf.go ├── tflint ├── README.md ├── tflint.go └── tflint_test.go └── util ├── collections.go ├── collections_test.go ├── datetime.go ├── datetime_test.go ├── file.go ├── file_test.go ├── hash.go ├── jsons.go ├── jsons_test.go ├── lockfile.go ├── locks.go ├── locks_test.go ├── min.go ├── min_test.go ├── prefix-writer.go ├── prefix-writer_test.go ├── random.go ├── random_test.go ├── reflect.go ├── reflect_test.go ├── retry.go ├── shell.go ├── shell_test.go ├── strings.go ├── testdata └── fixture-glob-canonical │ ├── module-a │ └── terragrunt.hcl │ └── module-b │ ├── module-b-child │ ├── main.tf │ └── terragrunt.hcl │ └── root.hcl ├── trap_writer.go ├── util.go └── writer_notifier.go /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | skip = go.mod,go.sum,*.svg,Gemfile.lock,bun.lock 3 | ignore-words-list = dRan,implementors 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: gruntwork-io 4 | -------------------------------------------------------------------------------- /.github/scripts/setup/generate-mocks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | make generate-mocks 6 | -------------------------------------------------------------------------------- /.github/scripts/setup/sops.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | gpg --import --no-tty --batch --yes ./test/fixtures/sops/test_pgp_key.asc 6 | -------------------------------------------------------------------------------- /.github/scripts/setup/terraform-switch-latest-oss.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install Terraform 1.5 using common script 3 | .github/scripts/setup/terraform-switch.sh 1.5 4 | -------------------------------------------------------------------------------- /.github/scripts/setup/terraform-switch-latest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install Terraform 1.12 3 | .github/scripts/setup/terraform-switch.sh 1.12 4 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/gruntwork-io/pre-commit 3 | rev: v0.1.29 4 | hooks: 5 | - id: tofu-fmt 6 | - id: goimports 7 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @denis256 @yhakbar 2 | 3 | -------------------------------------------------------------------------------- /cli/commands/hcl/format/testdata/fixtures/ignored/.gitignore: -------------------------------------------------------------------------------- 1 | !.terragrunt-cache 2 | -------------------------------------------------------------------------------- /codegen/codegen.go: -------------------------------------------------------------------------------- 1 | // Package codegen contains routines for generating terraform code 2 | package codegen 3 | -------------------------------------------------------------------------------- /docs-starlight/mise.toml: -------------------------------------------------------------------------------- 1 | [tools] 2 | bun = "1.2.2" 3 | poetry = "2.1.1" 4 | python = "3.13.2" 5 | -------------------------------------------------------------------------------- /docs-starlight/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs-starlight/public/favicon.ico -------------------------------------------------------------------------------- /docs-starlight/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * Disallow: / 2 | -------------------------------------------------------------------------------- /docs-starlight/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "installCommand": "bun i && curl -fsSL https://d2lang.com/install.sh | sh -s --", 3 | "buildCommand": "bun run build" 4 | } 5 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | .jekyll-cache 2 | _site 3 | -------------------------------------------------------------------------------- /docs/.tool-versions: -------------------------------------------------------------------------------- 1 | ruby 3.3.4 2 | 3 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | terragrunt.gruntwork.io -------------------------------------------------------------------------------- /docs/_includes/collection_browser/_cta-section.html: -------------------------------------------------------------------------------- 1 | {% include links-n-built-by.html %} 2 | -------------------------------------------------------------------------------- /docs/_includes/links-n-built-by.html: -------------------------------------------------------------------------------- 1 |
2 | {% include built-by.html %} 3 | {% include links-section.html %} 4 |
5 | -------------------------------------------------------------------------------- /docs/_includes/links-n-use-cases.html: -------------------------------------------------------------------------------- 1 |
2 | {% include use-cases-box.html %} 3 | {% include links-section.html %} 4 |
5 | -------------------------------------------------------------------------------- /docs/_includes/styles.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | custom_js: 4 | - prism 5 | --- 6 | 7 |
8 | {{ content }} 9 |
10 | -------------------------------------------------------------------------------- /docs/_pages/commercial-support/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /commercial-support/ 3 | redirect_to: https://gruntwork.io/support 4 | --- 5 | -------------------------------------------------------------------------------- /docs/_pages/contact/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /contact/ 3 | redirect_to: https://gruntwork.io/contact 4 | --- 5 | 6 | -------------------------------------------------------------------------------- /docs/_posts/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/_posts/.keep -------------------------------------------------------------------------------- /docs/assets/css/pages/cookie-policy.scss: -------------------------------------------------------------------------------- 1 | .page-cookie-policy { 2 | .container > .row + .row { 3 | padding-top: 28px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /docs/assets/css/pages/support.scss: -------------------------------------------------------------------------------- 1 | .page-support { 2 | .subheader { 3 | font-weight: bold; font-style:italic; margin: -16px 0 10px 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /docs/assets/img/contact/bottom@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/contact/bottom@3x.png -------------------------------------------------------------------------------- /docs/assets/img/contact/right@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/contact/right@3x.png -------------------------------------------------------------------------------- /docs/assets/img/contact/top@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/contact/top@3x.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/apple-icon.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/favicon.ico -------------------------------------------------------------------------------- /docs/assets/img/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /docs/assets/img/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /docs/assets/img/home/built-by-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/built-by-left.png -------------------------------------------------------------------------------- /docs/assets/img/home/built-by-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/built-by-right.png -------------------------------------------------------------------------------- /docs/assets/img/home/links-shapes-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/links-shapes-left.png -------------------------------------------------------------------------------- /docs/assets/img/home/links-shapes-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/links-shapes-right.png -------------------------------------------------------------------------------- /docs/assets/img/home/t-all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/t-all.png -------------------------------------------------------------------------------- /docs/assets/img/home/t-o-1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/t-o-1@3x.png -------------------------------------------------------------------------------- /docs/assets/img/home/t-o-2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/t-o-2@3x.png -------------------------------------------------------------------------------- /docs/assets/img/home/t-o-3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/home/t-o-3@3x.png -------------------------------------------------------------------------------- /docs/assets/img/icons/menu-dots-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/icons/menu-dots-icon.png -------------------------------------------------------------------------------- /docs/assets/img/icons/play_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/icons/play_icon.png -------------------------------------------------------------------------------- /docs/assets/img/link-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/link-icon.png -------------------------------------------------------------------------------- /docs/assets/img/logos/discord-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/logos/discord-logo.png -------------------------------------------------------------------------------- /docs/assets/img/logos/github-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/logos/github-logo.png -------------------------------------------------------------------------------- /docs/assets/img/no-search-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/no-search-results.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/screenshots/find.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/list-long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/screenshots/list-long.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/list-narrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/screenshots/list-narrow.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/list-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/screenshots/list-tree.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/screenshots/list.png -------------------------------------------------------------------------------- /docs/assets/img/terragrunt-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/docs/assets/img/terragrunt-thumbnail.png -------------------------------------------------------------------------------- /docs/jekyll-serve.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | echo -e "\e[1;31mRun Jekyll serve to watch for changes" 6 | bundle exec jekyll serve --livereload --drafts --host 0.0.0.0 7 | -------------------------------------------------------------------------------- /internal/cli/flag_test.go: -------------------------------------------------------------------------------- 1 | package cli_test 2 | 3 | func mockDestValue[T any](val T) *T { 4 | return &val 5 | } 6 | -------------------------------------------------------------------------------- /internal/os/exec/testdata/infinite_loop.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | :loop 4 | sleep 0.1 5 | goto loop -------------------------------------------------------------------------------- /internal/os/exec/testdata/test_exit_code.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | exit %1 -------------------------------------------------------------------------------- /internal/os/exec/testdata/test_exit_code.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | exit $1 -------------------------------------------------------------------------------- /internal/services/catalog/module/testdata/find_modules/gitdir/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /internal/strict/view/plaintext/plaintext.go: -------------------------------------------------------------------------------- 1 | // Package plaintext implements the view.Render interface for displaying strict controls in plaintext format. 2 | package plaintext 3 | -------------------------------------------------------------------------------- /internal/strict/view/view.go: -------------------------------------------------------------------------------- 1 | // Package view contains the rendering logic for printing strict controls. 2 | package view 3 | -------------------------------------------------------------------------------- /internal/view/view.go: -------------------------------------------------------------------------------- 1 | // Package view contains the rendering logic for terragrunt. 2 | package view 3 | -------------------------------------------------------------------------------- /pkg/log/fields.go: -------------------------------------------------------------------------------- 1 | package log 2 | 3 | // Fields is the type used to pass arguments to `WithFields`. 4 | type Fields map[string]any 5 | -------------------------------------------------------------------------------- /scripts/pre-commit: -------------------------------------------------------------------------------- 1 | make fmt -------------------------------------------------------------------------------- /test/benchmarks/.gitignore: -------------------------------------------------------------------------------- 1 | *.test 2 | -------------------------------------------------------------------------------- /test/fixtures/assume-role-web-identity/file-path/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "test_file" { 2 | content = "test_file" 3 | filename = "${path.module}/test_file.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/assume-role/duration/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "test_file" { 2 | content = "test_file" 3 | filename = "${path.module}/test_file.txt" 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/creds-for-dependency/dependency/main.tf: -------------------------------------------------------------------------------- 1 | output "foo" { 2 | value = "foo" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/creds-for-dependency/dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | aws_account_id = get_aws_account_id() 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/creds-for-dependency/dependent/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "dependency" { 2 | config_path = "../dependency" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/multiple-apps/app3/main.tf: -------------------------------------------------------------------------------- 1 | variable "foo" {} 2 | 3 | output "foo-app3" { 4 | value = var.foo 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/multiple-apps/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/oidc/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/auth-provider-cmd/oidc/main.tf -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/sops/creds.config: -------------------------------------------------------------------------------- 1 | access_key_id=__FILL_AWS_ACCESS_KEY_ID__ 2 | secret_access_key=__FILL_AWS_SECRET_ACCESS_KEY__ 3 | session_token= 4 | tf_var_foo= 5 | -------------------------------------------------------------------------------- /test/fixtures/auth-provider-cmd/sops/main.tf: -------------------------------------------------------------------------------- 1 | variable "hello" {} 2 | 3 | output "hello" { 4 | value = var.hello 5 | } 6 | 7 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/apply-all/app1/main.tf: -------------------------------------------------------------------------------- 1 | output "app1_text" { 2 | value = "app1 output" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/apply-all/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = "${find_in_parent_folders("root.hcl")}" 3 | } 4 | 5 | dependencies { 6 | paths = ["../app3"] 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/apply-all/app2/main.tf: -------------------------------------------------------------------------------- 1 | output "app2_text" { 2 | value = "app2 output" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/apply-all/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = "${find_in_parent_folders("root.hcl")}" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/apply-all/root.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/auto-retry/configurable-retries-incorrect-retry-attempts/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/configurable-retries-incorrect-retry-attempts/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | retry_max_attempts = 0 2 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/configurable-retries-incorrect-sleep-interval/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/configurable-retries-incorrect-sleep-interval/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | retry_sleep_interval_sec = -1 2 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/configurable-retries/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | retry_max_attempts = 5 2 | retry_sleep_interval_sec = 0 3 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/custom-errors-not-set/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # No retryable_errors set 2 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/custom-errors/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | retryable_errors = [ 2 | "My own little error" 3 | ] 4 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/exhaust/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/auto-retry/get-default-errors/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | retryable_errors = concat(get_default_retryable_errors(), ["my special snowflake"]) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/auto-retry/re-run/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/aws-provider-patch/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty. This is merely a placeholder so that Terragrunt treats this folder as a Terragrunt module. -------------------------------------------------------------------------------- /test/fixtures/broken-dependency/app/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/broken-dependency/app/main.tf -------------------------------------------------------------------------------- /test/fixtures/broken-dependency/dependency/main.tf: -------------------------------------------------------------------------------- 1 | module "example_module" { 2 | source = "/tmp/not-existing-path" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/broken-locals/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/broken-locals/main.tf -------------------------------------------------------------------------------- /test/fixtures/broken-locals/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | file = yamldecode(sops_decrypt_file("not-existing-file-that-will-fail-locals-evaluating.yaml")) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex-legacy-root/common.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | github_org = "gruntwork-io" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex-legacy-root/dev/us-west-1/modules/terraform-aws-eks/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex-legacy-root/prod/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex-legacy-root/stage/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex/common.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | github_org = "gruntwork-io" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex/dev/us-west-1/modules/terraform-aws-eks/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex/prod/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/complex/stage/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/config2.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | baseRepo = "github.com/gruntwork-io" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/catalog/config3.hcl: -------------------------------------------------------------------------------- 1 | catalog { 2 | } 3 | -------------------------------------------------------------------------------- /test/fixtures/cli-flag-hints/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "tfr://registry.terraform.io/yorinasub17/terragrunt-registry-test/null//modules/one?version=0.0.2" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-attr/main.tf: -------------------------------------------------------------------------------- 1 | variable "text" {} -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-attr/test.tf: -------------------------------------------------------------------------------- 1 | # Generated by Terragrunt. Sig: nIlQXj57tbuaRZEa 2 | output "text" { 3 | value = var.text 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/disable-signature/.gitignore: -------------------------------------------------------------------------------- 1 | data.json 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/disable-signature/main.tf: -------------------------------------------------------------------------------- 1 | output "text" { 2 | value = jsondecode(file("${path.module}/data.json"))["text"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/disable/.gitignore: -------------------------------------------------------------------------------- 1 | data.txt 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/enable/.gitignore: -------------------------------------------------------------------------------- 1 | data.txt 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/nested/.gitignore: -------------------------------------------------------------------------------- 1 | random_file.txt 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/nested/child_inherit/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" { 3 | path = "bar.tfstate" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/overwrite/.gitignore: -------------------------------------------------------------------------------- 1 | foo.tfstate 2 | bar.tfstate 3 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/overwrite/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" { 3 | path = "bar.tfstate" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/codegen/generate-block/overwrite_terragrunt_error/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" { 3 | path = "bar.tfstate" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remote-state/base/.gitignore: -------------------------------------------------------------------------------- 1 | foo.tfstate 2 | backend.tf 3 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remote-state/overwrite/.gitignore: -------------------------------------------------------------------------------- 1 | foo.tfstate 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remote-state/overwrite/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" { 3 | path = "bar.tfstate" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remote-state/s3/.gitignore: -------------------------------------------------------------------------------- 1 | backend.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remote-state/skip/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remove-file/remove/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" { 3 | path = "bar.tfstate" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remove-file/remove/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remove-file/remove_terragrunt/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remove-file/remove_terragrunt_error/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" { 3 | path = "bar.tfstate" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remove-file/remove_terragrunt_error/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remove-file/skip/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" { 3 | path = "bar.tfstate" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/codegen/remove-file/skip/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/commands-that-need-input/main.tf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/fixtures/config-files/ignore-cached-config/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/config-files/ignore-terraform-data-dir/subdir/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-configs/subdir-2/subdir/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-configs/subdir-3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-configs/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-json-configs/subdir-2/subdir/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-json-configs/subdir-3/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-json-configs/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-mixed-configs/subdir-2/subdir/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-mixed-configs/subdir-3/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/fixtures/config-files/multiple-mixed-configs/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/fixtures/config-files/none/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/config-files/none/empty.txt -------------------------------------------------------------------------------- /test/fixtures/config-files/none/subdir/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/config-files/one-config/subdir/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/config-files/one-json-config/subdir/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/fixtures/config-files/single-json-config/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/fixtures/config-files/with-non-default-names/app/main.hcl: -------------------------------------------------------------------------------- 1 | include "parent" { 2 | path = "../parent.hcl" 3 | } -------------------------------------------------------------------------------- /test/fixtures/config-files/with-non-default-names/app/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/config-files/with-non-default-names/common.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | common = run_cmd("echo", "common_hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/config-terraform-functions/other-file.txt: -------------------------------------------------------------------------------- 1 | This is a test file 2 | -------------------------------------------------------------------------------- /test/fixtures/dependency-optimisation/module-a/main.tf: -------------------------------------------------------------------------------- 1 | output "test_output" { 2 | value = "hello from module-a" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/dependency-optimisation/module-b/main.tf: -------------------------------------------------------------------------------- 1 | variable "test_var" { 2 | type = string 3 | } 4 | 5 | output "test_output" { 6 | value = var.test_var 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/dependency-optimisation/module-c/main.tf: -------------------------------------------------------------------------------- 1 | variable "test_var" { 2 | type = string 3 | } 4 | 5 | output "result" { 6 | value = var.test_var 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/dependency-output/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "input_value" {} 2 | 3 | output "output_value" { 4 | value = var.input_value 5 | } -------------------------------------------------------------------------------- /test/fixtures/dependency-output/dependency/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | 3 | value = "42" 4 | } -------------------------------------------------------------------------------- /test/fixtures/destroy-order/app/module-a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "Module A" 3 | } 4 | 5 | terraform { 6 | source = "../../hello" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/destroy-order/app/module-c/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "Module C" 3 | } 4 | 5 | terraform { 6 | source = "../../hello" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/destroy-order/app/module-e/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "Module E" 3 | } 4 | 5 | terraform { 6 | source = "../../hello" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/destroy-order/hello/hello/main.tf: -------------------------------------------------------------------------------- 1 | output "hello" { 2 | value = "Hello" 3 | } -------------------------------------------------------------------------------- /test/fixtures/destroy-warning/root.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/destroy-warning/root.hcl -------------------------------------------------------------------------------- /test/fixtures/destroy-warning/vpc/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/destroy-warning/vpc/main.tf -------------------------------------------------------------------------------- /test/fixtures/destroy-warning/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/changes/app1/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "example" { 2 | content = "Test" 3 | filename = "${path.module}/example.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/changes/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/changes/app2/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "example" { 2 | content = "Test" 3 | filename = "${path.module}/example.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/changes/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/error/app1/main.tf: -------------------------------------------------------------------------------- 1 | data "local_file" "read_not_existing_file" { 2 | filename = "${path.module}/not-existing-file.txt" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/error/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/error/app2/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "example" { 2 | content = "Test" 3 | filename = "${path.module}/example.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/detailed-exitcode/fail-on-first-run/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | retry_max_attempts = 2 2 | retry_sleep_interval_sec = 1 3 | retryable_errors = [".*"] 4 | -------------------------------------------------------------------------------- /test/fixtures/dirs/terragrunt.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/dirs/terragrunt.hcl -------------------------------------------------------------------------------- /test/fixtures/disabled-path/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/disabled-path/main.tf -------------------------------------------------------------------------------- /test/fixtures/disabled-path/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "/dev/null" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/disabled/app/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/disabled/app/main.tf -------------------------------------------------------------------------------- /test/fixtures/disabled/unit-disabled/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | broken hcl file 2 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-01/foo/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "file" { 2 | content = "Hello, World!" 3 | filename = "${path.module}/hi.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-03/bar/main.tf: -------------------------------------------------------------------------------- 1 | variable "content" {} 2 | 3 | module "shared" { 4 | source = "../shared" 5 | 6 | content = var.content 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-03/foo/main.tf: -------------------------------------------------------------------------------- 1 | variable "content" {} 2 | 3 | module "shared" { 4 | source = "../shared" 5 | 6 | content = var.content 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-04/.gitignore: -------------------------------------------------------------------------------- 1 | .terragrunt-cache 2 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-05.1/.gitignore: -------------------------------------------------------------------------------- 1 | .terragrunt-cache 2 | hi.txt -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-05/.gitignore: -------------------------------------------------------------------------------- 1 | .terragrunt-cache 2 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-05/README.md: -------------------------------------------------------------------------------- 1 | Note that this step is the same as the previous step. 2 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-06/.gitignore: -------------------------------------------------------------------------------- 1 | .terragrunt-cache 2 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-06/shared/output.tf: -------------------------------------------------------------------------------- 1 | output "content" { 2 | value = local_file.file.content 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-07.1/.gitignore: -------------------------------------------------------------------------------- 1 | .terragrunt-cache 2 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-07.1/shared/output.tf: -------------------------------------------------------------------------------- 1 | output "content" { 2 | value = local_file.file.content 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-07/.gitignore: -------------------------------------------------------------------------------- 1 | .terragrunt-cache 2 | -------------------------------------------------------------------------------- /test/fixtures/docs/01-quick-start/step-07/shared/output.tf: -------------------------------------------------------------------------------- 1 | output "content" { 2 | value = local_file.file.content 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/docs/02-overview/step-04-configuration-hierarchy/us-east-1/region.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | region = "us-east-1" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/docs/02-overview/step-05-exposed-includes/us-east-1/region.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | region = "us-east-1" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/docs/02-overview/step-05-exposed-includes/us-west-2/region.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | region = "us-west-2" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/download-source/download-dir-version-file-local-hash/main.tf: -------------------------------------------------------------------------------- 1 | # Local file hash test -------------------------------------------------------------------------------- /test/fixtures/download-source/download-dir-version-file-local-hash/version-file.txt: -------------------------------------------------------------------------------- 1 | h1:iZ9U+r4EPyqBU2l8Ih0StqixGyMnZTNoNqSGeEMT0QI= -------------------------------------------------------------------------------- /test/fixtures/download-source/download-dir-version-file-no-query/main.tf: -------------------------------------------------------------------------------- 1 | # This file is just a placeholder -------------------------------------------------------------------------------- /test/fixtures/download-source/download-dir-version-file-no-query/version-file.txt: -------------------------------------------------------------------------------- 1 | 2jmj7l5rSw0yVb_vlWAYkK_YBwk -------------------------------------------------------------------------------- /test/fixtures/download-source/download-dir-version-file-tf-code/main.tf: -------------------------------------------------------------------------------- 1 | # This file is just a placeholder -------------------------------------------------------------------------------- /test/fixtures/download-source/download-dir-version-file-tf-code/version-file.txt: -------------------------------------------------------------------------------- 1 | zqg_v-R2bnqTbCe-ZO3mHRTRKX0 -------------------------------------------------------------------------------- /test/fixtures/download-source/download-dir-version-file/version-file.txt: -------------------------------------------------------------------------------- 1 | zqg_v-R2bnqTbCe-ZO3mHRTRKX0 -------------------------------------------------------------------------------- /test/fixtures/download-source/hello-world-2/main.tf: -------------------------------------------------------------------------------- 1 | # Hello, World 2 -------------------------------------------------------------------------------- /test/fixtures/download-source/hello-world-2/version-file.txt: -------------------------------------------------------------------------------- 1 | 2jmj7l5rSw0yVb_vlWAYkK_YBwk -------------------------------------------------------------------------------- /test/fixtures/download-source/hello-world-local-hash-failed/main.tf: -------------------------------------------------------------------------------- 1 | # Local file hash test -------------------------------------------------------------------------------- /test/fixtures/download-source/hello-world-local-hash/main.tf: -------------------------------------------------------------------------------- 1 | # Local file hash test -------------------------------------------------------------------------------- /test/fixtures/download-source/hello-world-version-remote/main.tf: -------------------------------------------------------------------------------- 1 | # Hello, World version remote -------------------------------------------------------------------------------- /test/fixtures/download-source/hello-world-version-remote/version-file.txt: -------------------------------------------------------------------------------- 1 | VfXVGR1zzP_GpoK2lMFIlJyW-ko -------------------------------------------------------------------------------- /test/fixtures/download-source/hello-world/main.tf: -------------------------------------------------------------------------------- 1 | # Hello, World -------------------------------------------------------------------------------- /test/fixtures/download/custom-lock-file-terraform/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "World" 3 | } 4 | 5 | terraform { 6 | source = "../custom-lock-file-module" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/download/custom-lock-file-tofu/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "World" 3 | } 4 | 5 | terraform { 6 | source = "../custom-lock-file-module" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/download/extra-args/common.tfvars: -------------------------------------------------------------------------------- 1 | name = "extra args" -------------------------------------------------------------------------------- /test/fixtures/download/hello-world/hello/main.tf: -------------------------------------------------------------------------------- 1 | output "hello" { 2 | value = "Hello" 3 | } -------------------------------------------------------------------------------- /test/fixtures/download/local-include-with-prevent-destroy-dependencies/root.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = ["../module-a"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/download/local-relative/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "World" 3 | } 4 | 5 | terraform { 6 | source = "..//relative" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/download/local-windows/JZwoL6Viko8bzuRvTOQFx3Jh8vs/3mU4huxMLOXOW5ZgJOFXGUFDKc8/hello/main.tf: -------------------------------------------------------------------------------- 1 | output "hello" { 2 | value = "Hello" 3 | } -------------------------------------------------------------------------------- /test/fixtures/download/local-with-allowed-hidden/live/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../modules" 3 | include_in_copy = [".nonce"] 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/download/local-with-allowed-hidden/modules/.nonce: -------------------------------------------------------------------------------- 1 | Hello world 2 | -------------------------------------------------------------------------------- /test/fixtures/download/local-with-allowed-hidden/modules/main.tf: -------------------------------------------------------------------------------- 1 | output "text" { 2 | value = trimspace(file(".nonce")) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/download/local-with-hidden-folder/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "World" 3 | } 4 | 5 | terraform { 6 | source = "../hello-world" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/download/local/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | name = "World" 3 | } 4 | 5 | terraform { 6 | source = "../hello-world" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/download/remote-invalid/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "https://github.com/totallyfakedoesnotexist/notreal.git//foo?ref=v1.2.3" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/download/remote-module-in-root/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "github.com/gruntwork-io/terraform-module-in-root-for-terragrunt-test.git" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/download/stdout-test/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../stdout" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/empty-state/main.tf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/fixtures/empty-state/terragrunt.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/empty-state/terragrunt.hcl -------------------------------------------------------------------------------- /test/fixtures/engine/engine-dependencies/.gitignore: -------------------------------------------------------------------------------- 1 | backend.gen.tf 2 | test.txt 3 | -------------------------------------------------------------------------------- /test/fixtures/engine/engine-dependencies/app1/main.tf: -------------------------------------------------------------------------------- 1 | output "value" { 2 | value = "app1-test" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/engine-dependencies/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/fixtures/engine/local-engine/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | engine { 2 | source = "__engine_source__" 3 | } 4 | 5 | inputs = { 6 | value = "test_input_value_from_terragrunt" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app1/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app2/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app3/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app4/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app4/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app5/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-latest-run-all/app5/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app1/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app2/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app3/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app4/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app4/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app5/main.tf: -------------------------------------------------------------------------------- 1 | 2 | resource "local_file" "test" { 3 | content = "app1" 4 | filename = "${path.module}/test.txt" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/engine/opentofu-run-all/app5/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/engine/trace-parent/get_traceparent.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | echo "$1 {\"traceparent\": \"${TRACEPARENT}\"}" 5 | -------------------------------------------------------------------------------- /test/fixtures/ephemeral-inputs/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | inputs = { 3 | test = "test input 46521694" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/error-print/custom-tf-script.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Custom error from script" >&2 4 | 5 | exit 1 6 | -------------------------------------------------------------------------------- /test/fixtures/error-print/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/error-print/main.tf -------------------------------------------------------------------------------- /test/fixtures/error-print/terragrunt.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/error-print/terragrunt.hcl -------------------------------------------------------------------------------- /test/fixtures/errors/default/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/errors/default/main.tf -------------------------------------------------------------------------------- /test/fixtures/errors/run-all-ignore/app2/main.tf: -------------------------------------------------------------------------------- 1 | output "app2" { 2 | value = "value-from-app-2" 3 | } -------------------------------------------------------------------------------- /test/fixtures/errors/run-all/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "common" { 2 | path = find_in_parent_folders("common.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/errors/run-all/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "common" { 2 | path = find_in_parent_folders("common.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/exclude/action/exclude-apply/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | exclude { 2 | if = true 3 | actions = ["apply"] 4 | exclude_dependencies = true 5 | } -------------------------------------------------------------------------------- /test/fixtures/exclude/action/exclude-plan/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | exclude { 2 | if = true 3 | actions = ["plan"] 4 | exclude_dependencies = true 5 | } -------------------------------------------------------------------------------- /test/fixtures/exclude/all-except-output/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | exclude { 2 | if = true 3 | actions = ["all_except_output"] 4 | exclude_dependencies = true 5 | } -------------------------------------------------------------------------------- /test/fixtures/exclude/basic/unit1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | exclude { 2 | if = true 3 | actions = ["plan"] 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/exclude/basic/unit2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | exclude { 2 | if = true 3 | actions = ["apply"] 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/exclude/basic/unit3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | // No exclude configuration 2 | -------------------------------------------------------------------------------- /test/fixtures/exclude/default/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | exclude { 2 | if = true 3 | actions = ["all"] 4 | exclude_dependencies = true 5 | } -------------------------------------------------------------------------------- /test/fixtures/exclude/dependencies/dep/main.tf: -------------------------------------------------------------------------------- 1 | output "data1" { 2 | value = "data1" 3 | } -------------------------------------------------------------------------------- /test/fixtures/exclude/disabled/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | exclude { 2 | if = false 3 | actions = ["all"] 4 | exclude_dependencies = true 5 | } -------------------------------------------------------------------------------- /test/fixtures/exclude/feature-flags/flags.hcl: -------------------------------------------------------------------------------- 1 | 2 | feature "exclude1" { 3 | default = false 4 | } 5 | 6 | feature "exclude2" { 7 | default = true 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/.terragrunt-excludes: -------------------------------------------------------------------------------- 1 | # Comment line 2 | a/ 3 | #b/ 4 | c/ 5 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/a/main.tf: -------------------------------------------------------------------------------- 1 | variable "value" { 2 | type = string 3 | default = "a" 4 | } 5 | 6 | output "value" { 7 | value = var.value 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/b/main.tf: -------------------------------------------------------------------------------- 1 | variable "value" { 2 | type = string 3 | default = "b" 4 | } 5 | 6 | output "value" { 7 | value = var.value 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/b/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/c/main.tf: -------------------------------------------------------------------------------- 1 | variable "value" { 2 | type = string 3 | default = "c" 4 | } 5 | 6 | output "value" { 7 | value = var.value 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/c/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/d/main.tf: -------------------------------------------------------------------------------- 1 | variable "value" { 2 | type = string 3 | default = "d" 4 | } 5 | 6 | output "value" { 7 | value = var.value 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/d/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/excludes-file/excludes-file-pass-as-flag: -------------------------------------------------------------------------------- 1 | b/ 2 | d/ 3 | -------------------------------------------------------------------------------- /test/fixtures/exec-cmd-tf-path/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "baz" { 2 | type = string 3 | } -------------------------------------------------------------------------------- /test/fixtures/exec-cmd-tf-path/dep/main.tf: -------------------------------------------------------------------------------- 1 | output "baz" { 2 | value = "baz" 3 | } -------------------------------------------------------------------------------- /test/fixtures/exec-cmd-tf-path/dep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/exec-cmd-tf-path/script.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "baz is ${TF_VAR_baz:-not set}" -------------------------------------------------------------------------------- /test/fixtures/exec-cmd/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "foo" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/exec-cmd/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } 4 | 5 | inputs = { 6 | foo = "FOO" 7 | bar = "BAR" 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/external-dependencies/module-a/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "Hello World, module-a" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/external-dependencies/module-a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/external-dependencies/module-b/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "Hello World, module-b" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/external-dependencies/module-b/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = [ 3 | "../module-a", 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/external-dependency/main.tf: -------------------------------------------------------------------------------- 1 | output "value" { 2 | value = "dep1" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/external-dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = ["/tmp/external-46521694"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/extra-args/dev.tfvars: -------------------------------------------------------------------------------- 1 | extra_var = "Hello, World from dev!" 2 | -------------------------------------------------------------------------------- /test/fixtures/extra-args/extra.tfvars: -------------------------------------------------------------------------------- 1 | extra_var = "Hello, World!" 2 | -------------------------------------------------------------------------------- /test/fixtures/extra-args/us-west-2.tfvars: -------------------------------------------------------------------------------- 1 | extra_var = "Hello, World from Oregon!" 2 | -------------------------------------------------------------------------------- /test/fixtures/failure/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/failure/main.tf -------------------------------------------------------------------------------- /test/fixtures/failure/missingvars/main.tf: -------------------------------------------------------------------------------- 1 | 2 | module "sub" { 3 | source = "..//submod" 4 | } 5 | 6 | 7 | -------------------------------------------------------------------------------- /test/fixtures/failure/missingvars/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/failure/submod/main.tf: -------------------------------------------------------------------------------- 1 | variable "missingvar1" {} 2 | variable "missingvar2" {} 3 | 4 | -------------------------------------------------------------------------------- /test/fixtures/failure/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/feature-flags/error-empty-flag/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | feature "test1" {} 2 | 3 | feature "test2" {} 4 | 5 | feature "test3" {} -------------------------------------------------------------------------------- /test/fixtures/find-parent/app/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/find-parent/app/main.tf -------------------------------------------------------------------------------- /test/fixtures/find-parent/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } 4 | 5 | include "root" { 6 | path = find_in_parent_folders("root.hcl") 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/find-parent/root.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/find-parent/root.hcl -------------------------------------------------------------------------------- /test/fixtures/find/basic/stack/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/find/basic/unit/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/find/dag/a-dependent/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "dep" { 2 | config_path = "../b-dependency" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/find/dag/b-dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/find/hidden/.hide/unit/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/find/hidden/stack/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/find/hidden/unit/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/find/include/bar/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/find/include/bar/main.tf -------------------------------------------------------------------------------- /test/fixtures/find/include/bar/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "cloud" { 2 | path = find_in_parent_folders("cloud.hcl") 3 | } -------------------------------------------------------------------------------- /test/fixtures/find/include/cloud.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/find/include/cloud.hcl -------------------------------------------------------------------------------- /test/fixtures/find/include/foo/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/find/include/foo/main.tf -------------------------------------------------------------------------------- /test/fixtures/find/internal-v-external/internal/b-dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/gcs-impersonate/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "gcs" {} 3 | } 4 | 5 | output "value" { 6 | value = "42" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/gcs-no-bucket/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "gcs" {} 3 | } 4 | 5 | output "result" { 6 | value = "42" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/gcs-no-prefix/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "gcs" {} 3 | } 4 | 5 | output "result" { 6 | value = "42" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/gcs-parallel-state-init/template/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "file" { 2 | content = "test file" 3 | filename = "${path.module}/file.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/gcs-parallel-state-init/template/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-aws-account-alias/main.tf: -------------------------------------------------------------------------------- 1 | variable "account_alias" { 2 | type = string 3 | } 4 | 5 | output "account_alias" { 6 | value = var.account_alias 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/get-aws-account-alias/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | account_alias = get_aws_account_alias() 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/aa/foo/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/aa/foo/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "foo" { 2 | config_path = "../foo" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/aba/bar/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/aba/bar/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "foo" { 2 | config_path = "../foo" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/aba/foo/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/aba/foo/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "bar" { 2 | config_path = "../bar" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abca/bar/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abca/bar/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "foo" { 2 | config_path = "../foo" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abca/baz/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abca/baz/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abca/foo/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abca/foo/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "bar" { 2 | config_path = "../bar" 3 | } 4 | 5 | dependency "baz" { 6 | config_path = "../baz" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/bar/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/bar/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "baz" { 2 | config_path = "../baz" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/baz/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/baz/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "car" { 2 | config_path = "../car" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/car/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/car/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "foo" { 2 | config_path = "../foo" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/foo/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/cycle/abcda/foo/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "bar" { 2 | config_path = "../bar" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/integration/app1/main.tf: -------------------------------------------------------------------------------- 1 | output "x" { 2 | value = 14 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/integration/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/integration/app2/main.tf: -------------------------------------------------------------------------------- 1 | output "y" { 2 | value = 28 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/integration/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/integration/app3/main.tf: -------------------------------------------------------------------------------- 1 | variable "x" {} 2 | 3 | variable "y" {} 4 | 5 | output "z" { 6 | value = var.x + var.y 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/get-output/localstate/modules/parent/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" {} 3 | } 4 | 5 | output "x" { 6 | value = 14 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/get-output/mock-outputs/dependent1/main.tf: -------------------------------------------------------------------------------- 1 | variable "the_answer" {} 2 | 3 | output "truth" { 4 | value = "The answer is ${var.the_answer}" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/get-output/mock-outputs/dependent2/main.tf: -------------------------------------------------------------------------------- 1 | variable "the_answer" {} 2 | 3 | output "fake" { 4 | value = "never ${var.the_answer}" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/get-output/mock-outputs/dependent3/main.tf: -------------------------------------------------------------------------------- 1 | variable "the_answer" {} 2 | 3 | output "truth" { 4 | value = "The answer is ${var.the_answer}" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/get-output/mock-outputs/source/main.tf: -------------------------------------------------------------------------------- 1 | output "the_answer" { 2 | value = 42 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/mock-outputs/source/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-mocks/deepdep/main.tf: -------------------------------------------------------------------------------- 1 | output "output" { 2 | value = "The answer is 42" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-mocks/deepdep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty. 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-mocks/dep/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = "No, ${var.input}" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-mocks/live/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = "They said, \"${var.input}\"" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-disable/.gitignore: -------------------------------------------------------------------------------- 1 | backend.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-disable/deepdep/main.tf: -------------------------------------------------------------------------------- 1 | output "output" { 2 | value = "The answer is 42" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-disable/deepdep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty. 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-disable/dep/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = "No, ${var.input}" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-disable/live/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = "They said, \"${var.input}\"" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-nogen/.gitignore: -------------------------------------------------------------------------------- 1 | backend.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-nogen/deepdep/main.tf: -------------------------------------------------------------------------------- 1 | output "output" { 2 | value = "The answer is 42" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-nogen/deepdep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty. 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization-nogen/live/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = "They said, \"${var.input}\"" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization/.gitignore: -------------------------------------------------------------------------------- 1 | backend.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization/deepdep/main.tf: -------------------------------------------------------------------------------- 1 | output "output" { 2 | value = "The answer is 42" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization/deepdep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty. 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization/dep/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = "No, ${var.input}" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/nested-optimization/live/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = "They said, \"${var.input}\"" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-1102/.gitignore: -------------------------------------------------------------------------------- 1 | .terraform.lock.hcl 2 | foo.tfstate -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-1102/main.tf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-1124/live/dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../../modules//dependency" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-1124/modules/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "foo" {} 2 | output "foo" { value = var.foo } 3 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-1273/dep/main.tf: -------------------------------------------------------------------------------- 1 | output "output" { 2 | value = "hello, world" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-1273/main/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | output "output" { 3 | value = var.input 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-854/root/environments/network/main.tf: -------------------------------------------------------------------------------- 1 | output "id" { 2 | value = 42 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-854/root/environments/network/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = "../../terragrunt.hcl" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-854/root/environments/web/main.tf: -------------------------------------------------------------------------------- 1 | output "id" { 2 | value = 42 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-854/root/environments/web/sg/main.tf: -------------------------------------------------------------------------------- 1 | output "id" { 2 | value = 42 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-output/regression-854/root/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/get-path/get-path-from-repo-root/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | path_from_root = get_path_from_repo_root() 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-path/path_relative_from_include/lives/dev/base/tier.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | tier = "base" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-path/path_relative_from_include/lives/dev/cluster/tier.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | tier = "cluster" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-path/path_relative_from_include/lives/dev/env.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | environment = "dev" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-path/path_relative_from_include/lives/org.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | organization_unit = "test" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-path/path_relative_from_include/modules/base/main.tf: -------------------------------------------------------------------------------- 1 | output "some_output" { 2 | value = "something" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-platform/main.tf: -------------------------------------------------------------------------------- 1 | variable "platform" { 2 | type = string 3 | } 4 | 5 | output "platform" { 6 | value = var.platform 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/get-platform/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | platform = get_platform() 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-repo-root/main.tf: -------------------------------------------------------------------------------- 1 | variable "repo_root" { 2 | type = string 3 | } 4 | 5 | output "repo_root" { 6 | value = var.repo_root 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/get-repo-root/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | repo_root = get_repo_root() 3 | repo_root_2 = get_repo_root() 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/get-terragrunt-source-cli/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | terragrunt_source = get_terragrunt_source_cli_flag() 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/get-working-dir/main.tf: -------------------------------------------------------------------------------- 1 | variable "working_dir" { 2 | type = string 3 | } 4 | 5 | output "working_dir" { 6 | value = var.working_dir 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/graph-dependencies/root/backend-app/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/graph-dependencies/root/frontend-app/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/graph-dependencies/root/mysql/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/graph-dependencies/root/redis/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/graph-dependencies/root/vpc/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/graph-dependencies/root/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/graph/dependency-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/graph/dependency-graph.png -------------------------------------------------------------------------------- /test/fixtures/graph/eks/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/eks/terragrunt.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/graph/eks/terragrunt.hcl -------------------------------------------------------------------------------- /test/fixtures/graph/lambda/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/lambda/terragrunt.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/graph/lambda/terragrunt.hcl -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-1/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "eks" { 2 | config_path = "../../eks" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-2-v2/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-2-v2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "eks-service-2" { 2 | config_path = "../eks-service-2" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-2/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "eks" { 2 | config_path = "../../eks" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-3-v2/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-3-v2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "eks-service-3" { 2 | config_path = "../eks-service-3" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-3-v3/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-3-v3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "eks-service-3-v2" { 2 | config_path = "../eks-service-3-v2" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-3/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-4/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-4/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "eks-service-3" { 2 | config_path = "../eks-service-3" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/eks-service-5/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/lambda-service-1/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/lambda-service-1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "lambda" { 2 | config_path = "../../lambda" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/graph/services/lambda-service-2/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "42" 3 | } -------------------------------------------------------------------------------- /test/fixtures/graph/services/lambda-service-2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "lambda-service-1" { 2 | config_path = "../lambda-service-1" 3 | } -------------------------------------------------------------------------------- /test/fixtures/hclfmt-errors/dangling-attribute/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Dangling attribute, where no value is set 2 | inputs = 3 | -------------------------------------------------------------------------------- /test/fixtures/hclfmt-errors/invalid-character/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Invalid starting character 2 | $foo = "bar" 3 | -------------------------------------------------------------------------------- /test/fixtures/hclfmt-errors/invalid-key/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Invalid key 2 | foo.bar.baz = "xyz" 3 | -------------------------------------------------------------------------------- /test/fixtures/hclfmt-heredoc/expected.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | foo = <&1) 4 | -------------------------------------------------------------------------------- /test/fixtures/hooks/if-parameter/main.tf: -------------------------------------------------------------------------------- 1 | output "example" { 2 | value = "hello, world" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/hooks/init-once/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } -------------------------------------------------------------------------------- /test/fixtures/hooks/working_dir/main.tf: -------------------------------------------------------------------------------- 1 | output "example" { 2 | value = "hello world" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-deep/vpc/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-deep/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/mixed-with-bare/child/main.tf: -------------------------------------------------------------------------------- 1 | variable "region" {} 2 | 3 | output "region" { 4 | value = var.region 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/multiple/child/main.tf: -------------------------------------------------------------------------------- 1 | variable "region" {} 2 | 3 | output "region" { 4 | value = var.region 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/root.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | region = "us-west-1" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/single-bare/child/main.tf: -------------------------------------------------------------------------------- 1 | variable "region" {} 2 | 3 | output "region" { 4 | value = var.region 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/single/child/main.tf: -------------------------------------------------------------------------------- 1 | variable "region" {} 2 | 3 | output "region" { 4 | value = var.region 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/terragrunt_env.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | environment = "test" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/with-dependency-reference-input/child/main.tf: -------------------------------------------------------------------------------- 1 | variable "region" {} 2 | 3 | output "region" { 4 | value = var.region 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/with-dependency-reference-input/dep/main.tf: -------------------------------------------------------------------------------- 1 | output "env" { 2 | value = "test" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/with-dependency-reference-input/dep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/with-dependency/child/main.tf: -------------------------------------------------------------------------------- 1 | variable "region" {} 2 | 3 | output "region" { 4 | value = var.region 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/with-dependency/dep/main.tf: -------------------------------------------------------------------------------- 1 | output "env" { 2 | value = "test" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-expose/with-dependency/dep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/deep-merge-nonoverlapping/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/empty" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/deep-merge-overlapping/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/empty" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/expose/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/empty" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/has-bare-include/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/empty" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/json/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/empty" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/modules/empty/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/shallow-deep-merge-overlapping/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/empty" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-multiple/shallow-merge/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/empty" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-parent/app/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-parent/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "parent" { 2 | path = "../parent.hcl" 3 | } -------------------------------------------------------------------------------- /test/fixtures/include-parent/common.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | common = run_cmd("echo", "common_hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-runall/a/main.tf: -------------------------------------------------------------------------------- 1 | output "text" { 2 | value = "alpha" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-runall/a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "alpha" { 2 | path = find_in_parent_folders("alpha.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-runall/alpha.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-runall/b/main.tf: -------------------------------------------------------------------------------- 1 | output "text" { 2 | value = "beta" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-runall/b/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/include-runall/c/main.tf: -------------------------------------------------------------------------------- 1 | output "text" { 2 | value = "charlie" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/include-runall/c/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/init-cache/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "test" {} 2 | 3 | output "result" { 4 | value = var.test 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/init-cache/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | inputs = { 6 | env = "nonprod" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/init-error/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" { 3 | bucket = "mybucket" 4 | key = "path/to/my/key" 5 | region = "us-east-1" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/init-error/terragrunt.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/init-error/terragrunt.hcl -------------------------------------------------------------------------------- /test/fixtures/init-once/module/main.tf: -------------------------------------------------------------------------------- 1 | module "vpc" { 2 | source = "cloudposse/module/example" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/init-once/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = ".//module" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/inputs-from-dependency/apps/b/local.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | baz = "b-baz" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/inputs-from-dependency/apps/c/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "${get_terragrunt_dir()}/../../modules/c" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/inputs-from-dependency/apps/root.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | bar = "parent-bar" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/inputs-from-dependency/modules/c/main.tf: -------------------------------------------------------------------------------- 1 | output "foo" { 2 | value = "c-foo" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/list/dag/units/live/dev/db/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "vpc" { 2 | config_path = "../vpc" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/list/dag/units/live/dev/ec2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "vpc" { 2 | config_path = "../vpc" 3 | } 4 | 5 | dependency "db" { 6 | config_path = "../db" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/list/dag/units/live/prod/db/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "vpc" { 2 | config_path = "../vpc" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/list/dag/units/live/prod/ec2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "vpc" { 2 | config_path = "../vpc" 3 | } 4 | 5 | dependency "db" { 6 | config_path = "../db" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/locals-errors/undefined-local-but-input/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | a = "foo" 3 | b = local.a 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/locals-errors/undefined-local/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | data = local.file_contents 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/locals/canonical/contents.txt: -------------------------------------------------------------------------------- 1 | Hello world 2 | -------------------------------------------------------------------------------- /test/fixtures/locals/local-in-include/qa/my-app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/locals/run-once/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | bar = run_cmd("echo", "foo") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/log/formatter/app/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/log/formatter/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "dependency" { 2 | config_path = "../dep" 3 | skip_outputs = true 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/log/formatter/dep/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/log/formatter/dep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/log/levels/main.tf: -------------------------------------------------------------------------------- 1 | output "text" { 2 | value = "output" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/log/levels/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/log/rel-paths/duplicate-dir-names/workspace/one/two/aaa/bbb/ccc/workspace/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../../../..//tf" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/log/rel-paths/duplicate-dir-names/workspace/one/two/tf/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "this" { 2 | } 3 | 4 | output "dummy" { 5 | value = "dummy" 6 | } 7 | -------------------------------------------------------------------------------- /test/fixtures/manifest-removal/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } 4 | include "root" { 5 | path = find_in_parent_folders("root.hcl") 6 | } 7 | -------------------------------------------------------------------------------- /test/fixtures/manifest-removal/root.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/manifest-removal/root.hcl -------------------------------------------------------------------------------- /test/fixtures/manifest/version-1/main.tf: -------------------------------------------------------------------------------- 1 | # Hello world 2 | -------------------------------------------------------------------------------- /test/fixtures/manifest/version-1/stale.tf: -------------------------------------------------------------------------------- 1 | # this is stale file 2 | -------------------------------------------------------------------------------- /test/fixtures/manifest/version-2/main.tf: -------------------------------------------------------------------------------- 1 | # Hello world 2 | -------------------------------------------------------------------------------- /test/fixtures/manifest/version-3-subfolder/main.tf: -------------------------------------------------------------------------------- 1 | # Hello world 2 | -------------------------------------------------------------------------------- /test/fixtures/manifest/version-3-subfolder/sub/main.tf: -------------------------------------------------------------------------------- 1 | # hello subfolder 2 | -------------------------------------------------------------------------------- /test/fixtures/manifest/version-4-subfolder-empty/main.tf: -------------------------------------------------------------------------------- 1 | # Hello world 2 | -------------------------------------------------------------------------------- /test/fixtures/manifest/version-5-not-empty-subfolder/main.tf: -------------------------------------------------------------------------------- 1 | # Hello world 2 | -------------------------------------------------------------------------------- /test/fixtures/manifest/version-5-not-empty-subfolder/sub2/main.tf: -------------------------------------------------------------------------------- 1 | # hello, I'm here 2 | -------------------------------------------------------------------------------- /test/fixtures/missing-dependencies/main/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "Hello World" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/missing-dependencies/main/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = [ 3 | "../hl3-release", 4 | "../module-a", 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /test/fixtures/missing-dependencies/module-a/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | value = "Hello World, module-a" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/missing-dependencies/module-a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/module-path-in-error/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "d1" { 2 | config_path = "../d1" 3 | 4 | mock_outputs = { 5 | d1 = "d1-value" 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/module-path-in-error/d1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "common" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/hcl-module-b/module-b-child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl.json") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/hcl-module-c/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "temp" 3 | } 4 | 5 | dependencies { 6 | paths = ["../json-module-a"] 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/modules/json-module-a/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | { 2 | "terraform": { 3 | "source": "test" 4 | } 5 | } -------------------------------------------------------------------------------- /test/fixtures/modules/json-module-b/module-b-child/terragrunt.hcl.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": { 3 | "path": "${find_in_parent_folders(\"root.hcl\")}" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/modules/json-module-d/main.tf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "test" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-abba/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "temp" 3 | } 4 | 5 | dependencies { 6 | paths = ["../module-a"] 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-b/module-b-child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-c/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "temp" 3 | } 4 | 5 | dependencies { 6 | paths = ["../module-a"] 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-d/main.tf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-d/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = ["../module-a", "../module-b/module-b-child", "../module-c"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-e/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/modules/module-e/main.tf -------------------------------------------------------------------------------- /test/fixtures/modules/module-f/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/modules/module-f/main.tf -------------------------------------------------------------------------------- /test/fixtures/modules/module-f/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-g/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "test" 3 | } 4 | 5 | dependencies { 6 | paths = ["../module-f"] 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-h/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/modules/module-h/main.tf -------------------------------------------------------------------------------- /test/fixtures/modules/module-h/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-i/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = ["../module-h"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-i/test.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/modules/module-i/test.tf -------------------------------------------------------------------------------- /test/fixtures/modules/module-j/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "temp" 3 | } 4 | 5 | dependencies { 6 | paths = ["../module-i"] 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-k/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = ["../module-h"] 3 | } 4 | 5 | terraform { 6 | source = "fire" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-l/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-m/env.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | environment = "dev" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-m/module-m-child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-m/module-m-child/tier.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | tier = "base" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/modules/module-missing-dependency/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty -------------------------------------------------------------------------------- /test/fixtures/modules/module-missing-dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = ["../not-a-real-dependency"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depa.hcl: -------------------------------------------------------------------------------- 1 | dependency "depa" { 2 | config_path = "${get_parent_terragrunt_dir()}/depa" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depa/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depa/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depb.hcl: -------------------------------------------------------------------------------- 1 | dependency "depb" { 2 | config_path = "${get_parent_terragrunt_dir()}/depb" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depb/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depb/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depc.hcl: -------------------------------------------------------------------------------- 1 | dependency "depc" { 2 | config_path = "${get_parent_terragrunt_dir()}/depc" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depc/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/depc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/multiinclude-dependency/main/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/no-color/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/no-color/main.tf -------------------------------------------------------------------------------- /test/fixtures/no-color/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | } 3 | -------------------------------------------------------------------------------- /test/fixtures/no-submodules/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/no-submodules/main.tf -------------------------------------------------------------------------------- /test/fixtures/no-submodules/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "git::git@github.com:terraform-google-modules/terraform-google-folders.git?ref=v4.0.0" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/null-values/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } 4 | inputs = { 5 | var1 = null 6 | var2 = "variable 2" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/output-all/env1/app1/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | 5 | output "app1_text" { 6 | value = "app1 output" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/output-all/env1/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | dependencies { 6 | paths = ["../app3"] 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/output-all/env1/app2/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | 5 | output "app2_text" { 6 | value = "app2 output" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/output-all/env1/app3/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | 5 | output "app3_text" { 6 | value = "app3 output" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/output-all/env1/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/output-from-dependency/dependency/outputs.tf: -------------------------------------------------------------------------------- 1 | output "foo" { 2 | value = var.foo 3 | description = "Test foo value" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/output-from-remote-state/env1/app1/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | 5 | output "app1_text" { 6 | value = "app1 output" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/output-from-remote-state/env1/app2/variables.tf: -------------------------------------------------------------------------------- 1 | variable "app1_text" { 2 | type = string 3 | } 4 | 5 | variable "app3_text" { 6 | type = string 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/output-from-remote-state/env1/app3/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | 5 | output "app3_text" { 6 | value = "app3 output" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/output-from-remote-state/env1/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/output-module-groups/root/backend-app/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/output-module-groups/root/frontend-app/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/output-module-groups/root/mysql/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/output-module-groups/root/redis/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/output-module-groups/root/vpc/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/output-module-groups/root/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/parallel-state-init/template/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "file" { 2 | content = "test file" 3 | filename = "${path.module}/file.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/parallel-state-init/template/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/parent-folders/in-another-subfolder/common/foo.txt: -------------------------------------------------------------------------------- 1 | some text 2 | -------------------------------------------------------------------------------- /test/fixtures/parent-folders/in-another-subfolder/live/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "common" { 2 | path = find_in_parent_folders("common/foo.txt") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/parent-folders/multiple-terragrunt-in-parents/child/root.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/parent-folders/multiple-terragrunt-in-parents/child/sub-child/root.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/fixtures/parent-folders/multiple-terragrunt-in-parents/child/sub-child/sub-sub-child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/parent-folders/no-terragrunt-in-root/child/sub-child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Placeholder -------------------------------------------------------------------------------- /test/fixtures/parent-folders/other-file-names/child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Placeholder -------------------------------------------------------------------------------- /test/fixtures/parent-folders/other-file-names/foo.txt: -------------------------------------------------------------------------------- 1 | # Placeholder -------------------------------------------------------------------------------- /test/fixtures/parent-folders/terragrunt-in-root/child/sub-child/sub-sub-child/override/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/parent-folders/terragrunt-in-root/child/sub-child/sub-sub-child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Placeholder -------------------------------------------------------------------------------- /test/fixtures/parent-folders/with-params/tfwork/tg/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "module" { 2 | path = "${find_in_parent_folders("tfwork")}/test-var/providers.tf" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/partial-parse/ignore-bad-block-in-parent/child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/partial-parse/partial-inheritance/child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/planfile-order-test/.gitignore: -------------------------------------------------------------------------------- 1 | test-provider.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/planfile-order-test/inputs.tf: -------------------------------------------------------------------------------- 1 | variable "resource_count" { 2 | type = number 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/planfile-order-test/resource.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "test-resources" { 2 | count = var.resource_count 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/planfile-order-test/vars/variables.tfvars: -------------------------------------------------------------------------------- 1 | resource_count = 3 2 | -------------------------------------------------------------------------------- /test/fixtures/prevent-destroy-not-set/child/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "example" {} 2 | 3 | output "foo" { 4 | value = "bar" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/prevent-destroy-not-set/child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/prevent-destroy-not-set/root.hcl: -------------------------------------------------------------------------------- 1 | prevent_destroy = true 2 | -------------------------------------------------------------------------------- /test/fixtures/prevent-destroy-override/child/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "example" {} 2 | 3 | output "foo" { 4 | value = "bar" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/prevent-destroy-override/child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | prevent_destroy = false 6 | -------------------------------------------------------------------------------- /test/fixtures/prevent-destroy-override/root.hcl: -------------------------------------------------------------------------------- 1 | prevent_destroy = true 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app4/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app5/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app6/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app7/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app8/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/first/app9/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app4/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app5/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app6/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app7/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app8/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/direct/second/app9/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/filesystem-mirror/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/multiple-platforms/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/multiple-platforms/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/multiple-platforms/app3/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/network-mirror/apps/app0/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/provider-cache/network-mirror/apps/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/read-config/from_dependency/dep/main.tf: -------------------------------------------------------------------------------- 1 | variable "foo" {} 2 | 3 | output "foo" { value = var.foo } 4 | -------------------------------------------------------------------------------- /test/fixtures/read-config/from_dependency/dep/vars.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | foo = "hello world" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/read-config/from_dependency/main.tf: -------------------------------------------------------------------------------- 1 | variable "bar" {} 2 | output "bar" { value = var.bar } 3 | -------------------------------------------------------------------------------- /test/fixtures/read-config/iam_role_in_file/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "local" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/read-config/iam_roles_multiple_modules/component1/main.tf: -------------------------------------------------------------------------------- 1 | # Empty 2 | -------------------------------------------------------------------------------- /test/fixtures/read-config/iam_roles_multiple_modules/component2/main.tf: -------------------------------------------------------------------------------- 1 | # Empty 2 | -------------------------------------------------------------------------------- /test/fixtures/read-config/iam_roles_multiple_modules/main.tf: -------------------------------------------------------------------------------- 1 | # Empty 2 | -------------------------------------------------------------------------------- /test/fixtures/read-config/with_constraints/main.tf: -------------------------------------------------------------------------------- 1 | output "foo" { value = "bar" } -------------------------------------------------------------------------------- /test/fixtures/read-config/with_default/main.tf: -------------------------------------------------------------------------------- 1 | variable "data" {} 2 | output "data" { 3 | value = var.data 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/read-config/with_dependency/dep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | dependency "inputs" { 2 | config_path = "../../../inputs" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/read-tf-vars/empty.tfvars: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/read-tf-vars/empty.tfvars -------------------------------------------------------------------------------- /test/fixtures/read-tf-vars/my.tfvars: -------------------------------------------------------------------------------- 1 | string_var = "string" 2 | number_var = 42 3 | bool_var = true 4 | list_var = ["hello", "world"] -------------------------------------------------------------------------------- /test/fixtures/read-tf-vars/my.tfvars.json: -------------------------------------------------------------------------------- 1 | { 2 | "string_var": "another string", 3 | "number_var": 24, 4 | "bool_var": false 5 | } -------------------------------------------------------------------------------- /test/fixtures/read-tf-vars/only-comments.tfvars: -------------------------------------------------------------------------------- 1 | # Line 1 2 | # Line 2 -------------------------------------------------------------------------------- /test/fixtures/regressions/accesslogging-bucket/no-target-prefix-input/.gitignore: -------------------------------------------------------------------------------- 1 | backend.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/accesslogging-bucket/no-target-prefix-input/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "foo" {} 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/accesslogging-bucket/with-target-prefix-input/.gitignore: -------------------------------------------------------------------------------- 1 | backend.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/accesslogging-bucket/with-target-prefix-input/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "foo" {} 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/apply-all-envvar/module/main.tf: -------------------------------------------------------------------------------- 1 | variable "seed" {} 2 | output "text" { 3 | value = "Hello ${var.seed}" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/regressions/apply-all-envvar/no-require-envvar/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../module" 3 | } 4 | 5 | inputs = { 6 | seed = "world" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/regressions/apply-all-envvar/require-envvar/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../module" 3 | } 4 | 5 | inputs = {} 6 | -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing-includes/modules/dummy-module/outputs.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | value = "this-is-valuable" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing-includes/modules/dummy-module/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing-includes/production/dependency-group-1: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing-includes/production/dependency-group-2: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing-includes/production/dependency-group-3: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing-includes/production/dependency-group-4: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing/modules/dummy-module/outputs.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | value = "this-is-valuable" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing/modules/dummy-module/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing/production/dependency-group-1: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing/production/dependency-group-2: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing/production/dependency-group-3: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/benchmark-parsing/production/dependency-group-4: -------------------------------------------------------------------------------- 1 | dependency-group-template/ -------------------------------------------------------------------------------- /test/fixtures/regressions/exclude-dependency/modules/k8s/main.tf: -------------------------------------------------------------------------------- 1 | variable "cluster" {} 2 | output "cluster" { value = var.cluster } 3 | -------------------------------------------------------------------------------- /test/fixtures/regressions/exclude-dependency/root.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/include-error/_envcommon.hcl: -------------------------------------------------------------------------------- 1 | 2 | inputs = { 3 | common_config = "Common Config" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/regressions/include-error/project/eng_teams.hcl: -------------------------------------------------------------------------------- 1 | 2 | inputs = { 3 | team_name = "Test Team" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/regressions/mocks-merge-with-state/deep-map/main.tf: -------------------------------------------------------------------------------- 1 | output "check_field" { 2 | value = "deep-map-executed" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/mocks-merge-with-state/shallow/main.tf: -------------------------------------------------------------------------------- 1 | output "check_field" { 2 | value = "shallow-map-executed" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/multiple-dependency-load-sync/modules/dummy-module/outputs.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | value = var.name 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/multiple-dependency-load-sync/modules/dummy-module/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/regressions/skip-init/main.tf: -------------------------------------------------------------------------------- 1 | module "mod" { 2 | source = "./module" 3 | } 4 | 5 | output "foo" { 6 | value = module.mod.foo 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/regressions/skip-init/module/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "foo" {} 2 | 3 | output "foo" { 4 | value = null_resource.foo.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/regressions/skip-init/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intenionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/skip-versioning/.gitignore: -------------------------------------------------------------------------------- 1 | backend.tf 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/skip-versioning/local_terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/regressions/skip-versioning/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "foo" {} 2 | -------------------------------------------------------------------------------- /test/fixtures/relative-include-cmd/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("terragrunt-test.hcl") 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/fixtures/relative-include-cmd/terragrunt-test.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | path = run_cmd("echo", "path_relative_to_inclue:", path_relative_to_include()) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/render-json-inputs/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "x" {} 2 | -------------------------------------------------------------------------------- /test/fixtures/render-json-inputs/dependency/main.tf: -------------------------------------------------------------------------------- 1 | 2 | output "value" { 3 | value = "output_value" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/render-json-metadata/dependencies/app/include.hcl: -------------------------------------------------------------------------------- 1 | dependencies { 2 | paths = ["../dependency2"] 3 | } 4 | 5 | inputs = { 6 | test_input = "test_value" 7 | } -------------------------------------------------------------------------------- /test/fixtures/render-json-metadata/dependency/dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | 3 | x = run_cmd("echo", "HCL file evaluation") 4 | } -------------------------------------------------------------------------------- /test/fixtures/render-json-metadata/dependency/dependency2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | 3 | x = run_cmd("echo", "HCL file evaluation") 4 | } -------------------------------------------------------------------------------- /test/fixtures/render-json-metadata/includes/app/inputs.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | qwe = "123" 3 | } -------------------------------------------------------------------------------- /test/fixtures/render-json-metadata/includes/app/locals.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | a1 = "qwe" 3 | content = "test" 4 | } 5 | 6 | inputs = { 7 | content = local.content 8 | } -------------------------------------------------------------------------------- /test/fixtures/render-json-metadata/terraform-remote-state/common/terraform.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../terraform" 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/fixtures/render-json-mock-outputs/dependency/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/render-json-regression/bar/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | from_root = "Hi" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/render-json-regression/baz/main.tf: -------------------------------------------------------------------------------- 1 | output "baz" { 2 | value = "baz" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/render-json-regression/foo/main.tf: -------------------------------------------------------------------------------- 1 | output "foo" { 2 | value = "foo" 3 | } 4 | 5 | variable "foo" {} 6 | variable "baz" {} 7 | -------------------------------------------------------------------------------- /test/fixtures/render-json-with-encryption/dep/main.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | value = "dep" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/render-json-with-encryption/dep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/render-json/dep/main.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | value = "dep" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/render-json/dep/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/s3-encryption/custom-key/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "main" {} 2 | 3 | output "id" { 4 | value = null_resource.main.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/s3-encryption/sse-aes/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "main" {} 2 | 3 | output "id" { 4 | value = null_resource.main.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/s3-encryption/sse-kms/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "main" {} 2 | 3 | output "id" { 4 | value = null_resource.main.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/s3-errors/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "s3" {} 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/scaffold/external-template/boilerplate.yml: -------------------------------------------------------------------------------- 1 | # boilerplate config 2 | variables: 3 | -------------------------------------------------------------------------------- /test/fixtures/scaffold/external-template/external-template.txt: -------------------------------------------------------------------------------- 1 | # External template -------------------------------------------------------------------------------- /test/fixtures/scaffold/module-with-template/.boilerplate/boilerplate.yml: -------------------------------------------------------------------------------- 1 | # boilerplate config 2 | variables: 3 | -------------------------------------------------------------------------------- /test/fixtures/scaffold/module-with-template/.boilerplate/template-file.txt: -------------------------------------------------------------------------------- 1 | # Template file -------------------------------------------------------------------------------- /test/fixtures/scaffold/root-hcl/root.hcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/scaffold/root-hcl/root.hcl -------------------------------------------------------------------------------- /test/fixtures/skip-legacy-root/skip-true/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | skip = true 2 | 3 | terraform { 4 | source = "../../base-module" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/skip/skip-true/resource2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | inputs = { 6 | person = "Bert" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/skip/skip-true/root.hcl: -------------------------------------------------------------------------------- 1 | skip = true 2 | 3 | terraform { 4 | source = "../../base-module" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/sops-errors/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/sops-errors/main.tf -------------------------------------------------------------------------------- /test/fixtures/sops-errors/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | secret_vars = yamldecode(sops_decrypt_file("${get_terragrunt_dir()}/file.yaml")) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/sops-missing/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/sops-missing/main.tf -------------------------------------------------------------------------------- /test/fixtures/sops-missing/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | secret_vars = yamldecode(sops_decrypt_file("${get_terragrunt_dir()}/missing.yaml")) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/source-map/modules/vpc/main.tf: -------------------------------------------------------------------------------- 1 | variable "name" {} 2 | 3 | output "vpc_id" { 4 | value = "vpc-${var.name}-asdf1234" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint-symlinks/a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "../module" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint-symlinks/module/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "a" {} 2 | 3 | output "a" { 4 | value = null_resource.a.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint/a/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "a" {} 2 | 3 | output "a" { 4 | value = null_resource.a.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint/a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint/b/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "b" {} 2 | 3 | output "b" { 4 | value = null_resource.b.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint/b/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint/c/main.tf: -------------------------------------------------------------------------------- 1 | resource "null_resource" "c" {} 2 | 3 | output "c" { 4 | value = null_resource.c.id 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stack/disjoint/c/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/stack/mgmt/kms-master-key/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/fixtures/stack/mgmt/vpc/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/fixtures/stack/stage/mysql/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | dependencies { 6 | paths = ["../vpc"] 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/stack/stage/redis/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | 5 | dependencies { 6 | paths = ["../vpc"] 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/stacks/basic/units/chick/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | source = "." 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/basic/units/chicken/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | source = "." 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/basic/units/father/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | source = "." 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/basic/units/mother/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | source = "." 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/dependencies/units/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | inputs = { 3 | input = values.input 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/absolute-path/units/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | inputs = { 3 | input = values.input 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/cycles/live/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | stack "stack" { 2 | source = "${get_repo_root()}/stack" 3 | path = "stack" 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/cycles/stack/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | stack "stack" { 2 | source = "${get_repo_root()}/stack" 3 | path = "stack" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/cycles/unit/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/incorrect-source/live/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | 2 | unit "api" { 3 | source = "../../units/api" # incorrect source path 4 | path = "api" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/incorrect-source/units/api/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "api ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/incorrect-source/units/api/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/locals-error/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | chicken = "units/chicken" 3 | } 4 | 5 | locals { 6 | chick = "units/chick" 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/relative-path-outside-of-stack/live/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | 2 | unit "app1" { 3 | source = "../units/app1" 4 | path = "../project1/app1" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/relative-path-outside-of-stack/units/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/stack-empty-path/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | stack "prod" { 2 | source = "stacks/prod" 3 | path = "" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-stack/live/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | 2 | stack "stack-v1" { 3 | source = "${get_repo_root()}/stacks" 4 | path = "stack-v1" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-stack/stacks/v1/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | 2 | unit "unit-v1" { 3 | source = "${get_repo_root()}/units/api" 4 | path = "unit-v1" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-stack/units/api/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "api ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-stack/units/api/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-unit/live/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | 2 | unit "v1" { 3 | source = "${get_repo_root()}/units/v1" 4 | path = "v1" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-unit/units/v1/api/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "api ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-unit/units/v1/api/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-unit/units/v1/db/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "db ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-unit/units/v1/db/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-unit/units/v1/web/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "web ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/errors/validation-unit/units/v1/web/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/inputs/units/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | source = "." 4 | } 5 | 6 | inputs = { 7 | content = "content" 8 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/multiple-stacks/unit/main.tf: -------------------------------------------------------------------------------- 1 | 2 | output "output" { 3 | value = "unit" 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested-outputs/stacks/v2/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | stack "stack_v2" { 2 | source = "${get_repo_root()}/stacks/v1" 3 | path = "stack_v2" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/stacks/nested-outputs/stacks/v3/terragrunt.stack.hcl: -------------------------------------------------------------------------------- 1 | stack "stack_v3" { 2 | source = "${get_repo_root()}/stacks/v2" 3 | path = "stack_v3" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/stacks/nested-outputs/units/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "data" {} 2 | output "data" { 3 | value = var.data 4 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested-outputs/units/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | data = values.data 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested/units/api/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "api ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested/units/api/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested/units/db/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "db ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested/units/db/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested/units/web/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "web ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/nested/units/web/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/no-stack/config/config.txt: -------------------------------------------------------------------------------- 1 | # example configuration file 2 | -------------------------------------------------------------------------------- /test/fixtures/stacks/no-stack/units/api/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "api ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/no-stack/units/api/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/no-stack/units/db/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "db ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/no-stack/units/db/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/no-stack/units/web/main.tf: -------------------------------------------------------------------------------- 1 | variable "ver" {} 2 | 3 | output "data" { 4 | value = "web ${var.ver}" 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/no-stack/units/web/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | ver = values.ver 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/no-validation/units/app1/code/main.tf: -------------------------------------------------------------------------------- 1 | resource "local_file" "file" { 2 | content = "test file" 3 | filename = "${path.module}/file.txt" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/stacks/outputs/units/app1/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/outputs/units/app2/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/self-include/module/main.tf: -------------------------------------------------------------------------------- 1 | variable "data" {} 2 | 3 | output "data" { 4 | value = var.data 5 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/self-include/module/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "." 3 | } 4 | 5 | inputs = { 6 | data = values.data 7 | } -------------------------------------------------------------------------------- /test/fixtures/stacks/stack-values/units/app/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | 2 | inputs = { 3 | project = values.project 4 | env = values.env 5 | data = values.data 6 | } -------------------------------------------------------------------------------- /test/fixtures/strcontains/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | i1 = strcontains("hello world", "hello") 3 | i2 = strcontains("hello world", "test") 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/strict-bare-include/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gruntwork-io/terragrunt/8c7b086b2daf6e2aad4599db19229e2626ca153c/test/fixtures/strict-bare-include/main.tf -------------------------------------------------------------------------------- /test/fixtures/strict-bare-include/parent.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | greeting = "hello" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/strict-bare-include/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = "parent.hcl" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/terragrunt-info-error/module-a/main.tf: -------------------------------------------------------------------------------- 1 | output "test_var" { 2 | value = "hello" 3 | } -------------------------------------------------------------------------------- /test/fixtures/terragrunt-info-error/module-a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = ".//" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/terragrunt-info-error/module-b/main.tf: -------------------------------------------------------------------------------- 1 | variable "test_var" { 2 | type = string 3 | } 4 | 5 | output "result" { 6 | value = var.test_var 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/terragrunt/outputs.tf: -------------------------------------------------------------------------------- 1 | output "rendered_template" { 2 | value = data.external.hello.result["output"] 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/fixtures/tf-path/main.tf: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/tf-path/other-tf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tfpath="${TG_TF_PATH:-tofu}" 4 | 5 | echo "Other TF script used!" >&2 6 | 7 | $tfpath "$@" 8 | -------------------------------------------------------------------------------- /test/fixtures/tf-path/tf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tfpath="${TG_TF_PATH:-tofu}" 4 | 5 | echo "TF script used!" >&2 6 | 7 | $tfpath "$@" 8 | -------------------------------------------------------------------------------- /test/fixtures/tflint/custom-tflint-config/outputs.tf: -------------------------------------------------------------------------------- 1 | output "bucket_name" { 2 | description = "bucket name" 3 | value = var.bucket_name 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/tflint/custom-tflint-config/variables.tf: -------------------------------------------------------------------------------- 1 | variable "bucket_name" { 2 | description = "bucket name" 3 | type = string 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/tflint/external-tflint/outputs.tf: -------------------------------------------------------------------------------- 1 | output "bucket_name" { 2 | description = "bucket name" 3 | value = var.bucket_name 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/tflint/external-tflint/variables.tf: -------------------------------------------------------------------------------- 1 | variable "bucket_name" { 2 | description = "bucket name" 3 | type = string 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/tflint/no-tf-source/outputs.tf: -------------------------------------------------------------------------------- 1 | # Empty outputs 2 | -------------------------------------------------------------------------------- /test/fixtures/tflint/no-tf-source/variables.tf: -------------------------------------------------------------------------------- 1 | # Empty variables 2 | -------------------------------------------------------------------------------- /test/fixtures/tflint/tflint-args/extra.tfvars: -------------------------------------------------------------------------------- 1 | bucket_name = "my-prefix-123" 2 | -------------------------------------------------------------------------------- /test/fixtures/tflint/tflint-args/outputs.tf: -------------------------------------------------------------------------------- 1 | output "q1" { 2 | description = "output" 3 | value = var.bucket_name 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/tflint/tflint-args/variables.tf: -------------------------------------------------------------------------------- 1 | variable "bucket_name" { 2 | description = "bucket name" 3 | type = string 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/tflint/tfvar-passing/extra.tfvars: -------------------------------------------------------------------------------- 1 | bucket_name = "my-prefix-qwe" 2 | -------------------------------------------------------------------------------- /test/fixtures/tflint/tfvar-passing/outputs.tf: -------------------------------------------------------------------------------- 1 | output "q1" { 2 | description = "output" 3 | value = var.bucket_name 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/tflint/tfvar-passing/variables.tf: -------------------------------------------------------------------------------- 1 | variable "bucket_name" { 2 | description = "bucket name" 3 | type = string 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/fixtures/tftest/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | bucket_prefix = "tg-test" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/timecmp-errors/invalid-timestamp/main.tf: -------------------------------------------------------------------------------- 1 | variable "timecmp1" { 2 | type = number 3 | } 4 | 5 | output "timecmp1" { 6 | value = var.timecmp1 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/timecmp-errors/invalid-timestamp/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | timecmp1 = timecmp("2017-11-22 00:00:00Z", "2017-11-22T01:00:00+01:00") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/trace-parent/get_traceparent.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | echo "$1 {\"traceparent\": \"${TRACEPARENT}\"}" 5 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/including/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "shared" { 2 | path = find_in_parent_folders("shared.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/reading-from-tf/main.tf: -------------------------------------------------------------------------------- 1 | variable "filename" {} 2 | output "shared" { 3 | value = jsondecode(file(var.filename)) 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/reading-hcl/main.tf: -------------------------------------------------------------------------------- 1 | variable "shared" {} 2 | output "shared" { 3 | value = var.shared 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/reading-json/main.tf: -------------------------------------------------------------------------------- 1 | variable "shared" {} 2 | output "shared" { 3 | value = var.shared 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/reading-sops/main.tf: -------------------------------------------------------------------------------- 1 | variable "shared" {} 2 | output "shared" { 3 | value = var.shared 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/reading-tfvars/main.tf: -------------------------------------------------------------------------------- 1 | variable "shared" {} 2 | output "shared" { 3 | value = var.shared 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/shared.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | shared_hcl = "value" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/shared.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "value" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/units-reading/shared.tfvars: -------------------------------------------------------------------------------- 1 | shared_tfvars = "value" 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-generated-var/main.tf: -------------------------------------------------------------------------------- 1 | output "output" { 2 | value = var.input 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-generated-var/variables.tf: -------------------------------------------------------------------------------- 1 | # Generated by Terragrunt. Sig: nIlQXj57tbuaRZEa 2 | variable "input" {} 3 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-included-unused/module/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | 3 | output "output" { 4 | value = var.input 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-included-unused/root.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | inherited = "This input is inherited" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-no-inputs/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | 3 | output "output" { 4 | value = var.input 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-no-inputs/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-unused-inputs/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | 3 | output "output" { 4 | value = var.input 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-unused-varfile/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | 3 | output "output" { 4 | value = var.input 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/fail-unused-varfile/varfiles/main.tfvars: -------------------------------------------------------------------------------- 1 | input = "hello world" 2 | unused_input = "I am unused" 3 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-autovar-file/bar.auto.tfvars.json: -------------------------------------------------------------------------------- 1 | { 2 | "input_autotfvarsjson": "hello world from bar.auto.tfvars.json" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-autovar-file/foo.auto.tfvars: -------------------------------------------------------------------------------- 1 | input_autotfvars = "hello world from foo.auto.tfvars" 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-autovar-file/terraform.tfvars: -------------------------------------------------------------------------------- 1 | input_terraformtfvars = "hello world from terraform.tfvars" 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-autovar-file/terraform.tfvars.json: -------------------------------------------------------------------------------- 1 | { 2 | "input_terraformtfvarsjson": "hello world from terraform.tfvars.json" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-autovar-file/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-cli-args/varfiles/main.tfvars: -------------------------------------------------------------------------------- 1 | input = "hello" 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-included/module/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | 3 | output "output" { 4 | value = var.input 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-included/module/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-included/root.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | input = "hello" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-inputs-only/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | 3 | output "output" { 4 | value = var.input 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-inputs-only/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | inputs = { 2 | input = "hello world" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-mixed/varfiles/main.tfvars: -------------------------------------------------------------------------------- 1 | input_from_varfile = "from var file" 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-null-default/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | # Intentionally empty 2 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-var-file/main.tf: -------------------------------------------------------------------------------- 1 | variable "input" {} 2 | 3 | output "output" { 4 | value = var.input 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/validate-inputs/success-var-file/varfiles/main.tfvars: -------------------------------------------------------------------------------- 1 | input = "hello world" 2 | -------------------------------------------------------------------------------- /test/fixtures/version-check/a/main.tf: -------------------------------------------------------------------------------- 1 | output "foo" { 2 | value = "Hello, World" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/version-check/a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/version-check/b/main.tf: -------------------------------------------------------------------------------- 1 | output "foo" { 2 | value = "Hello, World" 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/version-check/b/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include "root" { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/version-check/root.hcl: -------------------------------------------------------------------------------- 1 | terraform_version_constraint = ">= 0.12.20" 2 | terragrunt_version_constraint = ">= 0.23.20" 3 | -------------------------------------------------------------------------------- /test/fixtures/version-invocation/app/main.tf: -------------------------------------------------------------------------------- 1 | variable "input_value" {} 2 | 3 | output "output_value" { 4 | value = var.input_value 5 | } -------------------------------------------------------------------------------- /test/fixtures/version-invocation/dependency-with-custom-version/.tool-versions: -------------------------------------------------------------------------------- 1 | tofu 1.9.4 2 | -------------------------------------------------------------------------------- /test/fixtures/version-invocation/dependency-with-custom-version/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | 3 | value = "42" 4 | } -------------------------------------------------------------------------------- /test/fixtures/version-invocation/dependency/main.tf: -------------------------------------------------------------------------------- 1 | output "result" { 2 | 3 | value = "42" 4 | } -------------------------------------------------------------------------------- /test/helpers/test_helpers_unix.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | // +build !windows 3 | 4 | package helpers 5 | 6 | var RootFolder = "/" 7 | -------------------------------------------------------------------------------- /tf/cache/middleware/package.go: -------------------------------------------------------------------------------- 1 | // Package middleware provides a set of middleware for the Terragrunt provider cache server. 2 | package middleware 3 | -------------------------------------------------------------------------------- /util/min.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | func Min(x, y int) int { 4 | if x < y { 5 | return x 6 | } 7 | 8 | return y 9 | } 10 | -------------------------------------------------------------------------------- /util/testdata/fixture-glob-canonical/module-a/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | terraform { 2 | source = "test" 3 | } 4 | -------------------------------------------------------------------------------- /util/testdata/fixture-glob-canonical/module-b/module-b-child/terragrunt.hcl: -------------------------------------------------------------------------------- 1 | include { 2 | path = find_in_parent_folders("root.hcl") 3 | } 4 | -------------------------------------------------------------------------------- /util/util.go: -------------------------------------------------------------------------------- 1 | // Package util provides utility functions for Terragrunt. 2 | package util 3 | --------------------------------------------------------------------------------