🐕
Terraformのrdsのモジュールファイル
rdsのモジュールファイル
rds.tfファイル
# Auroraクラスタ用のパラメータグループを作成
resource "aws_rds_cluster_parameter_group" "aurora_cluster_parameter_group" {
name = "sample-dev-pg-auroracluster" # パラメータグループの名前
family = "aurora-mysql8.0" # パラメータグループのファミリ
description = "Custom parameter group for Aurora cluster"
# タイムゾーンを設定
parameter {
name = "time_zone"
value = "Asia/Tokyo"
}
# タグを設定
tags = {
Name = "sample-dev-pg-auroracluster"
}
}
# Auroraインスタンス用のパラメータグループを作成
resource "aws_db_parameter_group" "aurora_instance_parameter_group" {
name = "sample-dev-pg-aurorainstance" # パラメータグループの名前
family = "aurora-mysql8.0" # パラメータグループのファミリ
description = "Custom parameter group for Aurora instance"
# タグを設定
tags = {
Name = "sample-dev-pg-aurorainstance"
}
}
# DB用のサブネットグループを作成
resource "aws_db_subnet_group" "this" {
name = "sample-dev-dbsg" # サブネットグループの名前
subnet_ids = var.subnet_ids # サブネットID(変数から取得)
# タグを設定
tags = {
Name = "sample-dev-dbsg"
}
}
# Auroraクラスタを作成
resource "aws_rds_cluster" "this" {
cluster_identifier = var.aurora_cluster_name # クラスタの識別子
engine = "aurora-mysql" # 使用するエンジン
engine_version = "8.0.mysql_aurora.3.01.0" # エンジンのバージョン
master_username = var.master_username # マスターユーザー名
master_password = var.master_password # マスターパスワード
db_subnet_group_name = var.subnet_group_name # サブネットグループ名
skip_final_snapshot = true # 最終スナップショットをスキップ
depends_on = [aws_db_subnet_group.this] # サブネットグループの作成が先
}
# Auroraインスタンスを作成
resource "aws_rds_cluster_instance" "this" {
identifier = var.aurora_instance_name # インスタンスの識別子
cluster_identifier = aws_rds_cluster.this.id # 所属するクラスタのID
instance_class = var.instance_class # インスタンスのタイプ
engine = "aurora-mysql" # 使用するエンジン
}
variables.tfファイル
variable "vpc_id" {
description = "VPCのID"
}
variable "subnet_group_name" {
description = "サブネットグループ名"
}
variable "subnet_ids" {
description = "サブネットIDのリスト"
type = list(string)
}
variable "security_group" {
description = "セキュリティグループ"
}
variable "aurora_cluster_name" {
description = "Auroraクラスタの名前"
}
variable "aurora_instance_name" {
description = "Auroraインスタンスの名前"
}
variable "master_username" {
description = "マスターユーザー名"
}
variable "master_password" {
description = "マスターパスワード"
}
variable "instance_class" {
description = "DBインスタンスクラス"
}
output.tfファイル
output "aurora_cluster_id" {
value = aws_rds_cluster.this.id
description = "Aurora クラスタのID"
}
output "aurora_instance_id" {
value = aws_rds_cluster_instance.this.id
description = "Aurora インスタンスのID"
}
output "aurora_endpoint" {
value = aws_rds_cluster.this.endpoint
description = "Aurora クラスタのエンドポイント"
}
providers.tfファイル
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider aws {
region = "ap-northeast-1"
}
README.mdファイル
### rds.tfファイル
| コード部分 | 説明 |
|----------------------------------------------------|----------------------------------------------------|
| `aws_rds_cluster_parameter_group` リソース | Auroraクラスタ用のパラメータグループを作成します。 |
| `aws_db_parameter_group` リソース | Auroraインスタンス用のパラメータグループを作成します。 |
| `aws_db_subnet_group` リソース | DB用のサブネットグループを作成します。 |
| `aws_rds_cluster` リソース | Auroraクラスタを作成します。 |
| `aws_rds_cluster_instance` リソース | Auroraインスタンスを作成します。 |
### variables.tfファイル
| コード部分 | 説明 |
|-------------------------------|-------------------------------|
| `variable "vpc_id"` | VPCのIDを指定します。 |
| `variable "subnet_group_name"`| サブネットグループ名を指定します。|
| `variable "subnet_ids"` | サブネットIDのリストを指定します。|
| `variable "security_group"` | セキュリティグループを指定します。|
| `variable "aurora_cluster_name"` | Auroraクラスタの名前を指定します。|
| `variable "aurora_instance_name"`| Auroraインスタンスの名前を指定します。|
| `variable "master_username"` | マスターユーザー名を指定します。|
| `variable "master_password"` | マスターパスワードを指定します。|
| `variable "instance_class"` | DBインスタンスクラスを指定します。|
### output.tfファイル
| コード部分 | 説明 |
|-------------------------------|-------------------------------|
| `output "aurora_cluster_id"` | AuroraクラスタのIDを出力します。|
| `output "aurora_instance_id"` | AuroraインスタンスのIDを出力します。|
| `output "aurora_endpoint"` | Auroraクラスタのエンドポイントを出力します。|
Discussion