Manage infrastructure in small deployable units
Defining infrastructure in small deployable units (or just “units” for short) is
the foundation for managing infrastructure at scale with OpenTofu and Terraform.
While OpenTofu and Terraform excel at defining infrastructure
patterns,
Terragrunt excels at deploying those patterns as small units of
infrastructure.
Commercial Product Support
Deploy infrastructure changes with full support for Terragrunt, including
run-all support. Terragrunt stacks support is coming soon.
Automatically update Terragrunt files to the latest version of the relevant
OpenTofu/Terraform module.
Provision new AWS accounts (or sets of AWS accounts as part of creating a new
team!) by automatically generating the right Terragrunt files and folder
structure.
Validate OpenTofu/Terraform modules
Your OpenTofu and Terraform modules probably have bugs, but they’re hard to
discover until someone hits an issue in prod.
To build confidence that your OpenTofu and Terraform modules work as expected,
you need to write “unit tests” to validate their behavior. Terratest uses a
simplified set of patterns in Go, plus over 100 utility functions to enable
module authors to write tests.
Commercial Product Support
Almost every OpenTofu/Terraform module comes with Terratest to validate its
behavior.
The underlying OpenTofu/Terraform modules used to build Account Factory are
validated using Terratest.
Automate repetitive DevOps work by generating folders and files in advanced ways
When you need to stand up a new project, new team, new customer, or some other
new infrastructure project, you often have a common set of files and folders you
need to generate, with parameters that vary per instance.
Boilerplate is a cross-platform, code generator specially built for DevOps
workloads that supports a number of helpful features like automatically
executing bash commands to fill in template parameters, organizing your
templates as a collection of smaller templates, running hooks before and after
template generation, exposing an interactive UI to parameterize a template,
supporting typed variables, and more.
Commercial Product Support
You can specify an arbitrarily complex set of templates to create your new
AWS accounts or even whole new teams, all using Boilerplate.
Due to limitations in OpenTofu/Terraform, some modules must redundantly
declare a unique OpenTofu/Terraform resource for every AWS region. Boilerplate
allows us to auto-generate these files, making it easier to stay on top of new
AWS region updates.
Delete all the resources in your AWS account
Sometimes you need to clean up leftover resources in your AWS account so that
you’re not charged for them, or delete every resource in your account entirely.
CloudNuke offers a CLI interface for reviewing the resources to be deleted and
ultimately deleting them. It can be used both interactively (for manual deletion
of AWS account resources) and non-interactively (for automatically clearing AWS
accounts, for example, on a scheduled basis).
Commercial Product Support
We’ve written hundreds of Terratests to validate our IaC Library
OpenTofu/Terraform modules, however when those tests fail, we have leftover
resources. To address this, we run a scheduled process on our internal testing
accounts to periodically nuke them. To be clear, we never run CloudNuke on
customer accounts; only on internal Gruntwork testing infrastructure.
Run a single script against multiple git repos and automatically open a GitHub
pull requests
Sometimes you need to make a common change across many git repos, such as adding
a file to many repos at once.
Common examples include running a search and replace (e.g. to change your
company name or product name across a large number of repos), upgrading
Terragrunt/OpenTofu/Terraform modules with a universal change, or modifying
CI/CD configuration files across many repos. GitXargs streamlines all these
changes
Capture expert knowledge in interactive, executable documents
Your hardest infrastructure procedures live in the heads of a few experts, and
the docs describing them go stale the moment they're written.
Runbooks are interactive markdown documents that let subject matter experts
capture a procedure once, as MDX with embedded React components that execute
scripts, manage AWS and GitHub authentication, clone repos, and generate files
from templates. Anyone on the team can then work through that procedure step by
step in the Runbooks desktop app.
Commercial Product Support
Gruntwork uses Runbooks as part of delivering Account Factory, capturing the
setup procedure as an interactive, executable document rather than static
documentation.