Overall Satisfaction with Terraform
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.
- I can't say that we've had any ROI yet because we're not using Terraform in production. I look forward to building a (somewhat) self-documenting infrastructure and having multiple engineers working together on it.
- AWS CloudFormation
CloudFormation is the lingua franca of AWS. You certainly can't go wrong using it, but I like the syntax and open-source nature of Terraform. That's mostly a personal preference. I have not tried any other non-Amazon tools for provisioning AWS. And, of course, the AWS tools don't work for non-Amazon clouds like Google or Azure.
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.