Terraform logo
Describe your complete infrastructure as code and build resources across providers

What is Terraform?

With Terraform, you describe your complete infrastructure as code, even as it spans multiple service providers. Your servers may come from AWS, your DNS may come from CloudFlare, and your database may come from Heroku. Terraform will build all these resources across all these providers in parallel.
Terraform is a tool in the Infrastructure Build Tools category of a tech stack.
Terraform is an open source tool with 17.5K GitHub stars and 4.8K GitHub forks. Here’s a link to Terraform's open source repository on GitHub

Who uses Terraform?

Companies
497 companies use Terraform in their tech stacks, including Uber, Instacart, and 9GAG.

Developers
301 developers use Terraform.

Terraform Integrations

Amazon EC2, Heroku, CloudFlare, DigitalOcean, and Microsoft Azure are some of the popular tools that integrate with Terraform. Here's a list of all 21 tools that integrate with Terraform.

Why developers like Terraform?

Here’s a list of reasons why companies and developers use Terraform
Terraform Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose Terraform in their tech stack.

Emanuel Evans
Emanuel Evans
Senior Architect at Rainforest QA · | 12 upvotes · 43.2K views
atRainforest QA
Terraform
Helm
Google Cloud Build
CircleCI
Redis
Google Cloud Memorystore
PostgreSQL
Google Cloud SQL for PostgreSQL
Google Kubernetes Engine
Kubernetes
Heroku

We recently moved our main applications from Heroku to Kubernetes . The 3 main driving factors behind the switch were scalability (database size limits), security (the inability to set up PostgreSQL instances in private networks), and costs (GCP is cheaper for raw computing resources).

We prefer using managed services, so we are using Google Kubernetes Engine with Google Cloud SQL for PostgreSQL for our PostgreSQL databases and Google Cloud Memorystore for Redis . For our CI/CD pipeline, we are using CircleCI and Google Cloud Build to deploy applications managed with Helm . The new infrastructure is managed with Terraform .

Read the blog post to go more in depth.

See more
Joseph Kunzler
Joseph Kunzler
DevOps Engineer at Tillable · | 9 upvotes · 11.3K views
atTillable
AWS CloudFormation
AWS Elastic Load Balancing (ELB)
Amazon EC2
Amazon S3
Terraform

We use Terraform because we needed a way to automate the process of building and deploying feature branches. We wanted to hide the complexity such that when a dev creates a PR, it triggers a build and deployment without the dev having to worry about any of the 'plumbing' going on behind the scenes. Terraform allows us to automate the process of provisioning DNS records, Amazon S3 buckets, Amazon EC2 instances and AWS Elastic Load Balancing (ELB)'s. It also makes it easy to tear it all down when finished. We also like that it supports multiple clouds, which is why we chose to use it over AWS CloudFormation.

See more
Sebastian Gębski
Sebastian Gębski
CTO at Shedul/Fresha · | 6 upvotes · 17.7K views
atFresha Engineering
Amazon RDS
Amazon S3
Amazon EKS
Amazon EC2
Ansible
Terraform
Kubernetes
Docker Compose
Docker

Heroku was a decent choice to start a business, but at some point our platform was too big, too complex & too heterogenic, so Heroku started to be a constraint, not a benefit. First, we've started containerizing our apps with Docker to eliminate "works in my machine" syndrome & uniformize the environment setup. The first orchestration was composed with Docker Compose , but at some point it made sense to move it to Kubernetes. Fortunately, we've made a very good technical decision when starting our work with containers - all the container configuration & provisions HAD (since the beginning) to be done in code (Infrastructure as Code) - we've used Terraform & Ansible for that (correspondingly). This general trend of containerisation was accompanied by another, parallel & equally big project: migrating environments from Heroku to AWS: using Amazon EC2 , Amazon EKS, Amazon S3 & Amazon RDS.

See more
AWS CloudFormation
Google Cloud Deployment Manager
Terraform

I use Terraform because it hits the level of abstraction pocket of being high-level and flexible, and is agnostic to cloud platforms. Creating complex infrastructure components for a solution with a UI console is tedious to repeat. Using low-level APIs are usually specific to cloud platforms, and you still have to build your own tooling for deploying, state management, and destroying infrastructure.

However, Terraform is usually slower to implement new services compared to cloud-specific APIs. It's worth the trade-off though, especially if you're multi-cloud. I heard someone say, "We want to preference a cloud, not lock in to one." Terraform builds on that claim.

Terraform Google Cloud Deployment Manager AWS CloudFormation

See more
Nikola Yovchev
Nikola Yovchev
Head of Engineering at Relay42 · | 2 upvotes · 29.7K views
atRelay42
Terraform
Pingdom
Datadog
#Monitoring
#Relay42
#Datadog

#Datadog #Relay42 #Monitoring

With Datadog unveiling their Synthetics product (https://www.datadoghq.com/blog/introducing-synthetic-monitoring/), we at Relay42 are considering moving out of Pingdom.

The rationale is simple:

  • 90% of our monitoring is on Datadog, apart from the external requests. It'd be nice to identify regional issues in one place, so this is great in our monitoring consolidation efforts.

  • The lack of a non-community Terraform provider for Pingdom

We have yet to get in the beta and test it out but we feel very excited about this announcement.

See more
John Kodumal
John Kodumal
CTO at LaunchDarkly · | 2 upvotes · 17.9K views
atLaunchDarkly
Armory
Packer
Terraform
Spinnaker
Ansible

LaunchDarkly is almost a five year old company, and our methodology for deploying was state of the art... for 2014. We recently undertook a project to modernize the way we #deploy our software, moving from Ansible-based deploy scripts that executed on our local machines, to using Spinnaker (along with Terraform and Packer) as the basis of our deployment system. We've been using Armory's enterprise Spinnaker offering to make this project a reality.

See more

Terraform's features

  • Infrastructure as Code: Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.
  • Execution Plans: Terraform has a "planning" step where it generates an execution plan. The execution plan shows what Terraform will do when you call apply. This lets you avoid any surprises when Terraform manipulates infrastructure.
  • Resource Graph: Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds infrastructure as efficiently as possible, and operators get insight into dependencies in their infrastructure.
  • Change Automation: Complex changesets can be applied to your infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors

Terraform Alternatives & Comparisons

What are some alternatives to Terraform?
Ansible
Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates. Ansible’s goals are foremost those of simplicity and maximum ease of use.
Kubernetes
Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.
Packer
Packer automates the creation of any type of machine image. It embraces modern configuration management by encouraging you to use automated scripts to install and configure the software within your Packer-made images.
Cloud Foundry
Cloud Foundry is an open platform as a service (PaaS) that provides a choice of clouds, developer frameworks, and application services. Cloud Foundry makes it faster and easier to build, test, deploy, and scale applications.
Pulumi
Pulumi is a cloud development platform that makes creating cloud programs easy and productive. Skip the YAML and just write code. Pulumi is multi-language, multi-cloud and fully extensible in both its engine and ecosystem of packages.
See all alternatives

Terraform's Stats