[실습] ⑥ Terraform을 활용한 Key Pair와 EC2 인스턴스 생성하기

2024. 12. 2. 20:49Terraform/[인프런] 아키텍처와 함께하는 Terraform

1. Key Pair 생성

개인키 생성
- 아래 블록을 실행하면 RSA 기반 개인키와 그에 대한 공개키를 생성한다.
# vpc.tf
# 8. 개인키 설정
resource "tls_private_key" "my_key" {
    algorithm = "RSA"
    rsa_bits = 2048
}
ⓘ Note

RSA 알고리즘 특징
- RSA는 비대칭 암호화 알고리즘으로 공개키(public key)와 개인키(private key)를 사용한다.
- 공개키는 데이터를 암호화하고 개인키는 이를 복호화한다.(또는 그 반대)
- TLS, SSH 등에서 지원된다.
- AWS Key Pair, HTTPS 인증서 등에서 기본적으로 RSA를 사용한다.

RSA(데이터 암호화 및 복호화)
- 공개키 → 암호화 / 개인키 → 복호화
- 예를 들어, 발신자가 수신자의 공개키로 데이터를 암호화하고, 수신자가 자신의 개인키로 데이터를 복호화한다.
- 데이터의 기밀성을 보장

RSA(전자 서명)
- 개인키 → 암호화 / 공개키 → 복호화
- 예를 들어, 발신자가 자신의 개인키로 메시지에 서명하고, 수신자가 발신자의 공개키로 서명을 검증한다.
- 메시지의 무결성과 발신자의 신원을 보장
AWS Keypair 생성
- 아래 블록을 실행하면 공개키를 AWS로 전달하여 등록하고 Keypair를 생성한다.
- Keypair는 AWS에서 EC2 인스턴스와 같은 리소스에 SSH로 접근할 때 사용된다.
- tls_private_key.my_key.public_key_openssh : 위에서 생성한 공개키를 OpenSSH 형식으로 변환하여 Keypair 생성한다.(AWS Keypair는 OpenSSH 형식의 공개키를 사용하므로 이 과정이 필요하다.)
# vpc.tf
# 9. 생성된 개인키를 활용하여 키페어 생성
resource "aws_key_pair" "my_key" {
    key_name = "my_key"
    public_key = tls_private_key.my_key.public_key_openssh
}
로컬 파일에 개인키 저장
- 아래 블록을 실행하면 위에서 생성된 개인키를 현재 작업 디렉토리에 저장된다.
- private_key_pem : 위에서 생성된 PEM 형식의 개인키 내용을 가져온다.
# vpc.tf
# 10. 로컬에 키 파일 생성
resource "local_file" "private_key" {
    content = tls_private_key.my_key.private_key_pem
    filename = "${path.module}/my_key.pem"
}
키페어 생성 확인

⑤ 정리/요약
- Terraform으로 개인키와 공개키 생성
- 공개키를 OpenSSH 형식으로 변환
- 변환된 공개키를 AWS에 등록하여 Keypair 생성
- EC2 인스턴스는 Keypair의 공개키를 저장하고 SSH 접속을 허용

 

 

2. EC2 인스턴스 생성

퍼블릭 서브넷에 EC2 인스턴스 생성
# vpc.tf
# 11. 퍼블릭 서브넷에 ec2 인스턴스 생성
resource "aws_instance" "my_instance" {
    ami = "ami-040c33c6a51fd5d96"
    instance_type = "t2.micro"
    key_name = aws_key_pair.my_key.key_name
    subnet_id = aws_subnet.public_subnet.id
    vpc_security_group_ids = [aws_security_group.ssh.id]

    tags = {
        Name = "my-ec2-instance"
    }
}
EC2 인스턴스 생성 확인

 

 

 

 

 

 

출처 ; 아키텍처와 함께하는 Terraform (테라폼)