Lecture on Terraform

Jul 4, 2024

Lecture on Terraform

Introduction

  • Overview of Terraform and its usage
  • Comparison with Ansible
  • Terraform architecture
  • Example configuration file

What is Terraform?

  • Tool for automating and managing infrastructure
  • Open source, declarative language
  • Specifies desired end result rather than step-by-step execution
  • Used for infrastructure provisioning

Infrastructure Provisioning

  • Setting up infrastructure from scratch for applications
  • Example: Using AWS to deploy microservices and database containers

Steps in Infrastructure Setup

  1. Provisioning infrastructure
    • Create private network space
    • Deploy servers and install Docker
    • Set up security (firewalls, etc.)
  2. Deploying applications
    • Deploy Docker containers on prepared infrastructure

Role of Terraform

  • Used mainly for initial provisioning
  • Handles tasks like creating VPC, spinning up servers, setting up security, etc.
  • Ensures order of tasks is correct (dependencies)

Terraform vs. Ansible

  • Terraform: Mainly for infrastructure provisioning, newer, advanced in orchestration
  • Ansible: Mainly for configuration, more mature, used for deploying applications, installing software, etc.
  • Common practice to use both for their strengths

Managing Infrastructure with Terraform

  • Adding/removing resources
  • Reconfiguring existing infrastructure
  • Automating repetitive tasks
  • Replicating environments (e.g., development, production, staging)

Terraform Architecture

  • Core Components
    • Terraform Core: Uses configuration files and state
    • Providers: Specific to technologies (AWS, Kubernetes, etc.)
  • Configuration File
    • Declarative, defines desired state
    • Example: AWS provider, creating VPC, Kubernetes provider creating namespace

Declarative vs. Imperative

  • Declarative: Define end state, Terraform figures out execution steps
  • Imperative: Define exact steps to execute
  • Easier updates and management with declarative style

Terraform Commands

  • Refresh: Queries infrastructure provider for current state
  • Plan: Constructs a plan based on configuration file and current state
  • Apply: Executes the plan to reach desired state
  • Destroy: Removes all created resources

Summary

  • Terraform simplifies infrastructure provisioning
  • Useful for creating, managing, and replicating environments
  • Works best for infrastructure setup; combine with tools like Ansible for full lifecycle management

Conclusion

  • Subscribe for more videos on Terraform and other infrastructure as code tools