はじめに
Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。
以下の3つの投稿内容を実施した上でRedisの構築を行なっています。
TerraformをインストールしてTerraformでAWS上にEC2作ってみる
TerraformでIAMを設定してEC2にセッションマネージャー経由で接続してみる
Terraformでセキュリティグループを設定してEC2にhttp接続する
TerraformにRedisの定義を追加
Redis接続用のセキュリティグループを定義する
今回、Redisへの接続はEC2から行います。
その為、Redisへの接続はEC2に付与されるセキュリティグループからのみ許可するようにします。
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に関する情報を定義していきます。
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_version
を7.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で構築しました。
最新バージョンにあわせてコードの書き方が少し変わることに気づけたので、バージョンを上げる時はコードの書き方が変わる場合もあることを考慮しないといけないことに気づけて良かったです。