본문 바로가기
Project/Cloud Project

IaC를 이용한 클라우드 인프라 구축 프로젝트 3

by kjy1010 2023. 12. 5.

이전 포스팅에서는 Terraform을 이용해 AWS 환경 구성 구현 을 아래와 같은 순서로 설명하는 시간을 가졌습니다.  

 

1. CentOS 8에서 Terraform 설치하기

2. aws provider 파일 생성하기

3. 새로운 Key pair 사용하기

4. 새로운 SecurityGroup 생성하기

 

이번 포스팅에서 VPC를 생성하는 부분부터 설명을 이어가보도록 하겠습니다. 

 

Terraform을 이용해 AWS 환경 구성 구현

 

5. VPC 생성하기

terraformVPC 라는 새로운 VPC 를 생성하겠습니다.

[nana@master auto-lb] $ vim vpc.tf
resource "aws_vpc" "terraformVPC" {
cidr_block = "10.0.0.0/16"
tags = {
 Name = "terraform-vpc"
 }
}

terraform-vpc의 이름을 가진 vpc가 생성됨을 확인 할 수 있음
vpc.tf파일에서 설정한 cidr block이 올바르게 생성되었음을 확인 할 수 있음

 

6. Internet Gateway 생성하기

퍼블릭 서브넷을 구축해야 하므로 주어진 VPC 에서 인터넷 엑세스를 제공해야 하기 때문에 인터넷 게이트웨이를 생성해야 합니다.

[nana@master auto-lb]$ vim igw.tf 
resource "aws_internet_gateway" "igw" {
 vpc_id = aws_vpc.terraformVPC.id
tags = {
 Name = "terraformVPC-IGW"
}
}

terraformVPC-IGW라는 이름으로  Internet Gateway가 올바르게 생성됨을 확인 할 수 있음

 

7. Routing Table 생성하기

"Public"이라는 서브넷을 공용으로 만들려면 인터넷 트래픽이 이러한 서브넷에 액세스할 수 있도록 하는 IGW 를 사용하여 경로를 만들어야 함. 이를 위해 라우팅 테이블을 생성하고 아래 리소스 블록에 표시된 것과 동일한 VPC 에 연결.

IGW를 사용하여 인터넷 경로(0.0.0.0/0)도 지정

[nana@master auto-lb]$ vim routingtable.tf
resource "aws_route_table" "internet_rt" {
 vpc_id = aws_vpc.terraformVPC.id
 route {
 cidr_block = "0.0.0.0/0"
 gateway_id = aws_internet_gateway.igw.id
 }
 tags = {
 Name = "Internet Route Table"
 }
}

 

8. Public Subet 연결하기

[nana@master auto-lb]$ vim rt-public.tf
resource "aws_route_table_association" "subnet_3a" {
 subnet_id = aws_subnet.public_3a.id
 route_table_id = aws_route_table.internet_rt.id
}
resource "aws_route_table_association" "subnet_3b" {
 subnet_id = aws_subnet.public_3b.id
 route_table_id = aws_route_table.internet_rt.id
}

 

9. AutoScailing 생성

2개의 Public Subnet에 과부하 분산을 위해 AutoScailing을 설정해주었음

 

1) subnet 내용 수정

4개의 서브넷 정의며 다른 CIDR 블록과 가용 영역을 가지며, 몇몇 블록은 map_public_ip_on_launch를 false로 설정하여 퍼블릭 IP 주소를 할당받지 않도록 설정

[nana@master auto-lb]$ vim subnet-as.tf
resource "aws_subnet" "public_3a" {
 vpc_id = aws_vpc.terraformVPC.id
 cidr_block = "10.0.1.0/24"
 availability_zone = "ap-northeast-3a"    #해당리젼으로 변경
 map_public_ip_on_launch = true
 tags = {
 Name = "Public Subnet ap-northeast-3a"
 }
}
resource "aws_subnet" "public_3b" {
 vpc_id = aws_vpc.terraformVPC.id
 cidr_block = "10.0.2.0/24"
 availability_zone = "ap-northeast-3b"  #해당리젼으로 변경
 map_public_ip_on_launch = true
 tags = {
 Name = "Public Subnet ap-northeast-3b"
 }
}
resource "aws_subnet" "private_3a" {
 vpc_id = aws_vpc.terraformVPC.id
 cidr_block = "10.0.11.0/24"
 availability_zone = "ap-northeast-3a" #해당리젼으로 변경
 map_public_ip_on_launch = false
 tags = {
 Name = "Public Subnet ap-northeast-3a"
 }
}
resource "aws_subnet" "private_3b" {
 vpc_id = aws_vpc.terraformVPC.id
 cidr_block = "10.0.12.0/24"
 availability_zone = "ap-northeast-3b" #해당리젼으로 변경
 map_public_ip_on_launch = false
 tags = {
 Name = "Public Subnet ap-northeast-3b"
 }
}

 

2) 라우팅 테이블 내용 수정

두 개의 서브넷 public_3a와 public_3b를 각각 internet_rt 라우트 테이블에 연결

[nana@master auto-lb]$ vim rt-public.tf
resource "aws_route_table_association" "subnet_3a" {
 subnet_id = aws_subnet.public_3a.id                              #해당 리젼으로 변경
 route_table_id = aws_route_table.internet_rt.id
}
resource "aws_route_table_association" "subnet_3b" {
 subnet_id = aws_subnet.public_3b.id                                  #해당 리젼으로 변경
 route_table_id = aws_route_table.internet_rt.id
}

 

auto-lb에서 작업한 내용

 

이번 포스팅에서는 아래와 같은 순서로 프로젝트 구현과정을 설명드렸습니다.

 

5. VPC 생성하기

6. Internet Gateway 생성하기

7. Routing Table 생성하기

8. Public Subet 연결하기

9. AutoScailing 생성

 

다음 포스팅에서는 launch-configuration를 설정하는 부분부터 설명드리도록 하겠습니다.