Terraform is being used here for the infrastructure provisioning. Whenever we want to create any new resource on our AWS cloud or update an existing one by providing different variables, we use Terraform to do so. The whole organization uses it for the same purpose. It makes it easier for us to provision infrastructure by having that infrastructure as a code using Terraform.
- Terraform is cloud agnostic. Just select the suitable provider for the cloud and it will do the job.
- Templating is possible to make the Terraform templates reusable.
- Variables can be created to make the templates generic so that it can be reused for different environments or resources.
- Terraform doesn't have a GUI which would have made its use a lot easier.
- There is no auto-rollback feature upon failure.
- Tracking and visibility can be improved as using Terraform plan to find out what is already created via Terraform by using Terraform state is a bit harder.
If you want to stay cloud-agnostic and don't want to write up a lot of code for your infrastructure provisioning, then Terraform is the best tool among the other products. If you're going to use only one cloud and going to stick with it forever then you can go with that cloud's specific tool used for infrastructure provisioning.