Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. It can manage existing and popular service providers as well as custom in-house solutions. Terraform generates an execution plan describing what it will do to reach the desired state, and then executes it to build the described infrastructure.
Following are the key features of Terraform:
● Infrastructure as Code
● Execution Plans
● Resource Graph
● Change Automation
Infrastructure is described using a high-level configuration syntax. It allows a blueprint of the datacenter to be versioned and treated as any other code. Additionally, infrastructure can be shared and re-used.
Terraform has a 'planning' step where it generates an execution plan. The execution plan shows what Terraform will do when the call apply. This will avoid any surprises when Terraform manipulates infrastructure.
Terraform builds a graph of all the 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 the infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, it can be known exactly what Terraform will change and in what order, avoiding many possible human errors.
Yes, Terraform can be used for on-prem infrastructure. There are many providers which are available to be selected.
Yes, callbacks can be used on Azure with terraforming with the help of the Azure Event Hubs.
Following are the version control supported by Terraform:
● GitHub
● GitLab CE
● GitLab EE
● Bucket cloud
Yes, there is a way to lock it. if terraform module registry is being used as a source, then the 'version' attribute can be used in the module in a configuration file of Terraform.
Yes. Gtk themes are efficiently supported by the 0.3.1 version of terraforming.