Overall Satisfaction with Terraform
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.
- Our deployments are more reliable. This way we avoid having unexpected outages due to misconfiguration performed manually.
- Agility. While doing this using our previous way, we used to spend hours to deploy a new environment. With Terraform it is just a few minutes.
- Better control! We can track every single change in our environment by our control versioning system.