DevOps 환경에서 인프라를 코드로 관리하는 Terraform은 AWS와 같은 클라우드 플랫폼에서 인프라를 효율적으로 배포하고 관리하는 데 매우 유용한 도구입니다. 이번 포스팅에서는 Terraform을 사용하여 AWS VPC(가상 사설 클라우드)를 단계별로 구축하는 방법을 안내하겠습니다.
1. 환경 설정
먼저 Terraform을 사용하기 위해 필요한 도구를 설치해야 합니다. Terraform은 macOS, Windows 및 Linux에서 사용할 수 있으며, 공식 웹사이트에서 다운로드할 수 있습니다.
- Terraform 설치
- AWS CLI 설치 및 설정
- 초기화
- 계획 확인
- 적용
Terraform의 최신 버전을 다운로드한 후, 설치합니다. 설치가 완료되면 다음 명령어로 설치가 잘 되었는지 확인합니다.
terraform -v
AWS CLI도 설치해주셔야 합니다. AWS CLI를 통해 Terraform이 AWS에 접근할 수 있도록 설정합니다.
aws configure
여기서 AWS Access Key, Secret Key, Default region name, Default output format을 입력합니다.
2. Terraform 프로젝트 생성
Terraform 프로젝트를 생성하기 위해 새로운 디렉터리를 만들고 이동합니다.
mkdir terraform-vpc
cd terraform-vpc
3. Terraform 구성 파일 작성
Terraform은 HCL(HashiCorp Configuration Language)이라는 언어를 사용하여 인프라를 정의합니다. 아래와 같이 main.tf라는 파일을 생성하고 VPC 구성 코드를 작성합니다.
provider "aws" {
region = "ap-northeast-2" # AWS 리전 설정
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16" # VPC CIDR 범위
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "my-vpc"
}
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24" # 서브넷 CIDR 범위
availability_zone = "ap-northeast-2a" # 가용 영역
map_public_ip_on_launch = true
tags = {
Name = "public-subnet"
}
}
resource "aws_internet_gateway" "igw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "my-internet-gateway"
}
}
resource "aws_route_table" "public" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.igw.id
}
tags = {
Name = "public-route-table"
}
}
resource "aws_route_table_association" "public" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public.id
}
4. Terraform 실행
이제 Terraform을 실행하여 AWS VPC를 생성해보겠습니다. 아래 명령어를 통해 Terraform이 정의한 인프라를 계획하고 적용합니다.
Terraform 작업 디렉터리를 초기화합니다.
terraform init
Terraform이 생성할 리소스의 계획을 확인합니다.
terraform plan
terraform apply
이 명령을 실행하면 생성할 리소스에 대한 확인 메시지가 표시됩니다. yes를 입력하여 진행합니다.
5. VPC 및 리소스 확인
AWS Management Console에 로그인하여 VPC 대시보드에서 생성된 VPC 및 서브넷, 인터넷 게이트웨이를 확인할 수 있습니다.
6. 리소스 정리
테스트가 끝나면 생성한 리소스를 정리해야 합니다. 다음 명령어로 Terraform이 관리하는 모든 리소스를 삭제합니다.
terraform destroy
명령어 실행 후 확인 메시지가 표시되면 yes를 입력하여 리소스를 삭제합니다.
마무리
이번 포스팅에서는 Terraform을 사용하여 AWS VPC 네트워크를 단계별로 구축하는 방법에 대해 알아보았습니다. Terraform은 인프라 관리의 효율성을 높일 수 있는 강력한 도구이며, 이를 통해 코드로 인프라를 반복적으로 구성하고 관리할 수 있습니다. 다양한 AWS 리소스와 결합하여 더욱 복잡한 인프라도 쉽게 관리할 수 있는 Terraform의 매력을 느껴보시길 바랍니다.