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.
- Official Resources
- Community
- Books
- Tutorials and Blog Posts
- Community Modules
- Tools
- Talks
- Editor Plugins
- Terraform Google Group
- Terraform Gitter
- Terraform Bug Tracker
- Terraform Community Modules
- Terraform Module Registry
- A Comprehensive Guide to Terraform - Series of blog posts from the author of "Terraform: Up & Running" that guide the reader from beginning with Terraform to using it in the real world.
- Easily Deploy A Seneca Microservice to ECS with Wercker and Terraform: Part I, II & III - Illustrates how Terraform can be incorporated into a microservice deployment pipeline.
- Tutorial: How to Use Terraform to Deploy OpenStack Workloads - Illustrates how easy it is to use the OpenStack Terraform provider to deploy a web server.
- The Segment AWS Stack - Shows the behind the scenes of the infrastructure powered by Terraform that solved The Million Dollar Engineering Problem at Segment.
- Terraform: Beyond the Basics with AWS - Explanation of a demo using Terraform to provision a sample AWS architecture.
- Deploying Discourse with Terraform - Shows how Terraform can create a running instance of Discourse on DigitalOcean in one command.
- Bootstrapping Docker Infrastructure With Terraform - Walkthrough of deploying a dockerized app on ECS using Terraform.
- Two Weeks with Terraform - Some hard-earned experience from using Terraform in the wild, and some operational wisdom.
- Using Terraform for Cloud Deployments - Part 1 - Beginner tutorial with a focus on using Terraform to provision an EC2 instance.
- Terraform, VPC, and why you want a tfstate file per env - Some gotchas surrounding using Terraform in large projects with multiple environments and how to avoid them.
- Sharing data between Terraform configurations - Illustrates how to use remote state to share data between Terraform configurations.
- Using Pipelines to Manage Environments with Infrastructure as Code - Explains different approaches for building a pipeline to handle infrastructure changes moving from one environment to the next.
For more Community Modules not listed here please see the Terraform Module Registry.
- segmentio/stack - Configures production infrastructure with AWS, Docker, and ECS.
- terraform-ecs-jenkins - Provisions Jenkins on AWS ECS using Terraform.
- tf_aws_bastion_s3_keys - Creates bastion hosts on AWS EC2.
- terraform-static-website-s3-cloudfront - Creates static websites on AWS S3 & Cloudfront based on variables.
- tf_aws_vpc_only - Provides only VPC (without subnets) in AWS.
- tf_aws_asg_elb - Creates Auto-Scaling Groups and Launch Configurations for use with an Elastic Load Balancer.
- tf_aws_availability_zones_cfn - Gets availability zones for your AWS region/account from Cloudformation.
- tf_aws_ubuntu_ami - Easy way to lookup Ubuntu AMIs with Terraform.
- tf_aws_sg - Collection of common security group settings.
- tf_aws_coreos_ami - Easy way to lookup CoreOS AMIs with terraform.
- tf_aws_private_subnet_nat_gateway - Creates private subnets with NAT Gateway in AWS.
- tf_aws_rds - Creates RDS resources on AWS.
- terraform-aws-postgresql-rds - Creates PostgreSQL on RDS.
- tf_aws_vpc - Provides VPCs in AWS.
- tf_aws_nat - NAT instances for AWS.
- rancher-terraform-digitalocean - Rancher server on digitalocean.
- Atlantis - Unified workflow for collaborating on Terraform through GitHub.
- terraform-docs - Quick utility to generate docs from terraform modules.
- terraform.py - Ansible dynamic inventory script for parsing Terraform state files.
- terraform-provisioner - Tool for managing multiple provisions of the same Terraform scripts.
- terraboot - DSL to generate a terraform configuration and run it.
- terraform-provider-pingdom - Terraform provider to manage pingdom resources.
- terragrunt - Terragrunt is a thin wrapper for Terraform that supports locking for Terraform state and enforces best practices.
- tfenv - Terraform version manager inspired by rbenv.
- terraform-landscape - Improve Terraform's plan output to be easier to read and understand.
- Blast Radius - Interactive visualizations of Terraform dependency graphs.
- Orchestrating Containers with Terraform and Consul - Mitchell Hashimoto shows how Terraform can be used to deploy and scale containerized workloads.
- Building Scalable, Repeatable Infrastructure in the Cloud with Terraform - Demonstrates how Terraform enables the practice of Infrastructure as Code by deploying TeamCity in AWS using a hosted PostgreSQL.
- Evolving Your Infrastructure with Terraform - CTO of OpenCredo provides an extensive look at using Terraform in the real-world with the help of some interesting use-cases.
- Going Multi-Cloud with Terraform and Nomad
- Running a Terraform Environment at Scale - Running Terraform at scale with hundreds of AWS accounts.
- Terraforming the Composable World - Integrating Terraform with an on-premise bare metal provisioning.
- State of Terraform Providerland - How Terraform providers work and how to write one.
- Untangling Terraform Through Refactoring - How to refactor your Terraform code in a careful way with minimum risk.
- Terraform At Scale - How Segment uses Terraform.
- Production ChaosMonkey with Terraform - How DigitalOcean uses Terraform to run production integration tests.
- Terraform w/ Lee Trout - Focuses on development patterns and how to effectively structure Terraform code.
- Webinar: Multi-Cloud, One Command with Terraform - Provisioning hybrid cloud infrastructure using Terraform.
To the extent possible under law, Shuaib Yunus has waived all copyright and related or neighboring rights to this work.