Terraform은 HashiCorp에서 만든 인프라 프로비저닝 도구입니다. Terraform을 사용하면 코드로 인프라를 관리할 수 있어요. 이번 시간에는 IaC(Infrastructure as Code)를 구현할 수 있는 Terraform에 대해 알아보겠습니다.

공부할 내용 📚

1. Terraform

Terraform을 사용하면 코드로 인프라를 관리할 수 있어요. Terraform은 다양한 클라우드 서비스를 지원하고, 다양한 리소스를 관리할 수 있습니다.

  • IaC(Infrastructure as Code)란 무엇인지 알아봐요.
  • Terraform이 어떤 도구인지 알아봐요.
  • Terraform의 주요 용어를 알아봐요. (Provider, Resource, State)
  • Terraform의 주요 명령어를 알아봐요. (init, plan, apply, destroy)

참고 자료

2. HCL 문법

Terraform은 HCL(HashiCorp Configuration Language)이라는 독자적인 언어를 사용해요. HCL은 JSON과 비슷한 문법을 가지고 있어요.

  • HCL의 기본 문법을 알아봐요. (Block, Argument, Expression)
  • HCL의 주요 함수를 간략하게 알아봐요. (for_each, lookup, file, templatefile)

참고 자료

프로젝트 실습 🎈

그동안 AWS에 구성한 인프라를 Terraform으로 관리해봐요. 다만 일주일 안에 전부 Terraform으로 옮기기엔 양이 너무 많아서 CloudFront와 S3만 Terraform으로 옮기는 걸로 해요.

flowchart LR
  subgraph AWS
    subgraph ECS
      ALB --> Node.js
    end
    CloudFront -- /api/* --> ALB
    CloudFront -- /* --> S3
    style CloudFront fill:#ffaa90
    style S3 fill:#ffaa90
  end
  Client -- http://[domain-name] --> CloudFront

AWS CLI를 설치하세요.

  • 지난 주차 내용을 참고해주세요.
  • aws s3 ls 명령어가 잘 실행되는지 확인해주세요.

Terraform을 설치하세요.

  • Terraform 공식 사이트에서 Terraform을 다운받아 설치하세요.
  • VSCode에 “HashiCorp Terraform” 확장 프로그램을 설치하세요.

AWS Provider로 S3를 구성하세요.

AWS Provider 공식 문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs

  • 공식 문서 예시처럼 파일을 만들어주세요. (예: main.tf) Region은 ap-northeast-2로 설정하세요.
  • terraform init 명령어로 AWS Provider를 설치하세요.
  • terraform plan 명령어로 AWS에 적용할 내용을 확인하세요.
  • terraform apply 명령어로 AWS에 적용하세요.
  • AWS에 VPC가 잘 생성되었는지 확인하세요. VPC Console 링크
  • terraform destroy 명령어로 AWS에 생성한 리소스를 삭제하세요.

1️⃣ S3 Bucket을 생성하세요.

aws_s3_bucket 문서를 참고해서 S3 Bucket을 생성하세요.

2️⃣ S3에 파일을 업로드하세요.

aws_s3_object 문서를 참고해서 S3에 파일을 업로드하세요.

  • 5주차 실습의 HTML, CSS, JS 파일을 각각 올려주세요.
  • content_type을 text/html, text/css, application/javascript로 설정해주세요.
  • etag를 설정해주세요. 그래야 파일 내용이 변경됐을 때 다시 업로드할 수 있어요.

3️⃣ S3 website를 구성하세요.

aws_s3_bucket_website_configuration 문서를 참고해서 S3 website를 구성하세요.

4️⃣ CloudFront를 생성하세요.

aws_cloudfront_distribution 문서를 참고해서 CloudFront를 생성하세요.

  • 생성에 시간이 좀 걸릴 수 있어요.
  • S3 Bucket을 Origin으로 설정해주세요.
  • 지난 주차 실습에서 만든 ALB를 data source로 가져와 Origin으로 설정해주세요. aws_lb 문서
  • default_cache_behavior에 S3를, ordered_cache_behavior에 ALB를 추가해주세요.
  • CloudFront 접속이 잘 되는지 확인해보세요.