1. 사전 설정
2. Provider 선택
3. Key-Pair 생성
4. VPC 생성
5. Subnet 생성
※ Terraform AWS Document
https://registry.terraform.io/providers/hashicorp/aws/latest/docs
Terraform Registry
registry.terraform.io
1. 사전 설정
2. Provider 선택
- terraform provider를 선택하는 01_main.tf 파일 생성 및 입력
- 터미널에서 terraform init 명령어로 AWS에서 사용해야 할 특정 파일들을 HashiCorp로부터 받아옴
# 01_main.tf
provider "aws" { # terraform provider 지정
region = "ap-northeast-2" # region 지정
}
3. Key-Pair 생성
- Key 값을 직접 하드코딩해도 생성이 가능하나 보안상 좋지 않으므로 Pubilc Key file을 지정하여 생성
# 00_key.tf
resource "aws_key_pair" "hjjeong_key" {
key_name = "hjjeong1-key" # Key Pair 이름 지정
# public_key = "PUBLIC_KEY" # Public Key Hard Coding
public_key = file("../../users/user/.ssh/hjjeong.pub") # Public Key file link
}
※ terraform plan/apply 명령은 VSCode의 터미널에서도 실행 가능하지만 CMD에서 실행하는 것이 내용을 보기 좋음
※ 이후 terraform plan/apply 명령어 캡쳐는 생략
4. VPC 생성
- cidr_block: VPC Network 대역 설정
- enable_dns_hostnames: VPC에서 DNS 호스트 활성화
- tags: 생성되는 resource 이름 지정
- terraform plan 명령어로 resource의 실행 내용을 미리 확인할 수 있음
- terraform apply 명령어로 resource를 실행할 수 있음
· --auto-approve 옵션을 추가하면 'yes' 입력 생략 가능
# 02_vpc.tf
resource "aws_vpc" "hjjeong_vpc" {
cidr_block = "10.0.0.0/16" # Network 대역 지정
enable_dns_hostnames = true # DNS hostname 활성화
tags = {
"Name" = "hjjeong-vpc" # 이름 지정
}
}
5. Subnet 생성
- vpc_id: VPC 지정
- cidr_block: Network 대역 지정
- availability_zone: 가용 영역 지정
# 03_subnet.tf
resource "aws_subnet" "hjjeong_weba" {
vpc_id = aws_vpc.hjjeong_vpc.id # VPC 지정
cidr_block = "10.0.0.0/24" # Network 대역 지정
availability_zone = "ap-northeast-2a" # 가용 영역 지정
tags = {
"Name" = "hjjeong-weba" # 이름 지정
}
}
resource "aws_subnet" "hjjeong_webc" {
vpc_id = aws_vpc.hjjeong_vpc.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-2c"
tags = {
"Name" = "hjjeong-webc"
}
}
resource "aws_subnet" "hjjeong_wasa" {
vpc_id = aws_vpc.hjjeong_vpc.id
cidr_block = "10.0.2.0/24"
availability_zone = "ap-northeast-2a"
tags = {
"Name" = "hjjeong-wasa"
}
}
resource "aws_subnet" "hjjeong_wasc" {
vpc_id = aws_vpc.hjjeong_vpc.id
cidr_block = "10.0.3.0/24"
availability_zone = "ap-northeast-2c"
tags = {
"Name" = "hjjeong-wasc"
}
}
resource "aws_subnet" "hjjeong_dba" {
vpc_id = aws_vpc.hjjeong_vpc.id
cidr_block = "10.0.4.0/24"
availability_zone = "ap-northeast-2a"
tags = {
"Name" = "hjjeong-dba"
}
}
resource "aws_subnet" "hjjeong_dbc" {
vpc_id = aws_vpc.hjjeong_vpc.id
cidr_block = "10.0.5.0/24"
availability_zone = "ap-northeast-2c"
tags = {
"Name" = "hjjeong-dbc"
}
}
※ 생성한 Resource는 terraform destroy 명령어로 삭제 가능
'Terraform' 카테고리의 다른 글
118_Terraform: Auto Scaling 및 RDS 생성 (0) | 2022.08.01 |
---|---|
117_Terraform: Load Balancer 생성 (0) | 2022.07.28 |
116_Terraform: AWS 보안그룹 및 EC2 인스턴스 생성 (0) | 2022.07.27 |
115_Terraform: AWS VPC 생성② (0) | 2022.07.27 |
113_Terraform: 기본 사항 (0) | 2022.07.26 |