Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Configuration files describe to Terraform the components needed to run a single application or entire datacenter. Terraform generates an execution plan describing what it will do to reach the desired state, 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, Infrastructure as Code etc. Infrastructure is described using a high-level configuration syntax. This allows a blueprint of the data center to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.
Terraform also generates an execution plan. The execution plan shows what Terraform will do when applied. Terraform builds a graph of all 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. Complex changesets can be applied to infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, Terraform will change, avoiding many possible human errors.
Enables openness in cloud infrastructure leveraging common functionality/code between cloud sources, making it easy for migration/integration from cloud sources
Example Use Cases
Louisville Metro Migration from AWS to Azure and Google Cloud