Overall Satisfaction with Terraform
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.
- Expressing infrastructure as code enables development patterns that are otherwise impossible -- spinning up and down ad-hoc environments, making strong use of A/B deployments, allowing all developers to have custom development environments provisioned from a central place, and permitting version control on your infrastructure. These are second-order positive impacts which all have a strong ROI in terms of reducing effort for engineers and increasing product stability.
Terraform is a large step ahead of the previous generation of infrastructure-as-code providers. I'd never go back to, e.g. Puppet or Chef, Ansible, etc. That said I think that Pulumi has a good chance of displaying it, in no small part because the Terraform language itself is a barrier to adoption. In a greenfield project I'd likely start with Pulumi, but for a while I expect Terraform to stay in the lead in terms of existing integrations.
Do you think HashiCorp Terraform delivers good value for the price?
Are you happy with HashiCorp Terraform's feature set?
Did HashiCorp Terraform live up to sales and marketing promises?
Did implementation of HashiCorp Terraform go as expected?
Would you buy HashiCorp Terraform again?
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.