terraform module 사용법(ec2)
2021. 6. 2. 04:06ㆍTerraform
이제 모듈로 ec2을 올려보자
우선 디렉토리를 만들자
ec2 모듈 디렉터리가 만들어졌으면 main.tf 파일을 작성해보자
# ~/test/module/ec2/main.tf
resource "aws_instance" "test" { #ec2인스턴스 생성
ami = var.ami #사용할 ami
instance_type = var.instance_type #사용할 인스턴스 타입
key_name = var.key_name #사용할 키(window 이용자는 ppk, mac또는 linux는 pem)
subnet_id = var.subnet_id #서브넷ID
associate_public_ip_address = true #퍼블릭ip 부여
tags = {
Name = var.name #이름 태그
}
}
작성이 완료됬으면 이제 variables.tf 파일을 만들어보자
# ~/test/module/ec2/variables.tf
variable "subnet_id" {} #서브넷 변수지정
variable "name" { #이름변수 지정
type = string
}
variable "ami" { #ami 변수지정
type = string
}
variable "instance_type" { #인스턴스 타입 변수지정
type = string
}
variable "key_name" { #사용할 키이름 지정
type = string
default = "lhy940810" #디폴트는 안넣어도 상관없음, 루트묘둘에서 지정하기 싫으면 넣어도됨
}
variable "associate_public_ip_address" { #퍼블릭 ip 부여 변수지정
type = bool
default = null
}
variable "private_ip" { #프라이빗ip 변수지정(랜덤으로 부여받을꺼면 루트모듈에서 별도로 값입력 불필요)
type = string
default = null
}
이제 변수파일까지 만들었으면 마지막으로 output.tf 파일을 만들어주자.
# ~/test/module/ec2/output.tf
output "id" { #인스턴스 id output 값
value = aws_instance.test.id
}
모듈은 완성이 됬다. 이제 류트모듈 main.tf 파일에서 입력만 해주면 된다.
# ~/test/main.tf
provider "aws" { #사용자정보 지정
region = "ap-northeast-2" #사용할 리전 지정
access_key = "access_key" #IAM 사용자 만들때 생성한 엑세스키 정보
secret_key = "secret_key" #IAM 사용자 만들때 생성한 시크릿키 정보
}
module "vpc" { #사용할 모듈
source = "./module/vpc" #모듈 위치
vpc_cidr_block = "10.1.0.0/16" #vpc 모듈에서 지정한 변수의 값 / vpc의 cidr 값
vpc_name = "test_vpc" #vpc 모듈에서 지정한 변수의 값 / vpc의 이름
}
module "subnet" { #사용할 모듈
source = "./module/subnet" #모듈 위치
vpc_id = module.vpc.vpc_id #vpc id 지정
public_subnet_cidr_block = "10.1.1.0/24" #퍼블릭 서브넷 CIDR 블록 지정
public_subnet_AZ = "ap-northeast-2a" #퍼블릭 서브넷 가용영역 지정
publicsb_name = "Pubilc_sb" #퍼블릭 서브넷 이름 지정
private_subnet_cidr_block = "10.1.2.0/24" #프라이빗 서브넷 CIDR 지정
private_subnet_AZ = "ap-northeast-2a" #프라이빗 서브넷 가용영역 지정
privatesb_name = "Private_sb" #프라이빗 서브넷 이름 지정
}
module "igw"{ #사용할 모듈
source = "./module/igw" #모듈 위치
vpc_id = module.vpc.vpc_id #igw 에 사용할 vpc id 지정
}
module "route_table"{ # 사용할 모듈
source = "./module/rt" # 모듈 위치
vpc_id = module.vpc.vpc_id #vpc id 지정
internet_gateway_id = module.igw.internet_gateway_id # 인터넷 게이트웨이 지정
subnet_public_id = module.subnet.public_subnet_id # 서브넷 아이디 지정
}
module "ec2" { #사용할 모듈
source = "./ec2" #모듈 위치
ami = "ami-0f2c95e9fe3f8f80e" #사용할 ami(Amazon Linux2)
key_name = "lhy940810" #키 지정
subnet_id = module.subnet.public_subnet_id #서브넷 지정
name = "test-2a" #이름 지정
instance_type = "t2.micro" #인스턴스 타입 지정
} #변수파일에서 퍼블릭 ip부여를 디폴트로 지정해놨기 때문에 지정해줄필요 x
이제 완성이 됬으니 terraform init , plan , apply 을 해보자.
이렇게 만들어진것을 확인할수 있다.
'Terraform' 카테고리의 다른 글
terraform vpc peering (0) | 2021.06.06 |
---|---|
terraform module 사용법(route table) (0) | 2021.06.01 |
terraform module 사용법(internet gateway) (0) | 2021.05.31 |
terraform module 사용법(subnet) (0) | 2021.05.30 |
terraform module 사용법(vpc) (1) | 2021.05.29 |