What is Terraform?
Terraform, an open
source Infrastructure as Code tool created by HashiCorp, allows programmers
to build, change and version infrastructure safely and efficiently.
Terraform is a declarative coding
tool that enables developers to use a high-level configuration language
called HashiCorp Configuration Language (HCL) to describe the desired
end-state cloud or on-premises infrastructure for running an application. It
then generates a plan for reaching that end-state and runs the plan to
provision the infrastructure.
Terraform uses a simple
syntax, provisions infrastructure across multiple cloud and on-premises data centers and safely and efficiently
reprovision infrastructure in response to configuration changes. This is why it
is currently one of the most popular infrastructure automation tools available.
If your organization plans to deploy a hybrid cloud or multicloud environment, you'll
likely want or need to get to know Terraform.
Why Infrastructure as Code (IaC)?
To better understand the advantages of
Terraform, it helps to first understand the benefits of Infrastructure as Code (IaC). IaC allows developers to code
infrastructure to make provisioning automated, faster and repeatable. It's a
key component of Agile and DevOps practices such as version
control, continuous integration and continuous deployment.
Infrastructure as code can help with
the following:
Why Terraform?
There are a few key reasons developers
choose to use Terraform over other Infrastructure as Code tools:
Terraform modules
Terraform modules are
small, reusable Terraform configurations for multiple
infrastructure resources that are used together. Terraform modules are useful
because they allow complex resources to be automated with reusable,
configurable constructs. Writing even a very simple Terraform file results in a
module. A module can call other modules called child moduleswhich
can make assembling configuration faster and more concise. Modules can also be
called multiple times, either within the same configuration or in separate
configurations.
Terraform providers
Terraform providers are
plugins that implement resource types. Providers contain all the code needed to
authenticate and connect to a service typically from a public cloud provider on
behalf of the user. You can find providers for the cloud platforms and services
you use, add them to your configuration and then use their resources to
provision infrastructure. Providers are available for nearly every major cloud
provider, SaaS offering and more, developed or supported by the Terraform
community or individual organizations. Refer to the Terraform documentation (link resides outside ibm.com)
for a detailed list.
Terraform versus Ansible
Terraform and Ansible are both Infrastructure
as Code tools, but there are a couple significant differences between the two:
Terraform versus Kubernetes
Sometimes, there confusion between
Terraform and Kubernetes and what they do. The truth is that they are not
alternatives and work effectively together.
Kubernetes is an open source container orchestration system that lets developers schedule
deployments onto nodes in a compute cluster and actively manages containerized workloads to make sure that
their state matches the users intentions.
Terraform is an Infrastructure as Code
tool with a broader reach, which lets developers automate complete
infrastructure that spans multiple public clouds and private clouds.
Terraform can automate
and manage Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), or even Software-as-a-Service (SaaS) level capabilities and build all
these resources across all those providers in parallel. You can use Terraform
to automate the provisioning of Kubernetes particularly managed Kubernetes clusters on cloud platforms and to
automate the deployment of applications into a cluster.