Terraform logo

Terraform

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 Server Configuration and Automation category of a tech stack.
Terraform is an open source tool with 46.2K GitHub stars and 10K GitHub forks. Here’s a link to Terraform's open source repository on GitHub

Who uses Terraform?

Companies
2132 companies reportedly use Terraform in their tech stacks, including Uber, Udemy, and LaunchDarkly.

Developers
15737 developers on StackShare have stated that they use Terraform.

Terraform Integrations

CloudFlare, Amazon EC2, Heroku, Microsoft Azure, and DigitalOcean are some of the popular tools that integrate with Terraform. Here's a list of all 68 tools that integrate with Terraform.
Pros of Terraform
121
Infrastructure as code
73
Declarative syntax
45
Planning
28
Simple
24
Parallelism
8
Well-documented
8
Cloud agnostic
6
It's like coding your infrastructure in simple English
6
Immutable infrastructure
5
Platform agnostic
4
Extendable
4
Automation
4
Automates infrastructure deployments
4
Portability
2
Lightweight
2
Scales to hundreds of hosts
Decisions about Terraform

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

pramod shirsath
Founder at Supra Software Solutions · | 7 upvotes · 51.2K views

We are an application development firm helping our customers develop web & mobile application. We are currently using GitLab for CI/CT/CD. However, we are looking for something more modern, advance & futuristic that will still be in use even after 10 years of supporting the latest technologies/servers of the time. Someone mentioned about Terraform. Any thoughts about which one would be right one to adopt or just continue with Gitlab?

See more
Kamil Kowalski
Lead Architect at Fresha · | 3 upvotes · 253K views

Coming from a Ruby background, we've been users of New Relic for quite some time. When we adopted Elixir, the New Relic integration was young and missing essential features, so we gave AppSignal a try. It worked for quite some time, we even implemented a :telemetry reporter for AppSignal . But it was difficult to correlate data in two monitoring solutions, New Relic was undergoing a UI overhaul which made it difficult to use, and AppSignal was missing the flexibility we needed. We had some fans of Datadog, so we gave it a try and it worked out perfectly. Datadog works great with Ruby , Elixir , JavaScript , and has powerful features our engineers love to use (notebooks, dashboards, very flexible alerting). Cherry on top - thanks to the Datadog Terraform provider everything is written as code, allowing us to collaborate on our Datadog setup.

See more
Suresh Kannan
Sr. Systems Technical Speciali at BMC Software · | 6 upvotes · 57.8K views
Needs advice
on
AnsibleAnsible
and
TerraformTerraform

We use both these tools and are relatively new to them. We have a few questions:

  1. With Terraform, how are you handling changes done outside of Terraform in the Infrastructure?
  2. Are there any limitations or features that we miss in Ansible that Terraform can do? What are those?
See more
Yogesh Bhondekar
Product Manager | SaaS | Traveller · | 16 upvotes · 492.5K views
Needs advice
on
DockerDockerMongoDBMongoDB
and
RabbitMQRabbitMQ

Hi, I am building an enhanced web-conferencing app that will have a voice/video call, live chats, live notifications, live discussions, screen sharing, etc features. Ref: Zoom.

I need advise finalizing the tech stack for this app. I am considering below tech stack:

  • Frontend: React
  • Backend: Node.js
  • Database: MongoDB
  • IAAS: #AWS
  • Containers & Orchestration: Docker / Kubernetes
  • DevOps: GitLab, Terraform
  • Brokers: Redis / RabbitMQ

I need advice at the platform level as to what could be considered to support concurrent video streaming seamlessly.

Also, please suggest what could be a better tech stack for my app?

#SAAS #VideoConferencing #WebAndVideoConferencing #zoom #stack

See more
Shared a protip
on
TerraformTerraform
at

Terraform Preferred for infrastructure-as-code (IAC), deploying infrastructure to AWS.

See more
Emanuel Evans
Senior Architect at Rainforest QA · | 20 upvotes · 1.6M views

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

Blog Posts

GitHubGitPython+22
17
14416
JavaScriptGitHubPython+42
53
22456

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 Followers
14687 developers follow Terraform to keep up with related blogs and decisions.