尝试使用Terraform构建Redis
首先
由于开始学习Terraform,我打算发布一些备忘录,记录我所做的事情。
在完成以下三个步骤后,我进行了Redis的部署。
1. 安装Terraform并使用Terraform在AWS上创建EC2实例。
2. 使用Terraform配置IAM,并通过会话管理器连接到EC2实例上进行测试。
3. 使用Terraform配置安全组,实现对EC2实例的HTTP连接。
在Terraform中添加Redis的定义
定义用于Redis连接的安全组
本次连接将从EC2到Redis进行。
为此,我们将仅允许从EC2分配的安全组连接到Redis。
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"
}
}
将用于Redis连接的安全组ID设置为security_group_ids中定义的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/zh_cn/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
将Redis的主要端点设置为在AWS控制台上显示的端点。
删除已创建的资源
运行terraform的destroy命令,删除AWS上的资源。
terraform destroy
最后
我們這次在AWS上構建了去年支持的Redis 7版本。由於意識到代碼寫法會隨著最新版本有些微變化,因此意識到升級版本時可能需要考慮代碼寫法也會改變的情況,這一點很好。