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-25 of 25)
Companies can't remove reviews or game the system. Here's why
Eric Mintz | TrustRadius Reviewer
Score 5 out of 10
Vetted Review
Verified User
I use HashiCorp Terraform to create development and production assets in AWS, Digital Ocean, and Linode environments.
  • It has a rich set of plugins to with with many cloud providers
  • It tracks the state of your assets, if they exist or need to be built or changed
  • It's easy to collaborate with others by sharing the state file
  • In my opinion, simple tasks like rebooting a server are cumbersome
  • Some cloud providers may not offer full support for all features of HashiCorp Terraform
HashiCorp Terraform is very well suited for managing cloud-based assets for major cloud providers, including private cloud environments like Xen Orchestra and Proxmox for example. However some providers don't offer support for all of the features. It's not well suited at all for configuring cloud assets; in my opinion, tools like Ansible are much better suited for that.
Fraser Clark | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Incentivized
The IT team use Terraform to deploy & manage our AWS infrastructure as code.
The main reason for using Terraform is to allow us to reliably deploy AWS infrastructure and have change control/management over changes made to any infrastructure. It gives us the ability to roll out new AWS accounts very easily and quickly, using Terraform with a code repository also provides pipelining/PR approval etc.
  • Deploy infrastructure quickly & reliably
  • Repeatability thanks to use of modules
  • Dry runs thanks to the plan command
  • A new language to learn
  • Documentation, specifically examples are often complex and do not explain things very well
  • No rollback capability built in, must be done through version control
Terraform is useful in any scenario where infrastructure as code is needed, as long as their is a "provider" for what you wish to codify.
Terraform is well suited to any size of team thanks to the use of workspaces and proper use of version control will allow work on branches without upsetting anything in production.
Score 9 out of 10
Vetted Review
Verified User
We use Terraform to provision all our infrastructure in all major cloud providers (AWS,GCP,Azure), we have invested a lot to make our code repeatable and scalable as we need to support multiple accounts in each cloud provider.
  • Support all major cloud providers
  • good documentation
  • good support of providers
  • We need the tool to be easier to code logic similar like the programming languages we use
  • Creating a CICD pipeline is hard
  • having a single state file is a disadvantage, terraform runs slow if it's not running in the same network where the state file is
Terraform is the de-factor tool to provision infrastructure in an automated way, there are plenty of documentation and examples of people using the tool.
Terraform framework can be considered complicated to write efficient code, especially if you are doing some more complex use cases.
Creating efficient CICD pipelines is quiet challenge , I believe Terraform future will be replaced by Kubernetes operators.
Score 9 out of 10
Vetted Review
Verified User
Incentivized
It is used by our Cloud Services team. The business problems it addresses are automation and repeatability for things like multi environment deployments or for deploying duplicate architecture for each customer that a client may have. Our organization deals with many clients every day and some want their cloud environments to be architected in Terraform in order to easily deploy to new accounts, cloud providers, or even to other regions within an account.
  • Provides detailed examples with documentation
  • Allows public modules to be easily used for simple coding
  • Easy setup and deployment to start writing Terraform
  • Finding what resources and services are created by Terraform within a cloud environment - you can use tags but it is not as easy as it can be.
  • Provide direction on proper coding and best practices of how to setup the templates/modules.
It is great for deploying relatively static architectures to new accounts or regions in the cloud. It can easily do other architectures but the best case is resources that are defined, the parameters can change but when you know what resources/services you need it's great. Less appropriate are cases where you will be dynamically changing resources or parameters on certain resources. It also might be difficult to write modules that use Lambda and things that have their own code base. This can be done but it's not as easy as simple tasks.
Score 8 out of 10
Vetted Review
Verified User
Incentivized
Terraform is being used here for the infrastructure provisioning. Whenever we want to create any new resource on our AWS cloud or update an existing one by providing different variables, we use Terraform to do so. The whole organization uses it for the same purpose. It makes it easier for us to provision infrastructure by having that infrastructure as a code using Terraform.
  • Terraform is cloud agnostic. Just select the suitable provider for the cloud and it will do the job.
  • Templating is possible to make the Terraform templates reusable.
  • Variables can be created to make the templates generic so that it can be reused for different environments or resources.
  • Terraform doesn't have a GUI which would have made its use a lot easier.
  • There is no auto-rollback feature upon failure.
  • Tracking and visibility can be improved as using Terraform plan to find out what is already created via Terraform by using Terraform state is a bit harder.
If you want to stay cloud-agnostic and don't want to write up a lot of code for your infrastructure provisioning, then Terraform is the best tool among the other products. If you're going to use only one cloud and going to stick with it forever then you can go with that cloud's specific tool used for infrastructure provisioning.
July 12, 2021

Terraform Review

Score 8 out of 10
Vetted Review
Verified User
Terraform is currently being used to deploy infrastructure to GCP. We are mindful of the fact that some components might need other cloud providers and as Terraform is a cross-platform tool it is easier to manage the infrastructure with Terraform. It helps to iterate quickly.
  • Supports a lot of other infrastructure providers like AWS, GCP, Datadog.
  • It provides the building blocks for quite a few resources
  • Appreciate adding the Terraform graph command
  • The command Terraform plan can be more sophisticated.
  • The language can be difficult for novice users
  • It is quite difficult to do major upgrades without breaking something
Terraform is amazing when you have a cloud environment. You can spend time designing the config files but you can save a lot of time when you have to deploy the same environment multiple times. For experimental cases, Terraform can be easily used to spin up environments and easily destroy them.
Guillermo Buritica Tobon | TrustRadius Reviewer
Score 8 out of 10
Vetted Review
Verified User
Incentivized
We use Terraform across multiple clients to track and maintain infrastructure as a code, Using Terraform help us to keep the tracking of the systems and improve the time to market, We use Terraform for deploy similar environments for development, staging and productions.
  • Developed in Go is really efficient and fast
  • Use a really simple language easy to learn
  • The modular system is the state of the art in development
  • The need to keep one standard between versions
  • [I feel] The migration tool require improvement when you upgrade from one version to another
  • Import the infrastructure into the config require more work
When you need to deploy infrastructure and keep a track of your job. Use Terraform for keep your infrastructure make easy to find human errors and keep the history of changes in git or any repository if you use Terraform with your CICD tool you are in the state of the art in infrastructure management .
February 20, 2021

Terraform for Automation

Score 10 out of 10
Vetted Review
Verified User
Incentivized
Good tool that will help me to manage multiple Infra platforms from one tool for quick automation and provisions. I am currently using it for AWS, Azure, Kubernetes, Rancher, Gitlab, MySQL, SQL Server, and few more tools.
  • Automation
  • Internal dependency resolution
  • Management is easy
  • Create code while doing import.
  • More RBAC
  • Some hash to manage passwords in CLI
I am using this tool for the last 3 years and quite satisfied with the tools with capabilities and it actually helps me to provision my services quite quickly and release them at the same speed.
February 15, 2021

Terraform Review

Ben Carter | TrustRadius Reviewer
Score 9 out of 10
Vetted Review
Verified User
Incentivized
We use Terraform to deploy our infrastructure into AWS at an enterprise level. We support more than 700 developers across different brands and businesses with a small team. That means we had to establish a baseline standard for how we work, and then provide a common language and the tooling teams at the edge necessary to meet the needs of the individual brands (but without the unnecessary overhead expenses and production logjams).
  • Terraform makes cloud state management much easier than natives tools supplied with the service providers.
  • If you opt for the business edition, you can get a private module registry. This allows for best practices modules to be distributed across the company and allows for more re-usability.
  • The providers do a fantastic job staying up to date on the latest changes from the Cloud providers features updates. This makes taking advantage of the new features launched not a problem.
  • The language itself is readable and has had upgrades recently to make it more powerful for repeatable patterns.
  • The errors generated by the plan and preview commands are pretty cryptic, it can be hard for newcomers to the scripting language to understand how to address problems.
  • Access controls around workspaces is limited which makes it harder to secure reduce the scope of teams ability.
  • Analytics around user usage, applies and plans would be helpful for managemenet.
Terraform has a strong community and is well-known DSL in the DevOps space, finding talent that leverage Terraform has continued to grow. They are a good option for mid to larger organizations that want to manage their infrastructure with maturity.

If you are leveraging AWS and have a team already comfortable with their offerings like Cloud Formation, I would choose to stay or start in the AWS eco-system.
February 12, 2021

Terraform Review

Jude Allred | TrustRadius Reviewer
Score 8 out of 10
Vetted Review
Verified User
Incentivized
Terraform is used to manage the vast majority of our cloud infrastructure. We happen to primarily use AWS, however we are mindful that some components of our system may need to move to other cloud providers in the future, so the cross-platform abilities of Terraform are of particular relevance to us.
More than anything else, Terraform is the tool that we use to realize the "infrastructure as code" ideal throughout our organization.
  • Terraform has a large ecosystem of modules for a variety of providers
  • For many services, Terraform provides strong default configurations
  • Terraform is completely and totally superior to using CloudFormation directly
  • The language itself is a bit unusual and this makes it hard for new users to get onboarded into the codebase. While it's improving with later releases, basic concepts like "map an array of options into a set of configurations" or "apply this logic if a variable is specified" are possible but unnecessarily cumbersome.
  • The 'Terraform Plan' operation could be substantially more sophisticated. There are many situations where a Terraform file could never work but successfully passes the 'plan' phase only to fail during the 'apply' phase.
  • Environment migrations could be smoother. Renaming/refactoring files is a challenge because of the need to use 'Terraform mv' commands, etc.
8 because it's currently best-in-class and is completely essential to use in contrast to not expressing your infrastructure as code. That said, new contenders are nipping at its heels, and I expect stronger tools to emerge in the coming years. Hopefully the Terraform team is able to keep pace.
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.
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.
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.
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.
Erlon Sousa Pinheiro | TrustRadius Reviewer
Score 7 out of 10
Vetted Review
Verified User
Incentivized
We are using Terraform to manage our entire environment as a code. We're controlling it with VCS (in our case, Github) and performing a good automation process with Puppet and Jenkins. Terraform helps us to achieve that in a quite organized way, structured and reliable. Furthermore, we now have versioning of our environment allowing us to have more control about how things change, how that was performed, and in the case of a mistake, it is quite easy to rollback.
  • The Terraform files would be considered as documentation since our entire environment is described there.
  • Terraform will manage the state of your environment, that means, if something is not in conformity, it will try to fix keeping as close as possible of the desired state.
  • With Terraform, you can manage different cloud environments at the same configuration files. That is really useful when you need to handle with different cloud providers.
  • The way Terraform manages variables is a bit annoying. Sometimes we need to declare the same variable in more the one file. So far, this doesn't make sense for me.
  • Due to the speed, as new AWS products are released, if we want to work with something new, we need to wait for a new version with this new feature be released.
  • As with most DevOps tools, Terraform has its own DSL language and will require time to learn the product for you feel confident in its usage.
Two scenarios I can describe Terraform as an amazing option are when you have a complex (or not) cloud environment which needs to be deployed and destroyed frequently in different regions. Using Terraform you can do that using just one command line. You'll spend some time designing the config files, but you'll save a huge amount of time every time you need to deploy this same environment. Furthermore, you can create those scripts parametrized, in a way that you can give a few parameters allowing some flexibility. The second case is when you have the same environment in different cloud providers. You can manage them using just one resource.
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).
David Tanner | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Incentivized
Terraform is being used as infrastructure as code solution. We deploy it to all of our environments as part of the code that is deployed. This allows the developers to own the infrastructure, and changes can be made to our servers quickly and reproducibly. Since Terraform is an open source tool, we also get community support and don't need to maintain it ourselves.
  • Repeatable deployments between environments.
  • Changes to environments can be seen before making real changes.
  • It integrates well with each of our providers.
  • Terraform could be expanded to provide common programming functionality.
  • Sometimes the documentation isn't completely clear on what fields mean or do.
  • It would be nice to have rollback capability.
Terraform is well suited to setting up infrastructure in different cloud providers. I have used it for AWS resources for several years, and really only run into minor snags. It is not an appropriate place to store sensitive values, but it can easily call out to system resources, like Node.JS or a Linux shell.
Dhruba Jyoti Nag | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Incentivized
Terraform is used to automate resource deployment in AWS using scripts. It is used by entire IT to deploy systems in AWS. The automation has saved hundreds of thousands of dollars in time and money. Since there is no manual deployment, there are no errors during deployments and developers can deploy in production since everything is defined in scripts.
  • Terraform is a premier IAAS tool.
  • It provides modularization and planning features.
  • It is platform and language agnostic.
  • It is open source and thus has strong community support.
  • Terraform is vulnerable when it comes to error handling.
  • Often when a terraform job is terminated midway, it leads to an inconsistent state of the deployed resources which needs manual cleanup.
  • Terraform is an open source tool and has a related learning curve.
Terraform is more versatile when compared to cloud formation. It is cloud-agnostic, so unlike cloud formation, it is able to deploy resources in cloud ecosystems other than AWS. The code can be modularized, hence there is ample scope of reuse. It can also be used to deploy apps written in various languages. In short, it makes deployment to cloud a breeze.
August 15, 2017

Why I used Terraform

Murugan Mani | TrustRadius Reviewer
Score 9 out of 10
Vetted Review
Verified User
Incentivized
It's a great IaC to develop your private/public cloud environment. It almost covers major devops tools and other provisioners which help to plan the complete pipeline in one framework. It's lightweight and easy to start the basic blocks and integrate. Features like backend and iterations are great options to maximize the scale of infrastructure.
  • Orchestration provision support
  • State backend support like swift
  • Debug support
  • Local testing
  • Terraform is a well contributed open source project but support is average
  • Coverage of various tools is great where only important functionalities were covered like in Chef
  • It provides the automation from various pieces but running the same from scripts/other external inputs would be great
  • Interpolations are supported but not well enough
  • Secret management is poor and needs support on special characters
Aiman Najjar | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Incentivized
We use Terraform for our clients to implement Infrastructure as Code. Our clients are typically seeking our services to get up to speed on DevOps strategies and culture. We almost always recommend Terraform for cloud infrastructure orchestration especially since Terraform supports various cloud providers and has rich constructs for modularity and reusability.
  • Great implementation of Infrastructure as Code concept.
  • Supports various cloud providers, including AWS, Azure and OpenStack
  • Encourages good design practices
  • Collaboration is made possible by using remote backend to store state files (such as S3)
  • Product is still maturing and there are some design limitation
  • Refactoring infrastructure code can sometimes become troublesome and unnecessarily require re-creating resources (such as when renaming resources)
  • Collaboration requires proper training or could result in dangerous outcome, engineers may easily overwrite remote state file or step on each other's toes. Collaboration process needs some improvement.
Infrastructure as Code: Best suited for cloud infrastructure but could work for data center infrastructure. Terraform is good for orchestrating infrastructure, not "configuring" it, e.g. even though you can use cloud-init to provision and install packages. For advanced configuration management, you will probably need a tool like Chef or Puppet
Kyle Rockman | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Incentivized
The entire Under Armour Connected Fitness business unit leverages terraform to treat our infrastructure as code - with a UI wrapped on top of it to give federated access to all our developers.
  • Configuration as Code in a modular reusable manner.
  • The plan apply life cycle is the best, it gives structure to what can sometimes be a scary process of modifying your infrastructure - even after it has aged or hasn't been touched in years.
  • Integrating with many outside services and providers keeps us from having to hack things together.
  • Integration with Hashicorp's Vault for secret management and temporary credentials makes giving out access a breeze.
  • It's a command-line tool and as such, some users in our organization are not comfortable with that. We ended up wrapping the tool with a UI to give the less skilled users access as well as layering on top a templating system to abstract away best practices and make things far simpler to configure.
Our experience switching from Salt Stack to Terraform has been so beneficial and the uptake has been far stronger by our users than it ever was with Salt Stack. I still think Terraform could do with a usability pass to reduce the learning curve and a UX pass to facilitate use by those who do not like command-line tools.
Score 10 out of 10
Vetted Review
Verified User
Incentivized
Terraform is used by our monitoring team and I used Terraform to architect it to connect to OpenStack and spin up VMs for monitoring. The monitoring team uses it for installing/configuring monitoring software. Again Terraform's script has everything to stage the VM, connect to Chef and install/configure all the required software. Terraform addresses our on-demand provisioning issue, which in turn helps in IT flexibility to cope with business demands.
  • It helps make VM provisioning easier.
  • It helps integrate CICD software pipeline to provisioning, thereby reducing the time to quickly standup a server/service.
  • It helps make clustering of boxes easier.
  • Provisioning bare metal.
  • Replacing Chef as the automation/compliance software for enterprises.
  • Get away from that single state file dependency. If someone accidently deletes the state file or that file becomes corrupt, the entire environment state is lost and we have to rebuild the whole infrastructure.

VM provisioning

VM clustering

Automation

February 15, 2017

DevOps person

Deepshikha Gandhi | TrustRadius Reviewer
Score 8 out of 10
Vetted Review
Verified User
Incentivized
Terraform is being used by our DevOps team to manage mainly our AWS infrastructure as code. It enables us to collaborate, automate and share pieces of our cloud infrastructure amongst and across teams. Terraform enables us to maintain reproducible, shareable and version-controlled infrastructure and deployments as compared to the older methodology of owning and configuring machines by hand.
  • Ability to "plan" and "apply" configs. Plans show us what changes will take place - so it's like a no-op safe mode dry-run. Apply actually executes the changes.
  • Terraform has providers for most major infrastructure providers like AWS, VMWare, OpenStack
  • Ability to use the same code/configs to provision different environments - QA, staging and production
  • Ability to create modules and share them between services
  • Terraform uses it's own DSL called the Hashicorp Configuration Language which takes some getting used to.
  • Terraform state files store secrets in plain text which is a bad idea when you push it to version-control.
  • Multiple teammates working simultaneously on a single state file is a problem. It's easy to forget to push or pull the latest state. Also version control systems like Git don't have a way of locking a file.
If you have environments that change a lot and you need ephemeral systems on the fly to test your code releases, Terraform is the tool for you. Maintaining different environments like staging and QA before releasing to production is also easy as you can use the same code and configs for all three. Terraform also makes it easy to destroy these environments when they become obsolete.
Charles Anderson | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Incentivized
We are currently using Terraform in some early development projects and looking at it as a possible replacement for Amazon Cloud Formation. So far, this is experimental and not production. We are provisioning virtual infrastructure in AWS - i.e., we are not using any of the cross-provider facilities. That said, avoiding vendor lock-in is an appealing benefit of Terraform.
  • I find the HashiCorp Configuration Language (HCL) superior to raw JSON used by Cloud Formation.
  • Being open-source is a plus not just for "philosophical" reasons, but it also provide rapid support when new products are announced from vendors like Amazon.
  • The fact that it's free and open-source means that it's easy to start evaluating Terraform (and most of the other tools from HashiCorp) without being pressured by sales people.
  • Until recently, there haven't been any books about Terraform. Although the online documentation for Terraform is pretty good, it's often nice to have a traditional book, especially when learning. Now, there are two books on the subject.
  • Terraform is rapidly evolving. Part of that is the nature of the space - vendors are always coming up with new offerings and API. But, some days I wish the targets would stop moving for a bit.
Terraform is a great tool for building virtual infrastructures in clouds like Amazon and Google. If you are building a heterogenous infrastructure spanning multiple vendors, I don't know of any other single tool that can do that. Even in the case where you're just building AWS infrastructure, I prefer the HCL syntax of Terraform, and I dislike getting roped into using some of the Amazon tools.
December 15, 2016

Advantages of Terraform

Score 10 out of 10
Vetted Review
Verified User
Incentivized
Currently we are using terraform in our department. We are using to implement AWS stack creation with Terraform. It's easy to use compared to CFT. We are developing infrastructure with Terraform and currently deploying into AWS. In future if we want to use a different cloud it's easy to reuse this.
  • Easy to build cross cloud providers infrastructure
  • Reusable stack resources by using remote state
  • N/A
It's well suited if you are targeting to multi-cloud deployment. Terraform manages state via a json file. This file serves as the source of truth about what the actual environment contains. However, the problem is the inability of Terraform to uniquely identify resources that it creates.
Return to navigation