/tftools

Easy CLI with useful terraform/terragrunt tools

Primary LanguageGoApache License 2.0Apache-2.0

logo

tftools

Easy CLI with useful terraform/terragrunt tools

Build with ❤ in Golang

Go report card GitHub code size in bytes GitHub go.mod Go version

Table of Contents generated with DocToc

Badges

Release Status Build Status Git Leaks Status Lint Status Gosec Status Test Status License Release GitHub Releases Stats

Tftools summarize

The concern is: I have a lot of changes in terraform and I need a clear way of the concepts that are going to be deleted|changed|created only with the resource address. It can be messy to have a super tf plan output when there are many changes.

Installation

Install latest version

curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh

Install specific release

curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh -v "v0.8.0"

Note

If you don't specify -v flag, by default will install always latest version.

Container image

In this other repo I have a container image where you can find this tool tftools installed.

https://hub.docker.com/r/containerscrew/infratools/

Take a look inside install documentation for other installation methods.

Usage

Take a look inside docs usage

Built-in subcommand

tftools usage is subcommand that prints the contents of usage.md in pretty terminal markdown render

tftools usage

Requires internet connectivity, as it fetches the usage.md file.

Example

example

This summarized output can be useful, for example, for:

  • You are migrating a terraform module and there are many changes that may be important in terms of destroying/creating resources (e.g., if you are migrating an EKS module from v17.X to v19.X).
  • You use GitOps and deploy terraform from pipeline. The pipeline that makes the terraform plan can always show a summary of what is going to change (instead of having a super output of the original terraform plan).

TO DO

  • Improve error handling
  • Add tests, although I have no experience
  • Code refactor is certainly needed!
  • Create new subcommand for an interative terraform state mv target migration (when you need to move a lot of resources)
  • Other subcommand when you need to apply only certain targets (terraform apply -target=x -target=x ...)

Contribution

Pull requests are welcome! Any code refactoring, improvement, implementation.

LICENSE

LICENSE