๐Ÿ“‘
docs
  • Initial page
  • Golang Shippets
    • PII Data Check
  • Docker
    • Concepts
  • NGINX Web Server Deep Dive
    • What's NGINX
  • AWS CloudFormation
    • Introduction
    • Infrastructure as Code
    • What's CloudFormation?
    • CloudFormation - Lab #1
    • CloudFormation Concepts
  • Kubernetes
    • Introduction
    • Untitled
  • Jenkins Engineer - (CJE)
    • Topics
  • Microsoft Azure - AZ-104
    • ๐Ÿ““Manage Azure AD Users
  • Terraform - Certified Associate
  • ๐Ÿฆ What is Terraform?
  • ๐ŸงฌInfrastructure as Code
  • ๐Ÿ“ฎGetting Started
    • ๐ŸงซBuild Infrastructure
    • ๐ŸงชChange Infrastructure
    • ๐ŸงบDefine Input Variables
    • ๐ŸšฐQuery Data with Outputs
    • ๐Ÿ’พStore Remote State
  • ๐ŸŽƒConfiguration Language
    • ๐ŸงผTerraform Resources
    • ๐Ÿ’ŠTerraform Variables
  • ๐Ÿ”ŽOverview
    • ๐Ÿ—ƒ๏ธConfiguration Syntax
  • ๐ŸŽฒCheat Sheet
  • GCP - Data Engineer
    • Overview
    • Big Data and Machine Learning Fundamentals
Powered by GitBook
On this page
  • How does Terraform work?
  • Why Terraform?
  • Track your infrastructure
  • Automate changes
  • Standardize configurations

Was this helpful?

Edit on GitHub

What is Terraform?

PreviousManage Azure AD UsersNextInfrastructure as Code

Last updated 1 year ago

Was this helpful?

HashiCorp Terraform is an infrastructure as code tool that lets you define both cloud and on-prem resources in human-readable configuration files that you can version, reuse, and share.

You can then use a consistent workflow to provision and manage all of your infrastructure throughout its lifecycle. Terraform can manage low-level components like compute, storage, and networking resources, as well as high-level components like DNS entries and SaaS features.

How does Terraform work?

Terraform creates and manages resources on cloud platforms and other services through their application programming interfaces (APIs). Providers enable Terraform to work with virtually any platform or service with an accessible API.

HashiCorp and the Terraform community have already written thousands of providers to manage many different types of resources and services.

  • Write: You define resources, which may be across multiple cloud providers and services. For example, you might create a configuration to deploy an application on virtual machines in a Virtual Private Cloud (VPC) network with security groups and a load balancer.

  • Plan: Terraform creates an execution plan describing the infrastructure it will create, update, or destroy based on the existing infrastructure and your configuration.

  • Apply: On approval, Terraform performs the proposed operations in the correct order, respecting any resource dependencies. For example, if you update the properties of a VPC and change the number of virtual machines in that VPC, Terraform will recreate the VPC before scaling the virtual machines.

Why Terraform?

Track your infrastructure

Automate changes

Terraform configuration files are declarative, meaning that they describe the end state of your infrastructure. You do not need to write step-by-step instructions to create resources because Terraform handles the underlying logic. Terraform builds a resource graph to determine resource dependencies and creates or modifies non-dependent resources in parallel. This allows Terraform to provision resources efficiently.

Standardize configurations

You can find all publicly available providers on the , including Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog, and many more. The core Terraform workflow consists of three stages:

Terraform generates a plan and prompts you for your approval before modifying your infrastructure. It also keeps track of your real infrastructure in a , which acts as a source of truth for your environment. Terraform uses the state file to determine the changes to make to your infrastructure so that it will match your configuration.

Terraform supports reusable configuration components called that define configurable collections of infrastructure, saving time and encouraging best practices. You can use publicly available modules from the Terraform Registry, or write your own.

๐Ÿฆ 
Terraform Registry
state file
modules