11
2

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でRedisを構築してみる

Last updated at Posted at 2023-04-24

はじめに

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

TerraformにRedisの定義を追加

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

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

securitygroup.tf
resource "aws_security_group" "test_redis" {
  name = "tf_test_redis"

  tags = {
    Name = "tf_test_redis"
  }
}

resource "aws_security_group_rule" "redis" {
  type                     = "ingress"
  from_port                = 6379
  to_port                  = 6379
  protocol                 = "tcp"
  source_security_group_id = aws_security_group.test.id
  security_group_id        = aws_security_group.test_redis.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

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

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

redis.tf
resource "aws_elasticache_replication_group" "redis" {
  replication_group_id          = "test-redis-group"
  description                   = "test redis group"
  node_type                     = "cache.t4g.micro"
  engine_version                = "7.0"
  port                          = 6379
  parameter_group_name          = "default.redis7.cluster.on"
  automatic_failover_enabled    = true
  # シャード数
  num_node_groups         = 1
  # レプリカノード数
  replicas_per_node_group = 1
  
  security_group_ids = [
    aws_security_group.test_redis.id
  ]

  tags = {
    Name = "tf_test_redis"
  }
}

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

engine_version7.0に設定していますが、AWS Providerのバージョンが3系だと terraform planを実行するとエラーが出ました。
AWS Providerのバージョンを4系(v4.64.0)にアップデートするとエラーは出なくなりました。

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

Terraformのplan applyを実行

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

terraform plan
terraform apply

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

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

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

EC2にredis-cliをインストール

公式の手順にそってredis-cliをインストールします
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/GettingStarted.ConnectToCacheNode.html

sudo amazon-linux-extras install epel -y
sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel -y
sudo wget http://download.redis.io/redis-stable.tar.gz
sudo tar xvzf redis-stable.tar.gz
cd redis-stable
sudo make BUILD_TLS=yes

redis-cliでRedisに接続する

src/redis-cli -h primary-endpoint -p 6379

primary-endpointは作成したRedisのAWSコンソールに表示されたエンドポイントを設定

作成したリソースの削除

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

terraform destroy

さいごに

今回はAWSでは昨年サポートされたRedis7で構築しました。
最新バージョンにあわせてコードの書き方が少し変わることに気づけたので、バージョンを上げる時はコードの書き方が変わる場合もあることを考慮しないといけないことに気づけて良かったです。

11
2
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
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?