ec2를 접속할 때 사용할 key pair를 생성한다.
ssh-keygen -t rsa -b 4069 -C {자신의 메일} -f "./my_key" -N ""
# rsa 방식으로 4096비트를 사용해서 생성한다.
생성 완료되면
Generating public/private rsa key pair.
Your identification has been saved in ./my_key
Your public key has been saved in ./my_key.pub
The key fingerprint is:
SHA256:[여러 문자] [입력한 메일 주소]
The key's randomart image is:
+---[RSA 4069]----+
|+O |
|++@+. . . |
|oo.+ + o + |
|=. o o + |
|E.. . .So |
|o* . .. |
|..* ..+. |
|.. o. o |
| .o . |
+----[SHA256]-----+
이런 메세지가 뜨면서 파일 두개가 생성된다.
my_key와 my_key.pub이 생성되는데 .pub가 공개키, my_key 암호키 즉 쌍(pair)으로 생성된다.
생성한 키페어를 테라폼 파일에 등록한다.
# ec2.tf
resource "aws_key_pair" "ec2_key" {
key_name = "my_key"
public_key = "my_key.pub 안에 있는 내용 전부 붙여넣기" or file("./my_key.pub")
}
ec2.tf를 만들어 주고 위의 코드를 작성해서 생성한 키페어를 테라폼에서 사용할 수 있게 만들어준다.
aws_instance를 사용해서 쉽게 생성할 수 있다.
#ec2.tf
resource "aws_instance" "real_ec2" {
ami = "ami-0ba5cd124d7a79612"
#ubuntu 20.04의 ami
instance_type = "t3.small"
security_groups = [aws_security_group.realPublicSG.id]
subnet_id = aws_subnet.realPublicSubnet.id
key_name = aws_key_pair.ec2_key.key_name
root_block_device { #볼륨 설정 가능
volume_size = 200
volume_type = "gp3"
}
tags ={ #이름 설정 가능
Name = "real_ec2"
}
}
작성완료 했으면 terraform plan 후 apply
(apply는 실제 환경에 적용이기 때문에 자주하지 않더라고 plan은 자주해서 오류를 바로바로 잡아내자!)
rds.tf 파일을 생성한 후 아래와 같이 작성한다.
#rds.tf
#rds의 서브넷 그룹으로 사용할 subnet들 미리 지정
resource "aws_db_subnet_group" "realDBSubnetGroup" {
name = "test"
subnet_ids = [
aws_subnet.realPrivateSubnet1.id,
aws_subnet.realPrivateSubnet2.id,
aws_subnet.realPublicSubnet.id,
]
tags = {
"Name" = "real-db-subnet-group"
}
}
resource "aws_db_instance" "real_rds" {
allocated_storage = 50
max_allocated_storage = 80
skip_final_snapshot = true
vpc_security_group_ids = [aws_security_group.realPrivateSG.id ]
#보안그룹 지정.
db_subnet_group_name = aws_db_subnet_group.realDBSubnetGroup.name
#서브넷 그룹 지정.
publicly_accessible = true
engine = "mariadb"
engine_version = "10.6.8"
instance_class = "db.t3.small"
db_name = "testDB"
username = "admin"
password = "testtest"
tags = {
"Name" = "realDB"
}
}
생성완료 후 terraform plan 후 apply로 적용을 한다.