9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TerraformでRDSを構築してみる

Last updated at Posted at 2023-02-20

はじめに

Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。
以下の3つの投稿内容を実施した上でRDSの構築を行なっています。
TerraformをインストールしてTerraformでAWS上にEC2作ってみる
TerraformでIAMを設定してEC2にセッションマネージャー経由で接続してみる
Terraformでセキュリティグループを設定してEC2にhttp接続する

TerraformにRDSの定義を追加

RDS接続用のセキュリティグループを定義する

今回、RDSへの接続はEC2から行います。
その為、RDSへの接続はEC2に付与されるセキュリティグループからのみ許可するようにします。

securitygroup.tf
resource "aws_security_group" "test_rds" {
  name = "tf_test_rds"

  tags = {
    Name = "tf_test_rds"
  }
}

resource "aws_security_group_rule" "rds" {
  type                     = "ingress"
  from_port                = 3306
  to_port                  = 3306
  protocol                 = "tcp"
  source_security_group_id = aws_security_group.test.id
  security_group_id        = aws_security_group.test_rds.id
}

source_security_group_idに設定されたセキュリティグループIDのみ接続を許可
aws_security_group.test.idは以下で作成したセキュリティグループです
https://qiita.com/kakita-yzrh/items/6bdc11f2882c67a949ad#http%E6%8E%A5%E7%B6%9A%E7%94%A8%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E5%AE%9A%E7%BE%A9

RDSインスタンスを定義する

RDSに関する情報を定義していきます。

rds.tf
resource "aws_db_instance" "test" {
  allocated_storage       = 10
  engine                  = "mysql"
  engine_version          = "8.0.31"
  instance_class          = "db.t2.micro"
  storage_type            = "gp2"
  username                = "username"
  password                = "password"
  backup_retention_period = 0
  skip_final_snapshot     = true
  vpc_security_group_ids = [
    aws_security_group.test_rds.id
  ]
  tags = {
    Name = "tf_test"
  }
}

vpc_security_group_idsに定義したRDS接続用のセキュリティグループIDを設定

passwordは平文で設定するのは微妙ですが、今回はそのまま設定しています
パスワード生成用プロバイダーとSSM Parameter Storeを利用するとterraformのファイルには平文パスワードを定義せずに運用できるようですが、それはまた別の機会に

Terraformで定義したセキュリティグループとRDSを作成

Terraformのplan applyを実行

terraformのplan applyを実行して、AWS上にリソースを作成します。

terraform plan
terraform apply

EC2に接続してRDSに接続する

セッションマネージャーで作成したEC2に接続する

以下と同様にEC2に接続します。

EC2にmysqlをインストール

sudo yum install mysql

mysqlコマンドでRDSに接続する

mysql -u username -h RDSのエンドポイント -p

ユーザー、パスワードはrds.tfで設定したもの
ホストに設定するRDSのエンドポイントはAWSコンソールから確認

作成したリソースの削除

terraform の destroyを実行して、AWS上のリソースを削除します。

terraform destroy

さいごに

今回、terraform destroyした時にrdsの削除時にスナップショットを残す設定になっていたがfinal_snapshot_identifierを設定していなかった為、destroyでエラーになりました。
当たり前のことですがapplyできたものが正常にdestroyできるとは限らないことに練習の段階で気付けて良かったです。

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?