728x90
[Terraform] RDS 생성
테라폼으로 AWS의 RDS를 생성해보자
관련하여 코드 사용법들은 아래 링크에 잘 나와있다.
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance
RDS를 구성하기 위해선 다음이 필요하다.
- Security Group
- DB 인스턴스의 엔진은 MySQL을 사용, 3306 Port를 허용해주는 DB 보안그룹
- Subnet Group
- 두 개 이상의 AZ에 생성된 private subnet
차례대로 만들어보자.
1. 보안 그룹
#aws_security_group
resource "aws_security_group" "db" {
vpc_id = aws_vpc.vpc.id
description = "Allow MySQL inbound traffics"
ingress {
description = "Allow MySQL"
from_port = 3306
to_port = 3306
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "allow_mysql"
}
}
2. 서브넷 그룹
다중 AZ 구성을 하기 위해 각각 다른 가용 영역의 서브넷을 이용하여 서브넷 그룹을 구성
#subnet group
resource "aws_db_subnet_group" "dbsb" {
name = "db_subnet_group"
subnet_ids = [aws_subnet.subnet_a.id, aws_subnet.subnet_c.id]
tags = {
Name = "Terraform DB subnet Group"
}
}
3. DB 인스턴스 생성
- allocated_storage : RDS 스토리지 용량
- identifier : DB 인스턴스 식별자
- engine, engine_version : DB 엔진과 버전
- instance_class : DB 인스턴스의 스펙
- skip_final_snapshot : DB 인스턴스를 삭제하기 전 최종 스냅샷을 생성할 지 여부
- publicly_accessible : 퍼블릭 액세스, true로 지정을 해야 외부에서 접근이 가능
- parameters : DB 파라미터 그룹 설정
- multi_az : HA (다중 가용영역) 구성 여부
⚠ DB user의 패스워드는 8글자 이상이여야 함, 8글자 이하면 생성이 안된다
resource "aws_db_instance" "rds" {
allocated_storage = 10
identifier = "testdb"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t2.micro"
db_name = "testdb"
username = "admin"
password = "passwd"
skip_final_snapshot = true
publicly_accessible = true
#muitl_az = true
db_subnet_group_name = aws_db_subnet_group.dbsb.id
vpc_security_group_ids = [aws_security_group.db.id]
}
output "rds_endpoint" {
value = "${aws_db_instance.rds.endpoint}"
}
RDS를 생성하기 위한 코드는 다 완성이 됐으니 확인을 해보자.
terraform plan
terraform apply --auto-approve
AWS 콘솔에서 확인 시 매우 잘 생성되는 중, RDS는 생성되는데 시간이 조금 걸린다.
Output으로 엔드포인트가 출력된다. 접속 명령어는 아래 명령어를 통해서 확인할 수 있다.
mysql -h <endpoint> -u admin -pdbpasswd
반응형
'📚 IaC > Terraform' 카테고리의 다른 글
[Terraform] 데이터 소스(Data Source) (0) | 2023.09.19 |
---|---|
[Terraform] 의존성 관리 (depends_on) (0) | 2023.09.18 |
[Terraform] LoadBalancer 생성 (0) | 2023.07.04 |
[Terraform] Key-Pair 생성 후 EC2 인스턴스 SSH 접속 (0) | 2023.07.03 |
[Terraform] AWS Custom VPC 생성 (0) | 2023.06.28 |