presentations/terraform-workshop/index.md

1.8 KiB

Terraform Workshop


What is Terraform

IaC (Infrastructure as Code) framework which enables programatic definition, deployment and management of infrastructure resources for cloud and on-premises in a declarative manner. It targets all major cloud platforms (GCP, AWS, Azure, DO etc.)


Why do We Need it

  • Standardization of deployment to ensure a consistent state

    • Version control
    • Deploying an additional clone env for testing
  • Easier auditability to improve quality and security

    • Modular - reuse & ease of understanding
    • Resource Graph (dependency graph + parallel execution when possible)
    • Version control
  • Enables use of hardened deployment pipelines

  • Enables immutable infrastructure


Human-Readible Configuration Language

  • HashiCorp Configuration Language (HCL) or JSON
provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"  # Amazon Linux 2 AMI ID
  instance_type = "t2.micro"

  tags = {
    Name = "HelloWorldEC2Instance"
  }
}

output "instance_public_ip" {
  value = aws_instance.example.public_ip
}


Workflow

  • Write your configuration file

  • Use the the terraform plan action to simulate deployment of resources and assess the outcome

  • Use terraform apply to actually deploy resources


Exercise

  • Set up local credentials for your cloud platform of choice

  • Write a file that deploys an EC2 instance

  • Use terraform plan and terraform apply in order to deploy the resource

  • Remove the resource by updating your configuration file and using terraform plan and terraform apply


Extend Configuration

  • Add a VPC

  • Define security group that limits ingress and egress to port 22

  • Add SSH key(s) which may connect to the instance


Next Steps

  • ...