Terraform is a tool to manage infrasrtucture as code from Hashicorp.
tfenv is a terraform version manager inspired by rbenv. It makes it easy to operate on different terraform projects and modules of different version compatibility.
terragrunt is a thin wrapper for terraform that provides extra tools for working with multiple Terraform modules. terragrunt comes from by Yevgeniy Brikman and team at gruntwork. He wrote Terraform up and Running. Gruntwork also created terratest. With terratest you can write automated tests against your infrastructure code.
tgenv terragrunt version manager inspried by and using code from tfenv.
Atlantis provides Terraform Pull Request Automation. They maintain an official container on dockerhub.
An example of an automated CI workflow for contributing code to a terraform inventory.
- Open a Pull Request
- Automatically run:
- Comment the results of checks back to the pull request.
- Team member reviews and approves.
- A
terraform applyoccurs and the output is commented on the pull request. - Merge Pull Request (assuming successful apply)
If you were creating a workflow for developing a terraform module in a non production environment, you could modify this workflow to both create and then destory the resources.
Terraform testing creates real resources on a cloud provider. It is common for terraform non-production environments to be on-demand and destoryed after the test is completed to save money.
Terraform commands are limiated to the speed of the provider's API. Resources of different types are created at different speeds. For example an AWS Cloudfront distribution takes ~30-35 minutes to create. An AWS S3 bucket only seconds.