Considering the advantages of cloud-computing, it is no surprise that cloud migration becomes a general tendency these days. Clouds bring forward a highly available, easily scalable and cost-effective model of IT-services. Still, clouds are special environments that require a different way of working with a set of cloud tools. Terraform is one of the most powerful instruments for orchestrating IT-infrastructures, especially cloud-based.
The utility is an open source project by HashiCorp, designed for building, deploying and managing IT-environments. Terraform generates new stacks basing on configuration files provided by users. The files contain overall topology of desired infrastructure with all its elements and their relation to each other defined in a simple, human-readable form. With your infrastructure described as code you are able to modify and reproduce it on the fly using existing code as a template. Automation of processes allows for a self-service infrastructure: just select the needed modules, fill-in different variables and have your systems automatically generated. With Terraform at hand your workflow is no longer bound to particular engineers that might not be available once you need them.
Terraform works with a variety of providers by means of plugins that connect with the services’ API. The stack of technologies is not restricted to IaaS (cloud providers) but includes also PaaS and elements of higher level, i.e. SaaS. Maintaining a multi-layer architecture, Terraform allows to connect a variety of elements of different levels within a single configuration.
The extensive functionality makes Terraform a pivot of any infrastructure, be it cloud-based or deployed on bare metal. Having your infrastructure described as code helps to structurize it, track any changes in your evolving environments and keep records of all the resources within.