전공영역 공부 기록

테라폼으로 EC2 인스턴스 생성

악분 2021. 2. 18. 09:19
반응형

이 글은 테라폼으로 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"
  }
}

 

반응형