尝试使用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版本。由於意識到代碼寫法會隨著最新版本有些微變化,因此意識到升級版本時可能需要考慮代碼寫法也會改變的情況,這一點很好。

bannerAds