- 4. Terraform(테라폼) - 실습2023년 03월 30일 14시 42분 56초에 업로드 된 글입니다.작성자: 각수짱728x90반응형SMALL
EC2 생성
테라폼 파일(.tf) 작성
# AWS 프로바이더 설정 provider "aws" { region = "ap-northeast-2" # AWS 리전 설정 (예: 아시아태평양 서울) } # 리소스 생성: EC2 인스턴스 resource "aws_instance" "app_server" { ami = "ami-068a0feb96796b48d" # 사용할 Amazon Machine Image ID 설정 instance_type = "t2.micro" # 인스턴스 유형 설정 (예: t2.micro) # 인스턴스에 할당할 태그 설정 tags = { Name = "ExampleAppServerInstance" # 인스턴스 이름 설정 } }
초기화
terrraform init
코드 검증
terraform plan
코드 순서대로 작동을 확인
+ : 설치or추가
- : 삭제코드 실행
terraform apply
실행 확인차 문장이 나옴
yes 입력ec2 인스턴스 접속 시 생성 확인
멱등성이 제공되기에 같은 코드를 다시 실행해도 새로운 인스턴스가 생성되진 않음.
삭제
terraform destroy
실행 확인 질문
yesaws ec2 인스턴스로 들어가 종료된 것을 확인.
네트워크 설정
vpc 생성
# AWS 프로바이더 설정 (아시아 태평양 서북부 리전) provider "aws" { region = "ap-northeast-2" } # 리소스 타입 (aws_vpc)과 사용자 지정 이름 (terraform-vpc)을 사용하여 VPC 생성 resource "aws_vpc" "terraform-vpc" { # VPC의 IP 주소 범위를 CIDR 표기법으로 설정 (200.200.0.0/16) cidr_block = "200.200.0.0/16" # VPC 내에서 DNS 호스트 이름 사용 활성화 enable_dns_hostnames = true # VPC에 이름 태그 설정 (태그 이름: Name, 값: terraform-vpc) tags = { Name = "terraform-vpc" } }
실행
terraform apply
AWS VPC에서 확인
서브넷 생성
# 리소스 타입 (aws_subnet)과 사용자 지정 이름 (terraform-vpc-subnet1)을 사용하여 서브넷 생성 resource "aws_subnet" "terraform-vpc-subnet1" { # 생성한 VPC의 ID를 사용하여 서브넷 연결 vpc_id = aws_vpc.terraform-vpc.id # 서브넷의 IP 주소 범위를 CIDR 표기법으로 설정 (200.200.10.0/24) cidr_block = "200.200.10.0/24" # 서브넷이 위치할 가용 영역 설정 (ap-northeast-2a) availability_zone = "ap-northeast-2a" # 인스턴스 시작 시 퍼블릭 IP 주소 할당 활성화 map_public_ip_on_launch = true # 서브넷에 이름 태그 설정 (태그 이름: Name, 값: terraform-vpc-subnet1) tags = { Name = "terraform-vpc-subnet1" } } # 리소스 타입 (aws_subnet)과 사용자 지정 이름 (terraform-vpc-subnet2)을 사용하여 서브넷 생성 resource "aws_subnet" "terraform-vpc-subnet2" { # 생성한 VPC의 ID를 사용하여 서브넷 연결 vpc_id = aws_vpc.terraform-vpc.id # 서브넷의 IP 주소 범위를 CIDR 표기법으로 설정 (200.200.20.0/24) cidr_block = "200.200.20.0/24" # 서브넷이 위치할 가용 영역 설정 (ap-northeast-2b) availability_zone = "ap-northeast-2b" # 인스턴스 시작 시 퍼블릭 IP 주소 할당 활성화 map_public_ip_on_launch = true # 서브넷에 이름 태그 설정 (태그 이름: Name, 값: terraform-vpc-subnet2) tags = { Name = "terraform-vpc-subnet2" } } # 리소스 타입 (aws_subnet)과 사용자 지정 이름 (terraform-vpc-subnet3)을 사용하여 서브넷 생성 resource "aws_subnet" "terraform-vpc-subnet3" { # 생성한 VPC의 ID를 사용하여 서브넷 연결 vpc_id = aws_vpc.terraform-vpc.id # 서브넷의 IP 주소 범위를 CIDR 표기법으로 설정 (200.200.30.0/24) cidr_block = "200.200.30.0/24" # 서브넷이 위치할 가용 영역 설정 (ap-northeast-2c) availability_zone = "ap-northeast-2c" # 인스턴스 시작 시 퍼블릭 IP 주소 할당 활성화 map_public_ip_on_launch = true # 서브넷에 이름 태그 설정 (태그 이름: Name, 값: terraform-vpc-subnet3) tags = { Name = "terraform-vpc-subnet3" } } # 리소스 타입 (aws_subnet)과 사용자 지정 이름 (terraform-vpc-subnet4)을 사용하여 서브넷 생성 resource "aws_subnet" "terraform-vpc-subnet4" { # 생성한 VPC의 ID를 사용하여 서브넷 연결 vpc_id = aws_vpc.terraform-vpc.id # 서브넷의 IP 주소 범위를 CIDR 표기법으로 설정 (200.200.40.0/24) cidr_block = "200.200.40.0/24" # 서브넷이 위치할 가용 영역 설정 (ap-northeast-2d) availability_zone = "ap-northeast-2d" # 인스턴스 시작 시 퍼블릭 IP 주소 할당 활성화 map_public_ip_on_launch = true # 서브넷에 이름 태그 설정 (태그 이름: Name, 값: terraform-vpc-subnet4) tags = { Name = "terraform-vpc-subnet4" } }
실행
terraform apply
AWS VPC 서브넷에서 확인
게이트웨이 & 라우팅 테이블 생성
# 리소스 타입 (aws_internet_gateway)과 사용자 지정 이름 (terraform-igw)을 사용하여 인터넷 게이트웨이 생성 resource "aws_internet_gateway" "terraform-igw" { # 생성한 VPC의 ID를 사용하여 인터넷 게이트웨이 연결 vpc_id = aws_vpc.terraform-vpc.id # 인터넷 게이트웨이에 이름 태그 설정 (태그 이름: Name, 값: terraform-igw) tags = { Name = "terraform-igw" } } # 리소스 타입 (aws_default_route_table)과 사용자 지정 이름 (terraform-vpc-route-table)을 사용하여 기본 라우트 테이블 생성 resource "aws_default_route_table" "terraform-vpc-route-table" { # 생성한 VPC의 기본 라우트 테이블 ID를 사용하여 기본 라우트 테이블 연결 default_route_table_id = aws_vpc.terraform-vpc.default_route_table_id # 라우트 테이블에 라우트 추가 route { # 대상 CIDR 블록 설정 (0.0.0.0/0 - 모든 IP 주소) cidr_block = "0.0.0.0/0" # 생성한 인터넷 게이트웨이를 대상으로 설정 gateway_id = aws_internet_gateway.terraform-igw.id } # 라우트 테이블에 이름 태그 설정 (태그 이름: Name, 값: terraform-vpc-route-table) tags = { Name = "terraform-vpc-route-table" } }
실행
terraform apply
728x90반응형LIST'IaC' 카테고리의 다른 글
4. Terraform(테라폼) - 모듈 (0) 2023.03.30 4. Terraform(테라폼) - 변수 (0) 2023.03.30 4. Terraform(테라폼) (0) 2023.03.30 Ansible(앤서블) - 활용(3계층구현) (0) 2023.03.29 3. Ansible(앤서블) (0) 2023.03.29 이전글이 없습니다.댓글