What is our primary use case?
We use HashiCorp Terraform for Infrastructure as Code. It automates the deployment of infrastructure within the Azure platform. Terraform can manage almost all aspects of infrastructure provisioning. If there are tasks that Terraform cannot perform directly, you can use the Azure CLI or other tools and call them from within Terraform scripts.
How has it helped my organization?
Terraform has extensive integrations across various platforms. It includes modules that enhance functionality and support for secure practices, such as Terraform Sentinel, which offers code analysis capabilities. Security logging and backend security are crucial, particularly regarding protecting sensitive information stored in the backend. Ensuring private endpoint usage is pivotal to safeguarding against potential vulnerabilities.
What is most valuable?
Terraform's strength lies in its modularity and the ability to use variables. You can organize your code within local and remote repositories, making it highly modular. This modularity allows you to call specific components as needed. Additionally, Terraform can toggle certain functionalities on or off through feature flags, a unique and powerful feature.
What needs improvement?
Terraform should monitor the backend storage more closely. You can handle it within Azure, but HashiCorp should release a dedicated tool to protect those secrets and ensure they're fully encrypted but this functionality is on its way for Terraform. They do have functionality that encrypts secrets and rotates which is great just like what Microsoft have and should be used in the wider community to safeguard public cloud systems
For how long have I used the solution?
I have been using HashiCorp Terraform for five years.
What do I think about the stability of the solution?
The product is quite stable. You may not notice the updates, but you do see frequent changes in revisions because they've stabilized the platform. They've also introduced significant new versions and providers that work hand in hand with it. I don't encounter many errors that I can't fix straightforwardly. As an engineer, you receive error messages if you misconfigure things, and it informs you about that.
I rate the solution’s stability an eight out of ten.
What do I think about the scalability of the solution?
The solution can scale to any size. It is suitable for SMEs.
I rate the solution’s scalability an eight out of ten.
Which solution did I use previously and why did I switch?
Arm templates where difficult to managed initially and took a while to manage in nested calls and nested templates
How was the initial setup?
The integration is straightforward. Simply download the binary, test it accordingly, and authenticate via Azure CLI. I've used the standard binary because it's free and widely adopted for technical infrastructure as code.
The initial setup is very straightforward. I set up a Python environment, brought in Terraform, and utilized it with YAML. Everything has to be securely done. You have to set up some pieces on the backend. It's straightforward to deploy: get the binary, set it up on the build agent, and configure the settings the way you need.
What about the implementation team?
Inhouse Initially but I have learnt form other teams and vendors as all teams structure their code differently with best practices
What's my experience with pricing, setup cost, and licensing?
We are using the free version of the solution.
Which other solutions did I evaluate?
Arm Templates and PowerShell Azure initially Pulumi (early days)
What other advice do I have?
I've been working with HashiCorp Terraform recently and have deployed environments with it.OpenAI has released GPT Terraform, which Microsoft is heavily investing in. Generic modules are available for deployment. Azure AI Portal and AI Studio are useful tools for creating models. It's straightforward to perform service training and update models for input-output data.
HashiCorp Terraform has made handling modules and variables more secure. They've integrated key vaults to ensure secrets and backend storage are protected. Accessing the backend storage could potentially leak sensitive information if not properly encrypted.
I'm using GitHub Actions and Azure DevOps. Additionally, I'm exploring an older system within the team that will be set up to support.
If the setup is built on old infrastructure, the backend of Terraform works and stores. Vagrant works differently where it doesn't need to check with the infrastructure to see what's there or updated. You get an API call for deployment.
Overall, I rate the solution as eight out of ten.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Microsoft Azure
Disclosure: I am a real user, and this review is based on my own experience and opinions.