이 글은 테라폼으로 EC2 인스턴스 생성하는 방법과 공개키 인증방식 적용, user data를 설정하는 방법을 소개합니다. 예제는 github에 있고 그리고 예제 상세설명은 영상에서 소개합니다.
▶ github 링크: https://github.com/choisungwook/portfolio/tree/master/aws/terrafom/9_ec2-userdata
▶ 영상링크: https://youtu.be/rHm6C2-77uA
준비
테라폼이 설치되어 있어야 하고 AWS에 접속할 액세스키가 필요합니다.
export AWS_ACCESS_KEY_ID="<AWS_ACCESS_KEY_ID>"
export AWS_SECRET_ACCESS_KEY="<AWS_SECRET_ACCESS_KEY>"
export AWS_DEFAULT_REGION="ap-northeast-2"
aws_instance 리소스로 EC2 생성
테라폼에서 aws_instance 리소스를 사용하면 쉽게 EC2인스턴스를 생성할 수 있습니다. 아래 예제는 테라폼 공식문서에서 제공하는 샘플입니다. t3.micro타입이고 ubuntu운영체제인 EC2 인스턴스를 생성합니다.
▶ 테라폼 aws_instance 리소스 공식문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.micro"
}
필수 필드
공식문서에서 (required)키워드로 검색하면 aws_instance필수 타입을 찾을 수 있습니다. ami와 instance_type 단 2개만 필수타입으로 지정되어 있습니다.
※ ami: aws에 등록된 이미지 ID
※ instance_type: EC2 인스턴스 사양을 정의한 타입(예: t2.micro, t3.micro 등)
공개키 인증방식 적용
EC2인스턴스에 원격 접속에 필요한 키 관리는 aws_key_pair 리소스를 사용합니다.
먼저 EC2 인스턴스에 등록할 키쌍을 생성합니다. 아래 예제는 test 비밀키와 test.pub 공개키를 생성합니다.
ssh-keygen -t rsa -b 4096 -N "" -f test
EC2 인스턴스에 등록할 공개키를 aws_key_pari리소스로 등록합니다. 아래 예제는 file함수를 사용해서 공개키 파일 내용을 읽어왔습니다.
resource "aws_key_pair" "demo-keypair" {
key_name = "deployer-key"
public_key = file("./test.pub")
}
이제 EC2 인스턴스에 aws_key_pair을 등록하면 됩니다. aws_instance_type에 key_name필드가 키 관리를 담당합니다. aws_key_pari리소스 접근 방법은 [리소스 이름].[라벨 이름].key_name으로 하시면 됩니다.
resource "aws_instance" "web" {
ami = "ami-0b50511490117e709"
instance_type = "t2.nano"
key_name = aws_key_pair.demo-keypair.key_name
tags = {
Name = "demo-instance"
}
}
'전공영역 공부 기록' 카테고리의 다른 글
프로메테우스 helm chart 설치 (1) | 2021.04.17 |
---|---|
AWS OTP활성화 방법 (0) | 2021.04.05 |
쿠버네티스 관리자 serviceaccount 생성 (0) | 2021.02.04 |
Dockerfile지정해서 도커 빌드 (0) | 2021.02.04 |
리눅스 timezone을 서울로 변경 (0) | 2021.01.25 |