RDSデータベース用の設定を行う
1.VPCを作成する
resource "aws_vpc" "my_vpc" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "my-vpc"
}
}
この例では、CIDR ブロックが 10.0.0.0/16 の VPC を定義しています。
2.サブネットを作成する
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.my_vpc.id
cidr_block = "10.0.2.0/24"
availability_zone = "ap-northeast-1a"
tags = {
Name = "my-private-subnet"
}
}
3.サブネットグループを作成する
resource "aws_db_subnet_group" "my_db_subnet_group" {
name = "my_db_subnet_group"
subnet_ids = [aws_subnet.my_subnet.id]
tags = {
Name = "my_db_subnet_group"
}
}
4.セキュリティグループを作成する
resource "aws_security_group" "my_security_group" {
name_prefix = "my_security_group"
vpc_id = aws_vpc.my_vpc.id
ingress {
from_port = 3306
to_port = 3306
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "my_security_group"
}
}
5.RDSデータベース用のパラメータグループを作成する
resource "aws_db_parameter_group" "my_db_parameter_group" {
name = "my-db-parameter-group"
family = "mysql8.0"
parameter {
name = "max_connections"
value = "1000"
}
parameter {
name = "query_cache_size"
value = "67108864"
}
}
この例では、MySQL 8.0用のパラメータグループを定義しています。パラメータグループには、データベースエンジンに依存するパラメータを設定できます。
6.オプショングループを作成する
resource "aws_rds_cluster_parameter_group" "my_rds_cluster_parameter_group" {
name = "my_rds_cluster_parameter_group"
family = "aurora-mysql8.0"
description = "My RDS cluster parameter group"
parameter {
name = "tls_version"
value = "TLSv1.2"
}
}
7.Aurora 8.0 RDSクラスターを作成する
resource "aws_rds_cluster" "aurora_cluster" {
cluster_identifier = "aurora_cluster"
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.08.1"
database_name = "mydatabase"
master_username = "admin"
master_password = "mypassword"
backup_retention_period = 7
preferred_backup_window = "00:00-01:00"
preferred_maintenance_window = "mon:03:00-mon:04:00"
db_subnet_group_name = aws_db_subnet_group.my_db_subnet_group.name
vpc_security_group_ids = [aws_security_group.my_security_group.id]
db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.my_rds_cluster_parameter_group.name
}
8.ルートテーブルを作成する
resource "aws_route_table" "my_route_table" {
vpc_id = aws_vpc.my_vpc.id
tags = {
Name = "my_route_table"
}
}
9.パブリックサブネットにあるアプリケーションサーバからのみアクセス可能とするため、パブリックサブネットのCIDRブロックを取得して、セキュリティグループを作成する。
data "aws_subnet" "public_subnet" {
filter {
name = "tag:Name"
values = ["my-public-subnet"]
}
}
resource "aws_security_group" "public_app_server_sg" {
name_prefix = "public_app_server_sg"
vpc_id = aws_vpc.my_vpc.id
ingress {
from_port = 0
to_port = 65535
protocol = "tcp"
cidr_blocks = [data.aws_subnet.public_subnet.cidr_block]
}
tags = {
Name = "public_app_server_sg"
}
}
10.ルートテーブルにルールを追加して、パブリックサブネットにあるアプリケーションサーバからのみアクセス可能にする。
resource "aws_route" "public_app_server_route" {
route_table_id = aws_route_table.my_route_table.id
destination_cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.my_internet_gateway.id
/*
destination_prefix_list_id
prefix list を使用して、宛先 IP アドレスによるトラフィックのルーティングを設定します。この場合、null に設定されているため、prefix list を使用しないことを示します。
egress_only_gateway_id
ルーティング先が Egress Only Internet Gateway の場合に使用されます。
この場合、null に設定されているため、Egress Only Internet Gateway にルーティングしないことを示します。
instance_id
ルーティング先が EC2 インスタンスの場合に使用されます。
この場合、null に設定されているため、EC2 インスタンスにルーティングしないことを示します。
local_gateway_id
VPC 内の VPN 接続を通じて接続されたオンプレミスのゲートウェイを指定するために使用されます。
この場合、null に設定されているため、オンプレミスのゲートウェイにルーティングしないことを示します。
nat_gateway_id
ルーティング先が NAT ゲートウェイの場合に使用されます。
この場合、null に設定されているため、NAT ゲートウェイにルーティングしないことを示します。
network_interface_id
ルーティング先が ENI (Elastic Network Interface) の場合に使用されます。
この場合、null に設定されているため、ENI にルーティングしないことを示します。
transit_gateway_id
ルーティング先が Transit Gateway の場合に使用されます。
この場合、null に設定されているため、Transit Gateway にルーティングしないことを示します。
*/
destination_prefix_list_id = null
egress_only_gateway_id = null
instance_id = null
local_gateway_id = null
nat_gateway_id = null
network_interface_id = null
transit_gateway_id = null
depends_on = [
aws_subnet.my_subnet,
aws_internet_gateway.my_internet_gateway,
aws_security_group.my_security_group,
aws_security_group.public_app_server_sg
]
}
AWSで、Terraformを利用する方法をまとめてみた(1/10)
https://qiita.com/kimuni-i/items/ffde2f8df96fe5d9513f
AWSで、Terraformを利用する方法をまとめてみた(2/10)
https://qiita.com/kimuni-i/items/6298ed10adc6ad450488
AWSで、Terraformを利用する方法をまとめてみた(3/10)
https://qiita.com/kimuni-i/items/4d2f90506eb2dd4ee702
AWSで、Terraformを利用する方法をまとめてみた(4/10)
https://qiita.com/kimuni-i/items/b97089a820cc06ed2d9c
AWSで、Terraformを利用する方法をまとめてみた(5/10)
https://qiita.com/kimuni-i/items/11efb60b9a731d212211
AWSで、Terraformを利用する方法をまとめてみた(6/10)
https://qiita.com/kimuni-i/items/943daf8f4e80af12b70e
AWSで、Terraformを利用する方法をまとめてみた(7/10)
https://qiita.com/kimuni-i/items/b2cc6e1e4b5d5c1a92cb
AWSで、Terraformを利用する方法をまとめてみた(8/10)
https://qiita.com/kimuni-i/items/2934372c385ba0561425
AWSで、Terraformを利用する方法をまとめてみた(10/10)
https://qiita.com/kimuni-i/items/2f900d792c38ad93979c