Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/burmuley/terrasolver
Terragrunt dependencies solver (Terrasolver)
https://github.com/burmuley/terrasolver
iac terraform terragrunt
Last synced: about 1 month ago
JSON representation
Terragrunt dependencies solver (Terrasolver)
- Host: GitHub
- URL: https://github.com/burmuley/terrasolver
- Owner: Burmuley
- License: bsd-3-clause
- Created: 2021-11-06T00:18:22.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-16T02:49:07.000Z (almost 2 years ago)
- Last Synced: 2024-06-21T10:59:14.487Z (6 months ago)
- Topics: iac, terraform, terragrunt
- Language: Go
- Homepage:
- Size: 40 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Terragrunt dependencies solver (Terrasolver)
This tool is aimed to solve issue with resolving dependencies among a set of Terragrunt modules and run
provided Terragrunt command for each module in a sequence automatically.It works pretty the same way as Terragrunt: you put a Terraform command and command line options and `terrasolver` will
propagate all this to `terragrunt` and it will do its job as usual. :)### How to build
Included script `build.sh` builds binary for three of supported platforms: MacOS X (amd64), MacOS X (arm64), Linux (amd64)
```shell
$ ./build.sh
$ ls -1 terrasolver_* burmuley@RRG-MacPro15
terrasolver_linux_amd64
terrasolver_mac_amd64
terrasolver_mac_arm64
```### How to use
```shell
terrasolver [flags] [terragrunt command and parameters]
```Supported flags:
* `-path` - Path to the working directory where to run all activities. Is omitted will use current directory.
* `-skip-confirm` - Skip confirmation step after the ordered list modules is displayed, will continue with running Terragrunt command against each module.
* `-terragrunt` - Path to the Terragrunt binary. The default is /usr/local/bin/terragrunt
* `-deepdive` - If set to `false` will only scan current working directory for dependencies,
If set to `true` - will also recursively scan dependencies referenced in files within the working directory
to build the complete dependency tree if any of modules enlist dependencies out of the working directory.
* `-tf-cache-dir` - enables Terraform [provider plugin cache directory](https://www.terraform.io/cli/config/config-file#provider-plugin-cache)
and exports corresponding environment variable `TF_PLUGIN_CACHE_DIR` for each module when running;
default value is `~/.terraform.d/plugin-cache`
* `-no-cache` - disable Terragrunt modules "caching"
* `-cache-duration` - how long (in minutes) modules listed in cache won't be run; default value is `30` minutes
* `-supress-warning` - suppress warning messages about dependency graph processing; default is `true`
* `-version` - displays version and build informationMost of the flags listed above can be also overridden by corresponding environment variables.
**Note**: values set with environment variables take precedence over values in command line!
* `TERRASOLVER_PATH` - same as `-path` flag
* `TERRASOLVER_SKIP_CONFIRM` - same as `-skip-confirm` flag
* `TERRASOLVER_TERRAGRUNT_BIN` - same as `-terragrunt` flag
* `TERRASOLVER_DEEP_DIVE` - same as `-deepdive` flag
* `TF_PLUGIN_CACHE_DIR` - overrides value set with `-tf-cache-dir`, uses the same variable name as Terraform
* `TERRASOLVER_SUPPRESS_WARNINGS` - same as `-supress-warning`
* `TERRASOLVER_NO_CACHE` - same as `-no-cache`Example:
```shell
$ terrasolver -path=/home/user/infrastructure/dev -deepdive=true apply -auto-approve
2022/06/08 21:01:18 Terragrunt modules directory: /home/user/infrastructure/dev
Running order for modules in '/home/user/infrastructure/dev':
#1: /home/user/infrastructure/dev/us-west-2/ecs-clusters
#2: /home/user/infrastructure/dev/us-west-2/target-groups
#3: /home/user/infrastructure/dev/us-west-2/load-balancers
#4: /home/user/infrastructure/dev/us-west-2/kms-keys
#5: /home/user/infrastructure/dev/us-east-1/kms-replica-keys
#6: /home/user/infrastructure/dev/us-west-2/s3-buckets
#7: /home/user/infrastructure/dev/us-east-1/s3-buckets
#8: /home/user/infrastructure/dev/global/iam-roles
#9: /home/user/infrastructure/dev/us-west-2/code-deploy
Press ENTER to continue...
...```