Overall Satisfaction with Terraform
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.
- Now that we're using Terraform we don't need dedicated IT administrators.
- Developers are able to quickly spin up resources for testing.
- Sometimes the ease of setting up environments can lead to higher expenses without realizing.
The guides for Terraform have never been unavailable, and are very responsive. I haven't needed to get support as of yet. We are running the plan and applying the steps in the CLI work as fast as the resources they are updating so it can be very fast, or very slow. This depends on what you are doing.
It is easily called from any terminal, and can integrate nicely when you want it to call system resources. I find the Terraform syntax much easier to use than CloudFormation, and much easier to mess with than navigating the web consoles of different providers. I haven't had to do any custom integrations as of yet.
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.