A curated list of resources on
HashiCorp’s Terraform.
Your
contributions
are welcome!
Terraform enables you to safely and predictably create, change, and
improve production infrastructure. It is an open source tool that codifies
APIs into declarative configuration files that can be shared amongst team
members, treated as code, edited, reviewed, and versioned.
Sponsored by
Scalr - Terraform Automation & Collaboration Software
Contents
Legend
- Not compatible with terraform >= 0.12 :ghost:
- Abandoned :skull:
- Monetized :heavy_dollar_sign:
Official Resources
Books
Tutorials and Blog Posts
Beginner Guides
Writing Custom Providers
How-To
Multi-Environment Configuration
Azure
AWS
-
AWS Lambda the Terraform Way
- Understand AWS Lambda in-depth, beyond executing functions, using
Terraform. Also includes guides for integration with S3, API Gateway,
DynamoDB, Kinesis, SQS.
Miscellaneous
For more Community Modules not listed here please see the
Terraform Module Registry.
-
rancher-terraform-digitalocean
- Rancher server on digitalocean.
-
segmentio/stack -
Configures production infrastructure with AWS, Docker, and ECS.
-
terraform-aws-alb
- Created Application load-balancer on AWS (verified module).
-
terraform-aws-atlantis
- Creates Terraform configurations for running
Atlantis on AWS Fargate. Github,
Gitlab and BitBucket are supported.
-
terraform-aws-autoscaling
- Creates Auto-Scaling Groups and Launch Configurations (verified
module).
-
terraform-aws-ecr
- Manages Docker container registries on AWS ECR.
-
terraform-aws-efs
- Defines an EFS Filesystem.
-
terraform-aws-eks
- Creates Elastic Kubernetes Service on AWS (very popular module).
-
terraform-aws-elb
- Created Elastic load-balancer on AWS (verified module).
-
terraform-aws-jenkins-ha-agents
- EC2 Based Jenkins deployment with HA (spot) agents. Runs on EFS for
immutability. Fully customizeable, with sensible defaults.
-
terraform-aws-jenkins
- Build a Docker image with Jenkins, saves it to an ECR repo, and
deploys it to Elastic Beanstalk running a Docker stack.
-
terraform-aws-key-pair
- Automatically Generate SSH Key Pairs (Public/Private Keys).
-
terraform-aws-lambda-auto-package
- A terraform module to define a lambda function which source files are
automatically built and packaged for lambda deployment.
-
terraform-aws-modules
- Collection of Terraform AWS modules supported by the community
(includes official AWS modules).
-
terraform-aws-postgresql-rds
- Creates PostgreSQL on RDS.
-
terraform-aws-rds
- Creates RDS resources on AWS (verified module).
-
terraform-aws-secure-baseline
- Set up your AWS account with the secure baseline configuration based
on CIS Amazon Web Services Foundations.
-
terraform-aws-security-group
- Creates EC2-VPC security groups on AWS (verified module).
-
terraform-aws-ssh-bastion-service
- Terraform plan to deploy ssh bastion as a stateless service on AWS.
-
terraform-aws-lambda
- Terraform module, which builds dependencies and packages, and also
creates AWS Lambda resources in countless combinations.
-
terraform-aws-vpc
- Creates VPC resources on AWS (verified and very popular module).
-
terraform-azurerm-aks
- Create AKS resources on Azure.
-
terraform-azurerm-iis
- Install IIS Server on Azure VM instance.
-
terraform-azurerm-mysql
- Create MySql Database on Azure.
-
terraform-azurerm-redis
- Create Redis on Azure.
-
terraform-azurerm-sqlserver
- Create SQl Server Database on Azure.
-
terraform-cloudflare-maintenance
- Module to create a Maintenance Page using Cloudflare Workers.
-
terraform-digitalocean-droplet
- Terraform module for managing DigitalOcean Droplets and related
resources.
-
terraform-ecs-jenkins
- Provisions Jenkins on AWS ECS using Terraform.
-
terraform-google-project-factory
- Opinionated Google Cloud Platform project creation and configuration
with Shared VPC, IAM, APIs, etc.
-
terraform-linode-k8s
- Installs Kubernetes on Linode Instances.
-
terraform-static-website-s3-cloudfront
- Creates static websites on AWS S3 & Cloudfront based on variables.
-
tf_aws_availability_zones_cfn
- Gets availability zones for your AWS region/account from
Cloudformation.
-
tf_aws_bastion_s3_keys
- Creates bastion hosts on AWS EC2.
-
tf_aws_coreos_ami
- Easy way to lookup CoreOS AMIs with terraform.
-
tf_aws_nat
- NAT instances for AWS.
Private Module Registries
-
anthology -
Private Terraform registry implementation as an alternative to the
official registry.
-
citizen - Private
Terraform Module Registry
-
terraform-simple-registry
- Simple implementation of the Terraform registry protocols.
Providers
Testing
-
kitchen-terraform
- Provides a set of Test Kitchen plugins which enable a system to use
Test Kitchen to converge a Terraform configuration and verify the
resulting Terraform state with InSpec controls.
-
rspec-terraform
- RSpec tests for your Terraform modules.
-
terraform-compliance
- BDD Testing for Terraform Files.
-
terraform_validate
- Assists in the enforcement of user-defined standards in Terraform.
-
terratest -
Terratest is a Go library that makes it easier to write automated tests
for your infrastructure code.
-
clarity - A
declarative test framework for Terraform for unit testing.
-
AirIAM - AirIAM is
a tool for AWS IAM to least privilege Terraform execution framework.
-
astro - Astro is a tool for
managing multiple Terraform executions as a single command. :ghost:
-
atlantis - Unified
workflow for collaborating on Terraform through GitHub.
-
blast radius -
Interactive visualizations of Terraform dependency graphs. :skull:
-
Checkov -
Terraform static analysis tool for terraform>=0.12
-
Cloudrail -
Terraform and Live Cloud context-based analysis tool for
terraform>=0.12 :heavy_dollar_sign:
-
flora - Terraform
version manager.
-
fogg - A tool for
eliminating toil in managing terraform repositories.
-
former2 - Generate
terraform configuration from your existing resources within your AWS
account.
-
gaia - A web application
to import and run your Terraform modules.
-
hcledit - A command
line editor for HCL.
-
iam-policy-json-to-terraform
- Small tool to convert an IAM Policy in JSON format into a Terraform
aws_iam_policy_document
-
k2tf - Kubernetes YAML to
Terraform HCL converter.
-
KICS - Scans IaC
projects for security vulnerabilities, compliance issues, and
infrastructure misconfiguration. Currently working with Terraform
projects, Kubernetes manifests, Dockerfiles, AWS CloudFormation
Templates, and Ansible playbooks.
-
Infracost - Cloud
cost estimates for Terraform in your CLI and pull requests.
-
json2hcl - Convert JSON to
HCL and vice versa. :ghost:
-
modules.tf - Infrastructure as code
generator - from visual diagrams created with
Cloudcraft.co to Terraform.
Source code.
-
para - The missing
3rd-party plugin manager and a “swiss army knife” for
Terraform/Terragrunt - just 1 tool to facilitate all workflows. :skull:
-
pre-commit-terraform
- pre-commit git hooks to take care of Terraform configurations
(auto-format, validate, update docs).
-
pretf - drop-in
Terraform wrapper that generates Terraform configuration with Python.
See
pretf documentation
-
python-terrafile
- Systematically manage external modules from Github for use in
Terraform.
-
prettyplan -
Prettyplan ([available online here]
(https://chrislewisdev.github.io/prettyplan/)) is a small tool to help
you view large Terraform plans with ease. :ghost:
-
regula - Evaluates
Terraform infrastructure-as-code for potential AWS, Azure, and Google
Cloud security misconfigurations and compliance violations prior to
deployment.
-
ruby-terraform
- Simple Ruby wrapper for invoking terraform commands.
-
scenery - Another
Terraform plan output prettifier. :ghost:
-
scratchrelaxtv
- Simple Python tool to help with module development - extract vars from
main.tf
to generate variables.tf
and make
module usage stub from variables.tf
.
-
serverless.tf - Doing serverless with Terraform
- serverless.tf is an opinionated open-source framework for developing,
building, deploying, and securing serverless applications and
infrastructures on AWS using Terraform.
Read more.
-
tads-boilerplate
- The power of Ansible and Terraform + the simplicity of Docker Swarm =
Infrastructure as Code and DevOps best practices.
-
tau - Tau is a thin wrapper
on top of terraform to manage multiple deployments, dependencies and
secrets.
-
terraboard - Web
dashboard to inspect Terraform States.
-
terraboot - DSL to
generate a terraform configuration and run it.
-
TerraDepot
Terraform state repository, based on the default http remote backend.
Allows the central administration of tfstates on AWS S3.
-
terrafile -
Systematically manage external modules from Github for use in Terraform
(written in Go).
-
terrafile -
Systematically manage external modules from Github for use in Terraform
(written in Ruby).
-
terraform-bundle
- Easily builds bundles containing a Terraform binary as well as
provider binaries. Useful for CI and air-gapped Terraform Enterprise.
-
terraform-cdk -
CDK (Cloud Development Kit) for Terraform allows developers to use
familiar programming languages to define cloud infrastructure and
provision it through HashiCorp Terraform.
-
terraform-docs
- Quick utility to generate docs from terraform modules.
-
terraform-graph-beautifier
- Command line tool allowing to convert the barely usable output of the
terraform graph command to something more meaningful and explanatory.
-
terraform-landscape
- (only 0.11 and earlier) Improve Terraform’s plan output to be
easier to read and understand.
-
terraform-operator
- A Kubernetes CRD to handle Terraform operations.
-
terraform-plan-parser
- Command line utility and JavaScript API for parsing stdout from
terraform plan
and converting it to JSON. :ghost:
-
terraform-provisioner
- Tool for managing multiple provisions of the same Terraform scripts.
-
terraform-rake-tasks
- Shared Rake tasks for managing terraform plans.
-
terraform.py -
Ansible dynamic inventory script for parsing Terraform state files.
-
terraformer
- CLI tool to generate terraform files from existing infrastructure.
Infrastructure to Code. Supported many providers.
-
terraforming -
Export existing AWS resources to Terraform style (tf, tfstate). Similar
to
terraformer
.
-
terraformize -
ApplyTerraform modules via a simple REST API endpoint.
-
Terraform-Visual
A simple but powerful tool to visualize Terraform plan.
-
terragrunt -
Terragrunt is a thin wrapper for Terraform that provides extra tools for
keeping your Terraform configurations DRY, working with multiple
Terraform modules, and managing remote state.
-
terrahelp - Command
line utility aimed at providing supplementary functionality which can
sometimes prove useful when working with Terraform.
-
terrahub -
TerraHub is terraform automation and orchestration tool. Seamlessly
integrated into console.terrahub.io, enterprise friendly GUI to show
realtime terraform executions, as well as auditing and reporting
capabilities for historical terraform runs. :heavy_dollar_sign:
-
terrascan -
Collection of security and best practice test for static code analysis
of terraform templates
-
terraspace - The Terraform
Framework
-
terratag - Terratag is a
CLI tool that enables users of Terraform to automatically create and
maintain tags across their entire set of AWS, Azure, and GCP resources.
-
tf-init-booster
A Pre-terraform routine that speedups terraform modules download for
bulky blueprints.
-
tfsec - Terraform static
analysis tool that supports terraform <0.12 & >=0.12 &
directly integrates with HCL parser for better results.
-
tfenv - Terraform version
manager inspired by rbenv.
-
tfjson - Utility to
read in a Terraform plan file and dump it out in JSON. :skull:
-
tflint - Terraform
linter for detecting errors that can not be detected by
terraform plan
-
tfmask - Terraform
utility to mask select output from
terraform plan
and
terraform apply
-
tfmigrate - A
Terraform state migration tool for GitOps.
-
tfscaffold -
Framework for controlling multi-environment multi-component
terraform-managed AWS infrastructure.
-
tfschema - Schema
inspector for Terraform providers.
-
tfupdate - Update
version constraints in your Terraform configurations.
-
tfwrapper - Rubygem
providing rake tasks for running Hashicorp Terraform sanely.
-
tgf - Terragrunt frontend for
executing Terragrunt/Terraform through Docker.
-
xterrafile
Systematically manage external modules from the module registry, git or
local directories for use in Terraform (written in Go).
-
yor - Automatically
tag and trace infrastructure as code frameworks (Terraform,
Cloudformation and Serverless) .
Libraries
Boilerplates
-
Terraform Generator
- Scaffolding for a new terraform module or project with support of test
frameworks (terratest and kitchen-terraform)
Videos
Editor Plugins
License
To the extent possible under law, Shuaib Yunus has waived all copyright
and related or neighboring rights to this work.