Infrastructure as code is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools.
https://en.wikipedia.org/wiki/Infrastructure_as_Code
Terraform is used to create, manage, and update infrastructure resources such as physical machines, VMs, network switches, containers, and more. Almost any infrastructure type can be represented as a resource in Terraform.
In Simple,
Terraform is a tool for
i) building,
ii) changing,
iii) versioning
your infrastructure.
-
Deploying and Maintaining Multi-Tier Applications Infrastructure (DB, WEB, LOG, Load balancer, etc)
-
Software Demos
-
Disposable Environments
-
Multi cloud Support (cloud agnostic)
Terraform can manage existing and popular service providers such as,
-
openstack
-
aws
-
google cloud
-
azure
-
kubernetes
-
DigitalOcean
-
.......etc......
https://www.terraform.io/docs/providers/index.html
a. Infrastructure is described using a high-level configuration syntax.
b. This allows versioning
c. infrastructure can be shared and re-used.
Terraform planning step will evaluate and generates the execution plan. This shows what will be output ,when you apply this stack.
Parallelizes the creation and modification of any non-dependent resources
Complex changesets can be applied to your infrastructure with minimal human interaction
Incremental changes of your existing infrastructure can be updated.
Configuration files describe to Terraform the components needed to run a single application or your entire datacenter.
As the configuration changes, Terraform is able to determine what changed and create incremental execution plans which can be applied.