Terraform

Terraform is a tool that is used for building, changing, and versioning infrastructure safely and effectively. Terraform use configuration files and describe what componentes are needed in them. Then Terraform generates an execution plan describing what the desired state should be and then it executes and builds it. Terraform manages all this through a state file.

Terraform supports multiple service providers, such as, AWS, GCP, Azure, OpenShift and Kubernetes.

Primary Terraform Features:

  • Infrastructure as Code

    • Idenmpotent

    • High level syntax

    • Easily reusable

  • Execution Plans

    • Show the intent of the deploy

    • Can help ensure everything in the development is intentional

  • Resource graph

    • Illustrates all changes and dependencies

Some use cases for Terraform:

  • Hybrid clouds

    • Cloud agnostic

    • Allows deployments to multiple providers simultaneously

  • Multi-tier architecture

    • Allows deployment of several layers of architecture

    • Is usually able to automatically deploy in the correct order

  • Software defined networking

    • Able to deploy network architecture as wll

Terraform vs. Other Software

Terraform is a high level infrastructure orchestration tool.

  • Puppet, Chef, and other configuration management tools

    • Terraform is not intended for configuration management

    • Terraform provides "provisioners" that can call these tools to perform the configuration management work

  • CloudFormation and other infrastructure orchestration tools

    • Many other tools are vendor locked and only support one vendor

    • There are some tools that are similar to Terraform, but mostly they are not as comprehensive as Terraform

  • Boto and other lower level tools

    • Terraform is a higher level tool than tools such as Boto, which makes defining infrastructure easier

Last updated