AWS Virtual Private Cloud (VPC)를 설정해야 한다면 AWS Management Console을 통해 할 수 있지만, 자동화하면 훨씬 더 즐거운 경험이 됩니다! DevOps 시나리오에서는 Terraform과 같은 도구를 사용하여 AWS 서비스를 구축하는 것이 클라우드 리소스 프로비저닝에 대한 확장 가능하고 자동화된 접근 방식입니다.
이 튜토리얼에서는 Terraform 구성을 작성하고 실행하여 처음부터 Terraform VPC를 만드는 방법을 배울 것입니다!
전제 조건
이 게시물은 단계별 튜토리얼이 될 것입니다. 따라오려면 다음 사항이 준비되어 있는지 확인하십시오:
- Terraform – 이 튜토리얼은 Terraform v0.14.9를 사용하며 Ubuntu 18.04.5 LTS에서 실행되지만, Terraform이 설치된 모든 운영 체제에서 작동해야 합니다.
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should have one that understands the HCL Terraform language. Try out Visual Studio (VS) Code.
AWS VPC 이해
AWS 클라우드에는 컴퓨팅, 스토리지, 네트워킹 등 다양한 서비스가 수십 개 있습니다. 이러한 각 서비스는 온프레미스 데이터 센터의 서비스와 마찬가지로 서로 통신할 수 있습니다. 그러나 이러한 각 서비스는 서로 독립적이며, 다른 서비스와 별도로 격리되지 않을 수 있습니다. AWS VPC는 이를 변경합니다.
AWS VPC는 단일 네트워크로, 단일 격리된 네트워크 내에서 AWS 서비스를 시작할 수 있게 해줍니다. 기술적으로 AWS VPC는 데이터 센터를 소유하는 것과 거의 동일하지만, 확장성, 장애 허용성, 무제한 스토리지 등 추가 혜택이 내장되어 있습니다.

AWS VPC는 지역에 제한됩니다. 한 VPC를 여러 지역에 걸쳐 사용할 수 없으며, 지역당 최대 다섯 개의 VPC를 지원합니다.
AWS VPC에 대한 Terraform 구성 작성하기
충분한 이론, 이제 구성 작성에 들어가겠습니다!
1. 먼저 Terraform 구성 파일을 저장할 폴더를 생성하세요. 이 튜토리얼에서는 홈 디렉토리에 terraform-vpc-demo라는 폴더를 생성합니다.
2. 좋아하는 코드 편집기를 열고 다음 구성을 복사하여 이미 생성된 파일로 저장하고 main.tf로 이름을 지정하세요. 이 파일은 각 리소스에 대한 정보가 포함되어 있습니다. ~/terraform-vpc-demo 디렉토리에 저장하세요.
main.tf 파일에는 프로비저닝해야 하는 모든 리소스가 포함되어 있습니다.
Terraform은 여러 가지 유형의 구성 파일을 사용합니다. 각 파일은 일반 텍스트 형식 또는 JSON 형식으로 작성됩니다. 파일의 이름 규칙은 .tf 또는 .tfjson 형식 중 하나입니다.
아래는 Terraform 구성입니다:
- VPC를 생성합니다
- 인터넷 게이트웨이를 생성하고 VPC에 연결하여 VPC 내에서 외부 세계로의 트래픽이 도달할 수 있게 합니다
- 공용 및 사설 서브넷을 생성합니다
서브넷은 네트워크 내의 네트워크입니다. 네트워크 트래픽 흐름이 더 효율적이고 더 작고 관리하기 쉬운 IP 주소 ‘덩어리’를 제공하기 위해 설계되었습니다
- 공용 및 사설 서브넷에 대한 경로 테이블을 생성하고 테이블을 두 서브넷 모두와 연결합니다
- NAT 게이트웨이를 생성하여 외부 라우터 가능 IP 주소가 각 리소스에 할당되지 않아도 사설 서브넷이 인터넷에 연결될 수 있게 합니다.
3. 이제 ~/terraform-vpc-demo 디렉토리 안에 새 파일을 만들고 vars.tf라고 이름을 지으세요. 그리고 아래 내용을 붙여넣으세요.
Vars.tf는 구성 파일이 참조하는 모든 변수를 포함하는 Terraform 변수 파일입니다.
구성 파일에서 변수 참조를 확인할 수 있습니다:
var.region
var.main_vpc_cidr
var.public_subnets
var.private_subnets
모든 구성 값을 단일 구성 파일에 포함하는 것이 가능합니다. 개발자 및 관리자가 명확하게 보고 쉽게 유지하려면 중요한 것은 작업을 분할하는 것입니다.
4. ~/terraform-vpc-demo 디렉터리 내에 하나 더 파일을 생성하고 다음 코드를 붙여넣은 후 provider.tf로 이름을 지정하여 AWS 프로바이더를 정의하십시오. 이 튜토리얼에서는 us-east-2
지역에 리소스를 생성합니다.
프로바이더 파일은 AWS, Oracle 또는 Azure 등의 프로바이더를 정의하여 Terraform이 올바른 클라우드 서비스에 연결할 수 있도록 합니다.
provider "aws" { region = "us-east-2" }
5. 마지막으로 ~/terraform-vpc-demo 디렉터리 내에 하나 더 파일을 생성하고 terraform.tfvars로 이름을 지정한 다음 아래 코드를 붙여넣으십시오. 이 변수 파일에는 Terraform이 구성 파일 내의 변수 참조를 대체하는 데 사용할 값이 포함되어 있습니다.
이제 즐겨 사용하는 터미널(Bash인 경우)을 열고 tree
명령을 실행하여 폴더에 필요한 모든 파일이 포함되어 있는지 확인하십시오.

AWS VPC 생성을 위해 Terraform 실행 중
이제 Terraform 구성 파일과 변수 파일이 준비되었으므로 Terraform을 초기화하고 VPC를 생성할 시간입니다! Terraform 구성을 제공하려면 일반적으로 세 단계 접근 방식을 사용합니다 terraform init → terraform plan → terraform apply. 이제 각 단계를 하나씩 살펴보겠습니다.
1. 터미널을 열고 ~\terraform-vpc-demo 디렉토리로 이동합니다.
2. 동일한 디렉토리에서 terraform init
명령을 실행합니다. terraform init
명령은 리소스와 작업하기 위해 필요한 플러그인 및 프로바이더를 초기화합니다.
모두 잘 진행된다면 아래와 같이 출력에 Terraform has been successfully initialized
메시지가 표시됩니다.

3. 이제 terraform plan
명령을 실행합니다. 이것은 선택 사항이지만 구성 구문이 올바른지 확인하고 인프라에 어떤 리소스가 제공될지에 대한 개요를 제공하기 위해 권장되는 작업입니다. terraform plan
만약 성공하면 출력에서 “계획: "X" 추가, "Y" 변경, 또는 "Z" 파괴
“와 같은 메시지가 표시됩니다. 이는 명령이 성공적으로 수행되었음을 나타냅니다. 또한 Terraform이 생성하려는 모든 AWS 리소스도 볼 수 있을 것입니다.

4. 그 다음에는 실제로 AWS VPC 및 리소스를 프로비저닝하도록 Terraform에 알려주십시오. terraform apply
를 호출하면 Terraform이 구성 (main.tf) 및 기타 파일을 읽어 구성을 컴파일합니다. 그런 다음 해당 구성을 AWS로 보내 VPC 및 기타 구성 요소를 빌드하는 지침으로 사용합니다.

Terraform 출력에서 정의된 ID에 주목하십시오. 이 ID는 다음 섹션에서 생성된 리소스를 대응시키는 데 필요합니다.
Terraform 명령이 성공적으로 실행되었으므로 AWS 관리 콘솔로 전환하여 VPC 및 구성 요소가 성공적으로 생성되었는지 확인해 봅시다.
AWS Terraform VPC 확인
이제 Terraform으로 VPC를 만들었을 것입니다. AWS 관리 콘솔에서 VPC를 수동으로 확인하여 확인해 봅시다.
1. 좋아하는 웹 브라우저를 열고 AWS 관리 콘솔로 이동하여 로그인합니다.
2. 콘솔에서 맨 위에 있는 검색 창을 클릭하고 ‘vpc’를 검색한 다음 VPC 메뉴 항목을 클릭합니다.

3. VPC 페이지에 있으면 당신의 VPCs를 클릭합니다. 여기에서 Terraform이 이전에 반환한 것과 동일한 ID로 생성된 VPC를 확인해야 합니다.

4. 테라폼이 VPC 자원뿐만 아니라 VPC에 필요한 모든 자원을 생성했기 때문에 이 페이지에서 각 자원을 찾아야 합니다.




모든 구성 요소가 성공적으로 생성된 상태에서 이 VPC는 테라폼을 사용하여 사용할 준비가 되었습니다!
결론
이 튜토리얼에서는 Terraform을 사용하여 AWS VPC 및 해당 구성 요소를 배포하는 방법을 배웠습니다.
Terraform을 사용하여 Amazon Virtual Private Cloud를 구축하면 자원을 빠르고 쉽게 예측 가능하게 생성할 수 있습니다. 이제 이 지식을 활용하여 다른 AWS 서비스를 사용하고 강력한 서비스를 구축할 준비가 되었습니다.