Skip to main content
TrustRadius
HashiCorp Terraform

HashiCorp Terraform

Overview

What is HashiCorp Terraform?

Terraform from HashiCorp is a cloud infrastructure automation tool that enables users to create, change, and improve production infrastructure, and it allows infrastructure to be expressed as code. It codifies APIs into declarative configuration files that can be shared amongst…

Read more
Recent Reviews

TrustRadius Insights

Fast and Reliable Infrastructure Deployment: Users appreciate Terraform's ability to deploy infrastructure quickly and reliably. Several …
Continue reading

Terraform Review

8 out of 10
July 12, 2021
Terraform is currently being used to deploy infrastructure to GCP. We are mindful of the fact that some components might need other cloud …
Continue reading

Terraform Review

9 out of 10
February 15, 2021
Incentivized
We use Terraform to deploy our infrastructure into AWS at an enterprise level. We support more than 700 developers across different brands …
Continue reading
Read all reviews

Reviewer Pros & Cons

View all pros & cons
Return to navigation

Pricing

View all pricing

Open Source

$0

Cloud

Team & Governance

$20/user

Cloud
per user/per month

Enterprise

Contact sales team

Cloud

Entry-level set up fee?

  • No setup fee
For the latest information on pricing, visithttps://www.hashicorp.com/products/terr…

Offerings

  • Free Trial
  • Free/Freemium Version
  • Premium Consulting/Integration Services
Return to navigation

Product Demos

Infrastructure Pipelines with Terraform Cloud

YouTube
Return to navigation

Product Details

What is HashiCorp Terraform?

HashiCorp Terraform is an infrastructure as code tool that lets the user define both cloud and on-prem resources in human-readable configuration files that the user can version, reuse, and share. A consistent workflow can then be used to provision and manage infrastructure throughout its lifecycle. Terraform can manage low-level components like compute, storage, and networking resources, as well as high-level components like DNS entries and SaaS features.

Terraform creates and manages resources on cloud platforms and other services through their application programming interfaces (APIs). Providers enable Terraform to work with virtually any platform or service with an accessible API.

HashiCorp Terraform Features

  • Supported: Manage any Infrastructure
  • Supported: Track your infrastructure
  • Supported: Automate changes
  • Supported: Standardize configurations

HashiCorp Terraform Screenshots

Screenshot of Terraform StateScreenshot of Terraform RunsScreenshot of Terraform VariablesScreenshot of Terraform WorkspacesScreenshot of Terraform Cost Estimation

HashiCorp Terraform Technical Details

Deployment TypesSoftware as a Service (SaaS), Cloud, or Web-Based
Operating SystemsUnspecified
Mobile ApplicationNo

Frequently Asked Questions

Terraform from HashiCorp is a cloud infrastructure automation tool that enables users to create, change, and improve production infrastructure, and it allows infrastructure to be expressed as code. It codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned. It is available Open Source, and via Cloud and Self-Hosted editions.

Red Hat Ansible Automation Platform, Jenkins, and GitHub are common alternatives for HashiCorp Terraform.

Reviewers rate Performance highest, with a score of 9.4.

The most common users of HashiCorp Terraform are from Enterprises (1,001+ employees).
Return to navigation

Comparisons

View all alternatives
Return to navigation

Reviews and Ratings

(123)

Community Insights

TrustRadius Insights are summaries of user sentiment data from TrustRadius reviews and, when necessary, 3rd-party data sources. Have feedback on this content? Let us know!

Fast and Reliable Infrastructure Deployment: Users appreciate Terraform's ability to deploy infrastructure quickly and reliably. Several reviewers have mentioned that they were able to provision resources efficiently, saving them time and effort in the deployment process.

Modular Approach with Reusable Modules: The use of modules in Terraform is highly valued by users, as it enables repeatability and encourages code reuse. Many reviewers have stated that they find it easy to share and reuse functionality across deployments, promoting collaboration and consistency among teams.

Large Ecosystem of Modules for Various Providers: Users highly value the extensive ecosystem of modules available in Terraform for various providers. Numerous reviewers have stated that this allows them to easily access strong default configurations for many services, saving them time and effort in setting up their infrastructure.

Complex Documentation: Many users have found the documentation for the new language to be complex and lacking clear explanations, making it difficult for them to understand and use Terraform effectively. They express frustration with the lack of concise and intuitive explanations in the documentation, which hinders their ability to grasp key concepts.

Challenging Rollback Operations: Users have expressed difficulty in performing rollback operations as it must be done through version control. This process is seen as cumbersome and unintuitive, requiring extra steps that could be simplified with a dedicated rollback feature within Terraform itself.

Unusual Language Design: The language used in Terraform is considered unusual by many users, which makes it challenging for new users to understand and navigate the codebase. Some users find it unconventional compared to other infrastructure-as-code tools, leading to confusion when reading or modifying existing code.

Users have provided several recommendations for Terraform based on their experiences with the tool for automating cloud infrastructure management.

First, users suggest taking the time to understand and implement Terraform modules properly. This recommendation emphasizes the importance of familiarizing oneself with the module system in order to effectively leverage the capabilities of Terraform.

Second, users recommend reading through the documentation and reaching out to Hashicorp for assistance when facing issues. By doing so, users believe that they can overcome any challenges they encounter and make the most of Terraform's features.

Lastly, some users advise considering other Infrastructure as Code (IaC) platforms, but acknowledge that Terraform is a great and flexible open-source option. This recommendation highlights the need for users to evaluate different options before making a final decision on their cloud infrastructure automation tool.

Attribute Ratings

Reviews

(1-5 of 5)
Companies can't remove reviews or game the system. Here's why
Michael Jenkins | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Incentivized
Terraform is my team's primary Infrastructure as Code (IaC) application. And while it's not a mandated requirement, it's almost expected that all teams in my organization use Terraform as they build out cloud resources. Using Terraform, we can produce code that can be shared across teams, build common knowledge on best practices for cloud architectures, and build cloud resources quickly.
  • Terraform does a great job of making cloud resources available as code. Essentially, it provides building blocks for the resources available in the cloud.
  • I use the open source version of Terraform and I appreciate the user experience at the command line. Using the switches available, the CLI lends itself to a flow of formatting and validating code before a plan is developed, reviewed, and applied.
  • Managing the state of the resources created with code is tough but Terraform does a good job of this by providing several ways to manage state. My team uses the bucket approach but I have seen teams use object databases and shared files as well. Each approach comes with its pros and cons but at least there are options.
  • During the plan phase, I appreciate that Terraform shows the changes that are about to be applied to resources that already exist. This gives engineers insight into the changes they're about to make, particularly if the changes are not what they expected.
  • I like Terraforms "desired state" approach to IaC, but sometimes I wish the code was a bit more programmatic. Adding counts and "for_each" statements is nice for creating multiple instances of the same resources. But this approach can be difficult to understand for engineers that come from a programming background. A more expressive approach to looping and other coding styles would be nice.
  • A rollback feature would be a welcome addition to Terraform. At the time I'm writing this, when Terraform encounters an error, it stops on the step where the error is encountered and any resources previously created are left in place. While this is desired in most cases, and option for rolling back those resources would provide functionality similar to other IaC tools.
  • Regarding plan output, a minimized report would be appreciated. Currently I have wrappers around the "terraform plan" command that limit the output to key changes. It would be great if there were switches that built this into the tool.
I think Terraform is well suited for many use cases for Infrastructure as Code:
  • For long running resources, having a single source of truth for their desired configuration is handy, since that configuration can drift over time.
  • For short running or experimental cases, Terraform code can be used to quickly spin up environments before spinning them down just as quickly.
  • If a reference architecture is needed, Terraform code can be used to describe all the resources that make up a stack.
Terraform has plenty of functions and programming capabilities but it's not a general purpose programming language. I can see someone trying to do everything in Terraform but there are plenty of general purpose programming languages that are better suited for common tasks outside of building infrastructure as code.
  • Using code, we are able to build and deploy cloud resources faster and more consistently than producing the same resources in the console manually.
  • For applications that share architectures, we can reuse code to expedite development. We can also do the same with modules that are shared across the organization.
  • By defining all of our resources as code, we can deploy complete environments with "batteries included." For example, we can use code that spins up servers in a cloud provider and at the same time, creates monitors with in our monitoring provider. Likewise, when the servers are decommissioned, the monitors are decommed along with them. In the past, the creation and decom of the monitors would have been a disjointed, manual step. With Terraform we get it all with one "terraform apply."
I can't find these applications listed, but other IaC tools I have used include: AWS CloudFormation, Azure Resource Manager Templates, and GCP Cloud Deployment Templates. For a comparable tool, I have the most experience with CloudFormation.

Compared to CloudFormation, the first benefit that Terraform has is the the code format. That is, CloudFormation is more of a document in YAML or JSON while Terraform is more code-like in structure. This makes it more similar to other programming languages that engineers may be familiar with. In fact, the times that I've worked with CloudFormation, I've used other code (Python with the Troposphere library) to generate the CloudFormation YAML.

Terraform also lends itself to breaking out code into smaller pieces. That is, for a single project, different parts of it can be represented in different files. For example, all the EC2 resources in one file and all the RDS resources in another file, and so on. With CloudFormation, all resources are represented in one file. For large projects this can become unwieldy when trying to track down specific resources. For versioned code (and shouldn't all code be versioned?) tracking changes may also become difficult with one, monolithic file.

Lastly, I will mention state management. I _do_ appreciate that CloudFormation manages state for the user without question; it's one less thing to worry about. However, I appreciate the fact that Terraform gives options for storing state and the ability to examine it outside of the resource implementation process. Honestly, this is a minor detail but sometimes it comes in handy.
I have yet to have an opportunity to reach out directly to HashiCorp for support on Terraform. However, I have spent a great deal of time considering their documentation as I use the tool. This opinion is based solely on that.

I find the Terraform documentation to have great breadth but lacking in depth in many areas. I appreciate that all of the tool's resources have an entry in the docs but often the examples are lacking. Often, the examples provided are very basic and prompt additional exploration. Also, the links in the documentation often link back to the same page where one might expect to be linked to a different source with additional information.
Score 9 out of 10
Vetted Review
Verified User
Incentivized
We in the software engineering department use Terraform management of AWS and Datadog. Terraform allows us to store and set up host configuration, load balancers, Datadog monitors all as code that can be checked into version control. Terraform neatly abstracts away the details of AWS and Datadog and exposes a simple API, so it makes it possible for every single team, even those without much infrastructure experience, to help maintain the infrastructure. It is also a key component in our deployment process.
  • Support/integration with many infrastructure providers including AWS, Google Cloud, Datadog, Gitlab, Heroku, SignalFX.
  • A neat thing about infrastructure as code is that it solves an age-old problem of infrastructure: knowing the configuration of everything about the network and services is as easy as reading a formatted config file.
  • Terraform's integration with different providers hasn't matured yet, so the API keeps changing or is buggy.
  • Also, because Terraform is relatively new, documentation/books/blogs are hard to come by, and it's hard to hire DevOps engineers who are familiar with it.
Pretty much anytime your DevOps engineers are managing more than ten machines or when you want multiple teams not focused on DevOps to help own the infrastructure hosting their code. Popular opinion is that Terraform is not very secure, battle-tested, and leaking secrets happen easily on accident. So, Terraform is less ideal when you have to store lots of sensitive secrets that your company is legally required to guard lest it is the end of you. Think Fintech, health-tech.
  • Scaling our infrastructure has become much easier, leading to less downtime.
  • Less buggy deployments due to bad config changes, also leading to less downtime.
  • Chef
Chef and Terraform are not apples to apples because Chef is more focused on config management, whereas Terraform is more focused on provisioning. However, I can say that where they do overlap in configuration management is that Terraform is the preferred tool because it has an immutable data model and so is much less prone to errors and hard-to-find bugs. Chef also requires a master server to maintain state, whereas Terraform does not.
Terraform has a robust and nascent community active in the Terraform forums and on GitHub. I haven't tried interacting with anyone there, but I heard from my co-workers they've found many solutions to their issues there. We also use Terraform Enterprise, provided by HashiCorp, and I have experienced first-class, professional, and timely support from them via email (but this depends on which plan you pay for).
December 17, 2019

Infrastructure Configured

Score 8 out of 10
Vetted Review
Verified User
Incentivized
Our AWS environment is defined through Terraform configuration scripts for the entire engineering organization. We manage our AWS environment using Terraform configuration files stored in our GitHub. We format the configuration files, run the plan command to review changes (additions, drops, and changes) when compared to production and then apply the changes if everything looks good!
  • Permissions.
  • Review plan before deployment.
  • Explaining what needs to be used for what for novice AWS users.
  • Very finicky with formatting. Should include formatting implicitly.
I would say Terraform should be used within even a single-user environment as it prevents costly mistakes if you review plan outputs. I would strongly recommend everyone managing their cloud environment to lock up the ability to make changes through the console and only allow changes to be deployed through configuration stored in the files.
  • Prevents mistakes compared to deploying directly on live environment.
  • Configuration changes are reviewed before changes are made (using Git of course).
I haven't had to use it, since peers in my organization and help pages have been adequate whenever help is needed.
Jeffrey Severance | TrustRadius Reviewer
Score 9 out of 10
Vetted Review
Verified User
Incentivized
We use Terraform for the creation and management of infrastructure in AWS and VMware. This tool allows users from our application teams to self manage infrastructure as code in their projects. Terraform also does not require our users to learn the of each specific provider. It provide us one uniform way to accomplish infrastructure changes This uniformity allows us to train our technical staff on one common platform. It improves consistency and repeatability because it is an automation engine.
  • Deploy infrastructure as code quickly. It is easy to get the environment installed and develop quickly.
  • The modular approach of terraform encourages collaboration and consistency. We can share and reuse functionality across our deployments.
  • Terraform provides modelling of the relationships between constructs in it. This is accomplished using the terraform graph command.
  • The errors generated by the tool in some cases are not detailed enough when debugging.
  • Terraform state is key and if corrupted it can't be restored.
  • Everything must be converted to a string before it can be compared in version 11.
It works well for provisioning infrastructure. It works well when complimented by a version control system. It is also free and community driven. This leads to a constantly improving environment which fosters innovation within the product. The community makes it easier to find solutions to problems. This is widely used across the market place and by big companies such as Google, and Capital One.
  • Terraform has increased our time to market in releasing new software.
  • Terraform has decreased defects in our operating environment.
  • Terraform has improved our ability to plan for labor resources by creating a common skill set.
Terraform is the solid leader in the space. It allows you to do more then just provisioning within a pre-existing servers. It is more extensible and has more providers available than it competitors. It is also open source and more adopted by the community then some of the other solutions that are available in the market place.
Terraform is community driven but does offer support for it's Enterprise product. When contacting the team at HashiCorp we have always gotten resolution to our issues. They have been very responsive in returning our calls and answering our questions as they come up. We are currently using the open source model.
Score 10 out of 10
Vetted Review
Verified User
Incentivized
Terraform is currently being used to provision our resources in the cloud. This is by far the best way to achieve full automation when migrating to the cloud and is great a working with AWS.
  • AWS Resource Provisioning: Terraform is great at provisioning resources within AWS. Sometimes, there are some tricky bits when it interacts with the AWS API, but those are typically API limitations with AWS and not reflective of Terraform's abilities.
  • State: Since using Terraform, I have not had any issue managing resource state using Terraform. It's a little tricky to set up remote state, but once implemented it's smooth sailing from then on in my experience.
  • Extensibility: Terraform has really been written as a gateway to bigger and better things. It's so easy to extend terraform with your own modules, to submit PRs with new functionality, and it integrates well with other tooling.
  • Upgrades: It's really hard to do major upgrades of terraform without breaking something. The upgrade from 11 to 12 has been pretty brutal.
  • Setting up remote state: Despite pretty good documentation, setting up remote state initially is pretty tricky and in my experience required a little of the "you have to run it this way once, then create this thing, then run it again" kind of workflows which are always a little painful
Terraform is well suited for provisioning any kind of system in my opinion. You can use it for cloud resources, but you can also use it for on-prem stuff as well (though the latter may be a little more difficult).
I love Terraform and I think it has done some great things for people that are working to automate their provisioning processes and also for those that are in the process of moving to the cloud or managing cloud resources. There are some quirks to HCL that take a little bit of getting used to and give picking up Terraform a little bit of a learning curve, thus the rating.
While I have not had any interaction with actual Hashicorp support, their documentation in great which in itself is a testament to their abilities with regard to supporting their products.
Chef, Consul
Return to navigation