视频

了解更多
今天我们很高兴宣布 HashiCorp Terraform Redis Enterprise Cloud 提供程序 的可用性。随着开发团队越来越多地采用持续集成/持续交付 (CI/DC) 等 DevOps 原则,对以代码形式管理基础设施的需求已成为任何云服务的必备功能。HashiCorp Terraform 是基础设施即代码领域的领先工具,支持主要的云提供商和服务,并通过其 提供程序和模块云基础设施自动化生态系统 来配置、合规和管理任何云、基础设施和服务。
如果您不熟悉,Terraform 是一种用于安全高效地构建、更改和版本控制基础设施的工具,使用代码管理所有内容。配置文件用于描述运行应用程序所需的组件。Terraform 可以管理几乎所有基础设施组件,包括裸机、虚拟机、云实例以及许多其他流行的基础设施即服务 (IaaS) 服务。应用程序堆栈中的组件在 Terraform 中表示为资源。Terraform 提供程序负责了解相关资源的 API 交互,并将资源的功能公开给外部世界。
为了满足这种不断增长的需求,Redis 开发了 Terraform 提供程序,用于 Redis Enterprise Cloud。HashiCorp Terraform Redis Enterprise Cloud 提供程序允许客户轻松地将 Redis Enterprise Cloud 订阅、数据库和网络对等连接以代码形式部署和管理到任何云提供商。
为了演示 Redis Enterprise Cloud 的 Terraform 提供程序的工作原理及其功能,让我们创建一个包含两个数据库的示例订阅,其中一个数据库使用 RedisJSON 模块。
先决条件
让我们首先将 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 提供程序的功能。如果您有任何想要我们支持的提供程序功能或您发现的错误,请通过在我们的 GitHub 存储库 中打开问题来告知我们。您也可以通过 pm.group@redis.com 与我们联系。
对于生产用例,我们还建议使用 Terraform Cloud,这是 HashiCorp 的基于云的 Terraform 产品。这将使您能够将凭据存储在配置文件和源代码控制之外的安全环境中。Terraform Cloud 还提供协作功能,例如免费的远程状态存储、自定义工作区权限、版本控制系统集成以及代码策略。您可以在 terraform.io/cloud 上免费注册。