Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular cloud service providers as well as custom in-house solutions.
Terraform generates an execution plan describing what it will do, and then executes it to build the described infrastructure. As the configuration changes, Terraform is able to determine what changed and create incremental execution plans which can be applied.
The infrastructure Terraform can manage includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc.
IAC : Define infrastructure as code to increase operator productivity and transparency. You can save terraform configuration on software version control (git, hg etc) and have it reviewed.
Dry-Run : Terraform provides an elegant user experience for operators to safely and predictably make changes to infrastructure. Basically, You can perform dry-runs before making any actual changes.
Reusability : Terraform lets operators easily use the same configurations in multiple places to reduce mistakes and save time. You can use it for environment parity i.e use the same Terraform configuration to provision identical staging, QA, and production environments.
Resource Graph : Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds infrastructure as efficiently as possible, and operators get insight into dependencies in their infrastructure.
Change Automation : Complex changesets can be applied to your infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors.