Terraform is a provisioning tool that seems to be the biggest player in the “infrastructure as code” arena. If you’re not already familiar with it, the utilization is fairly straightforward and the benefits quickly become apparent. You take a text file, use it to describe your infrastructure down to the finest detail, then run “terraform apply” and it just happens. Then, if you need to change your infrastructure, or revoke any unwanted changes, Terraform can be updated or rolled back to a known state.
Terraform treats all deployed infrastructure as a state, with any subsequent changes to any particular piece being an update to the state. This means you can keep the state and share it, so others know what your stack should look like, and also means you can see what would change if you modify part of your configuration before you actually decide to do it. The Terraform configuration files are written in HCL (Hashicorp Configuration Language), which some consider easier to read than JSON or YAML.
Since Terraform isn’t affiliated with any particular cloud, it can work together with AWS, Azure, VMware, Oracle, and much more - making it much more suited for multi-cloud and hybrid-cloud environments.