[실습] ⑥ Terraform을 활용한 Key Pair와 EC2 인스턴스 생성하기
2024. 12. 2. 20:49ㆍTerraform/[인프런] 아키텍처와 함께하는 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 > [인프런] 아키텍처와 함께하는 Terraform' 카테고리의 다른 글
[실습] ⑧ Terraform을 활용한 모든 리소스 삭제하기(Terraform Destroy) (0) | 2024.12.02 |
---|---|
[실습] ⑦ Terraform을 활용한 EIP 생성 후 EC2 인스턴스 SSH로 접근하기 (0) | 2024.12.02 |
[실습] ⑤ Terraform을 활용한 Route Table과 Subnet 연결 및 보안 그룹 생성하기 (0) | 2024.11.28 |
[실습] ④ Terraform을 활용한 IGW, Route Table, Public Subnet 생성하기 (0) | 2024.11.28 |
[실습] ③ Terraform을 활용한 VPC 생성하기 (0) | 2024.11.27 |