본문 바로가기
INFRA/Operation

Terraform 리소스에 대한 이해 - AWS 1편

by BTC_Dana 2022. 9. 19.
안녕하세요!
하씨가문의 영광입니다!
이때까지 Terraform 리소스 - Azure편을 5편까지 다루었습니다!
이번에는 AWS를 다뤄보며 Azure와의 차이점을 살펴보면 좋을 거 같아요:)
Don't have a good day, Have a great day!

목차

  1. AWS공급자
  2. VPC
  3. Subnet
  4. Route_table

1. AWS 공급자
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0"
    }
  }
}

# Configure the AWS Provider
provider "aws" {
  region = "ap-northeast-2"
}

자주 사용하는 인수들을 정리해보자면,

필수 설명 옵션 설명
access_key aws 액세스 키, AWS_ACCESS_KEY_ID 환경 변수를 사용하거나 지정된 경우 자격 증명 파일을 통해 설정할 수 있습니다. Allowed_account_ids 잘못된 계정 ID를 실수로 사용하지 않도록 허용된 AWS 계정 ID 목록입니다.
region aws 내의 지역을 선택하여 설정할 수 있습니다. assume_role IAM 역할을 받기위한 것입니다.
secret_key AWS 보안 키로, access_key와 마찬가지로 자격 증명 파일 통해 설정할 수 있습니다. profile 공유 구성 및 자격 증명 파일에 설정된 AWS 프로필 이름입니다.

 

2. VPC
resource "aws_vpc" "main" {
  cidr_block       = "10.0.0.0/16"
  instance_tenancy = "default"

  tags = {
    Name = "main"
  }
}
필수 설명 옵션 설명
cidr_block VPC에 대한 IPv4 CIDR를 입력하는 칸으로 명시적으로 설정하는 곳입니다. instance_tenancy VPC로 시작된 인스턴스에 대한 테넌시 옵션입니다.
ipv4_ipam_pool_id 이 VPC의 CIDR을 할당하는 데 사용할 IPv4 IPAM Pool의 ID 입니다.
ipv6_netmask_length IPAM pool에서 요청할 넷마스크 길이입니다.

 

3. Subnet
resource "aws_subnet" "main" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"

  tags = {
    Name = "Main"
  }
}
필수 설명 옵션 설명
vpc_id VPC의 ID를 입력하는 곳입니다. availability_zone 서브넷의 가용 영역을 지정하는 곳입니다.
cidr_block 서브넷의 IPv4 CIDR 입력하는 곳입니다. ipv6_cidr_block 서브넷의 IPv6 네트워크 범위를 입력하는 곳입니다.

 

4. Route_table
resource "aws_route_table" "example" {
  vpc_id = aws_vpc.example.id

  route {
    cidr_block = "10.0.1.0/24"
    gateway_id = aws_internet_gateway.example.id
  }

  route {
    ipv6_cidr_block        = "::/0"
    egress_only_gateway_id = aws_egress_only_internet_gateway.example.id
  }

  tags = {
    Name = "example"
  }
}

route_table

필수 설명 옵션 설명
vpc_id VPC ID 입니다. route route에 대한 인수들을 적을 공간입니다. 아래 route 표를 참고 하시면 됩니다.

route

필수 설명 옵션 설명
cidr_block 경로 CIDR 값입니다. ipv6_cidr_block IPv6 CIDR 값입니다.
vpc_peering_connection_id VPC 피어링 식별자입니다.
network_interface_id EC2 네트워크 인터페이스 식별자입니다.

 

이렇게 이번에는 Terraform 기반 AWS 리소스들을 살펴보았는데요!
공급자와 VPC, Subnet, Route_table은 자주 사용하는 리소스이기 때문에
한번 살펴보고 진행하시면 좋을 거 같아요!
오늘도 읽어주셔서 감사합니다:)

댓글