VPC와 서브넷 생성하기

Chori·2024년 10월 26일
0
post-thumbnail

처음 시작하는 Infrastructure as Code: AWS & 테라폼을 수강하며 정리한 내용입니다.


Terraform으로 VPC 생성하기

Provider 생성

  • chapter8 디렉토리를 만들고 그 안에서 provider.tf 파일 작성
vim provider.tf

  • provider.tf 파일에서 리전을 서울로 지정
provider "aws" {
  region = "ap-northeast-2"
}
  • terraform init으로 초기화

VPC 생성

  • chapter8 디렉토리 안에서 vpc.tf 파일 작성
vim vpc.tf

  • VPC를 생성할 때는 aws_vpc 리소스를 사용
  • cidr_block 설정은 필수
  • 리소스에 대한 정보는 태그를 통해서 넣게 됨
  • 태그에서 VPC의 이름을 지정할 수 있음
resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  
  tags = {
    Name = "terraform-101"
  }
}
  • terraform plan으로 리소스가 어떻게 만들어질지 확인

  • terraform apply로 리소스 생성

  • 리소스가 제대로 생성되었는지 AWS 콘솔에서 확인

서브넷 생성

  • 서브넷은 특정 가용 영역(Availability Zone)에 속한 네트워크 그룹으로 VPC 안에서도 나눠진 독립적인 네트워크 구역
  • 서브넷을 생성할 때는 aws_subnet 리소스를 사용
  • VPC의 CIDR 블록 내의 범위에서 서브넷의 cidr_block을 설정하는 것은 필수
  • 서브넷을 두 개 만들 것인데 하나의 파일로 작성해도 됨
  • chapter8 디렉토리 안에서 subnet.tf 파일 작성
vim subnet.tf
  • Terraform 코드는 참조가 가능하여 VPC의 id를 가져올 수 있음
  • availability_zone은 명시하면 해당 영역에 서브넷이 만들어지고 명시하지 않으면 아무데나 만들어짐
resource "aws_subnet" "public_subnet" {
  vpc_id = aws_vpc.main.id
  cidr_block = "10.0.0.0/24"
  
  availability_zone = "ap-northeast-2a"
  
  tags = {
    Name = "terraform-101-public-subnet"
  }
}

resource "aws_subnet" "private_subnet" {
  vpc_id = aws_vpc.main.id
  cidr_block = "10.0.10.0/24"
  
  tags = {
    Name = "terraform-101-private-subnet"
  }
}
  • terraform plan 명령 실행

  • terraform apply로 리소스 생성

  • terraform state list 명령어를 입력하면 생성된 리스트를 볼 수 있음

  • AWS 콘솔에서도 생성된 서브넷을 확인할 수 있음

  • 리소스들을 하나의 파일(예: vpc.tf)에 작성해도 됨
resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  
  tags = {
    Name = "terraform-101"
  }
}

resource "aws_subnet" "public_subnet" {
  vpc_id = aws_vpc.main.id
  cidr_block = "10.0.0.0/24"
  
  availability_zone = "ap-northeast-2a"
  
  tags = {
    Name = "terraform-101-public-subnet"
  }
}

resource "aws_subnet" "private_subnet" {
  vpc_id = aws_vpc.main.id
  cidr_block = "10.0.10.0/24"
  
  tags = {
    Name = "terraform-101-private-subnet"
  }
}
profile
전부인 것처럼, 전부가 아닌 것처럼

0개의 댓글