dot Redis 8 来了——而且是开源的

了解更多

使用 HashiCorp Terraform 在任何地方配置和管理 Redis Enterprise Cloud

今天,我们很高兴宣布HashiCorp Terraform Redis Enterprise Cloud provider的可用性。虽然开发团队越来越多地采用 DevOps 原则,例如持续集成/持续交付 (CI/CD),但将基础设施作为代码进行管理的需求几乎已成为任何云服务的必备功能。 HashiCorp Terraform 是基础设施即代码领域中的领先工具,它通过其providers and modules cloud infrastructure automation ecosystem为主要的云提供商和服务提供支持,用于对任何云、基础设施和服务进行配置、合规性和管理。

什么是 Terraform?

如果您不熟悉,Terraform 是一种用于安全有效地构建、更改和版本化基础设施的工具,可以使用代码管理所有内容。配置文件用于描述运行应用程序所需的组件。 Terraform 可以管理几乎任何基础设施组件,包括裸机、虚拟机、云实例和许多其他流行的基础设施即服务 (IaaS) 服务。应用程序堆栈中的组件在 Terraform 中表示为资源。 Terraform provider 负责了解相关资源的 API 交互,并将资源的功能公开给外界。 

那么我们今天宣布的是什么?

为了满足这一日益增长的需求,Redis 开发了一个用于Redis Enterprise CloudTerraform provider。 HashiCorp Terraform Redis Enterprise Cloud Provider 允许客户在任何云提供商上轻松地以代码形式部署和管理 Redis Enterprise Cloud 订阅、数据库和网络对等互连。

快速入门

为了演示 Redis Enterprise Cloud 的 Terraform Provider 的工作原理及其功能,让我们创建一个包含两个数据库的示例订阅,其中一个使用RedisJSON 模块

先决条件

  1. 在本地安装 Terraform。 
  2. 一个Redis Enterprise Cloud 帐户。
  3. 启用程序化访问到您的 Redis Enterprise Cloud 帐户。

让我们首先将 Redis Enterprise Cloud API 密钥存储为环境变量

$ export REDISCLOUD_ACCESS_KEY=<您的 API 访问密钥>

$ export REDISCLOUD_SECRET_KEY=<您的 API 密钥>

现在让我们创建一个新文件夹,并将此处显示的 Terraform HCL 文件放入其中。 让我们将该文件命名为 rediscloud-tf-example.tf

terraform {
 required_providers {
   rediscloud = {
     source = "Redis/rediscloud"
     version = "0.2.0"
   }
 }
}
# Provide your credit card details
data "rediscloud_payment_method" "card" {
 card_type = "Visa"
 last_four_numbers = "1234"
}
 
# Generates a random password for the database
resource "random_password" "passwords" {
 count = 2
 length = 20
 upper = true
 lower = true
 number = true
 special = false
}
 
resource "rediscloud_subscription" "example" {
 name = "Demo"
 payment_method_id = data.rediscloud_payment_method.card.id
 memory_storage = "ram"
 
 cloud_provider {
   #Running in AWS on Redis resources
   provider = "AWS"
   cloud_account_id = 1
   region {
     region = "eu-west-1"
     networking_deployment_cidr = "10.0.0.0/24"
     preferred_availability_zones = ["eu-west-1a"]
   }
 }
 database {
   name = "redis-db"
   protocol = "redis"
   memory_limit_in_gb = 1
   replication = true
   data_persistence = "none"
   throughput_measurement_by = "number-of-shards"
   throughput_measurement_value = 2
   password = random_password.passwords[0].result
 }
 database {
   name = "db-json"
   protocol = "redis"
   memory_limit_in_gb = 1
   replication = true
   data_persistence = "aof-every-1-second"
   module {
       name = "RedisJSON"
   }
   throughput_measurement_by = "operations-per-second"
   throughput_measurement_value = 10000
   password = random_password.passwords[1].result
 }
}

下一步是通过运行以下命令来初始化 terraform 环境

$ terraform init

结果应该看起来像这样

...
Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
...

成功初始化 Terraform 后,运行以下命令以使 Terraform 创建计划

$ terraform plan

输出应与此类似

...
Plan: 1 to add, 0 to change, 0 to destroy.
...

现在让 Terraform 发挥其魔力并配置我们的数据库

$ terraform apply

terraform apply 命令可能需要几分钟才能完成,完成后,它应生成如下结果

…
rediscloud_subscription.example: Creation complete after 8m16s [id=103873]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
...

如您所见,我们现在已配置了两个新数据库。 您所要做的就是获取数据库的端点并将它们插入到您的应用程序中。 您还可以使用RedisInsight,即用于简化 Redis 应用程序开发的 GUI,来连接和浏览您的数据。

Redis Enterprise Cloud 控制台显示新的订阅和数据库

完成数据库的乐趣后,您可以运行以下命令来销毁所有内容

$ terraform destroy

下一步是什么?

我们将继续扩展 HashiCorp Terraform Redis Enterprise Cloud Provider 的功能。 如果您有希望我们在 provider 中支持的想法或功能,或者您发现了一个错误,请通过在我们的 GitHub 存储库中打开一个 issue 来告诉我们。 您也可以发送邮件至 [email protected]

对于生产用例,我们还建议使用 Terraform Cloud,它是 HashiCorp 基于云的 Terraform 产品。 这将使您能够在配置文件和源代码控制之外的安全环境中存储凭据。 Terraform Cloud 还具有协作功能,例如免费的远程状态存储、自定义工作区权限、版本控制系统集成以及策略即代码。 您可以在 terraform.io/cloud 免费注册。