What is our primary use case?
We use it to provision cloud infrastructure. We use it to provision all kinds of infrastructure from wherever we want, we Terraform to the cloud.
We provision new infrastructure, we update existing infrastructure with it, we manage our DNS records, and also deploy new applications on Kubernetes. That's the main use, but we use it for all of our infrastructures, so it has a lot of different use cases.
How has it helped my organization?
Before we used it, we were writing a lot of scripts to provision infrastructure and there weren't guidelines for anything on how to provision and how our environment will look. Now with Terraform, it's all templated and everyone in my team just uses modules that are templates, modules of Terraform, and all our environments look the same. It doesn't matter if it's dev, if it's QAs, if it's production, it looks the same. It just has different names and different types of machines. We want to pay less in the dev environments and QA but we want to have better performance in production. It's just the variable to change the type of machine that we want to use, but the template remains the same.
We save a lot of time with this solution. It also saves a lot of human errors and the whole team knows how to do the same thing.
What is most valuable?
The most valuable aspect of this solution is that it's agnostic. It can work with different cloud providers, which we may do in the future, so it benefits us. With not much change, I can deploy the same infrastructure to other cloud providers. Now we work with Azure but we can work with AWS or GCP and with minor changes we can deploy the same applications to other clouds. We can replicate the existing cases with minor changes and it's easily deployed.
What needs improvement?
It should have a more object-oriented approach like different coding languages.
What do I think about the stability of the solution?
It's really stable. We have no issues with it.
What do I think about the scalability of the solution?
There are around five or six DevOps engineers who use this solution in my company. It's used on a daily basis. We use it for maybe 20% of our infrastructure, but we intend to use it for 100% all with Terraform.
How are customer service and technical support?
I haven't needed to contact their technical support.
Which solution did I use previously and why did I switch?
We switched to Terraform because we wanted to minimize time and minimize human errors. We wanted to have alignment between all of our environments and really just development is faster.
We went with it because I had a really good experience with it in previous jobs.
How was the initial setup?
The initial setup is straightforward. There are some things you need to understand to know if you want to make more complex templates but it's pretty straightforward. It's really flexible.
Overall, the deployment takes around 15 minutes.
What's my experience with pricing, setup cost, and licensing?
It's open-source so it's free.
What other advice do I have?
My advice to someone considering this solution would be to work with the HashiCorp Best Practices of Terraform, work with Terraform modules, and write templates for everything.
I would rate Terraform a nine out of ten.