Terraform 入门

介绍如何安装 Redis Cloud provider 并创建订阅。

在这里,您将学习如何使用 Redis Cloud Terraform Provider 来创建订阅和数据库。

先决条件

  1. 安装 Terraform.

  2. 如果您还没有 Redis Cloud 账户,请创建一个

  3. 启用 Redis Cloud API.

  4. 获取您的 Redis Cloud API 密钥。将其设置为以下环境变量:

    • REDISCLOUD_ACCESS_KEY 设置为您的 API 账户密钥。
    • REDISCLOUD_SECRET_KEY 设置为您的 API 用户密钥。
  5. 设置支付方式

安装 Redis Cloud provider

  1. 创建一个文件来存放 Terraform 配置,文件名为 main.tf

  2. 前往Redis Cloud Terraform Registry

  3. 选择 Use Provider 并复制那里的 Terraform 代码。将代码粘贴到 main.tf 中并保存文件。

    provider "rediscloud" {
    }
    
    # Example resource configuration
    resource "rediscloud_subscription" "example" {
       # ...
    }
    
  4. 运行 terraform init

使用 Terraform 创建 Redis Cloud 订阅

在您的 Terraform 配置文件中,您可以添加资源和数据源来规划和创建订阅和数据库。有关作为 Redis Cloud provider 一部分可以使用的资源和数据源的更多信息,请参阅Redis Cloud Terraform Registry 文档

本节中的步骤将向您展示如何规划和创建一个包含一个数据库的 Redis Cloud Pro 订阅。

  1. 使用 rediscloud_payment_method 数据源获取支付方式 ID。

    # Get credit card details
    data "rediscloud_payment_method" "card" {
        card_type = "<Card type>"
        last_four_numbers = "<Last four numbers on the card>"
    }
    

    示例

    data "rediscloud_payment_method" "card" {
       card_type = "Visa"
       last_four_numbers = "5625"
    }
    
  2. 定义一个 rediscloud_subscription 资源来创建订阅。

    # Create a subscription
    resource "rediscloud_subscription" "subscription-resource" {
            name = "subscription-name"
            payment_method_id = data.rediscloud_payment_method.card.id # If you want to pay with a marketplace account, replace this line with payment_method = 'marketplace'.
            memory_storage = "ram"
    
            # Specify the cloud provider information here
            cloud_provider {
                    provider = "<Cloud provider>"
                    region {
                            region = "<region>"
                            networking_deployment_cidr = "<CIDR>"
                    }
            }
    
            #Define the average database specification for databases in the subscription
            creation_plan {
                    memory_limit_in_gb = 2
                    quantity = 1
                    replication = true
                    throughput_measurement_by = "operations-per-second"
                    throughput_measurement_value = 20000
            }
    }
    

    示例

    resource "rediscloud_subscription" "subscription-resource" {
         name = "redis-docs-sub"
         payment_method_id = data.rediscloud_payment_method.card.id # If you want to pay with a marketplace account, replace this line with payment_method = 'marketplace'.
         memory_storage = "ram"
    
         cloud_provider {
                 provider = "GCP"
                 region {
                         region = "us-west1"
                         networking_deployment_cidr = "192.168.0.0/24"
                 }
         }
    
         creation_plan {
                 memory_limit_in_gb = 2
                 quantity = 1
                 replication = true
                 throughput_measurement_by = "operations-per-second"
                 throughput_measurement_value = 20000
                 modules = ["RedisJSON"]
         }
    }
    
  3. 定义一个 rediscloud_subscription_database 资源来创建数据库。

    # Create a Database
    resource "rediscloud_subscription_database" "database-resource" {
        subscription_id = rediscloud_subscription.subscription-resource.id
        name = "database-name"
        memory_limit_in_gb = 2
        data_persistence = "aof-every-write"
        throughput_measurement_by = "operations-per-second"
        throughput_measurement_value = 20000
        replication = true
    
        alert {
        name = "dataset-size"
        value = 40
        }
        depends_on = [rediscloud_subscription.subscription-resource]
    
    }
    

    示例

    resource "rediscloud_subscription_database" "database-resource" {
        subscription_id = rediscloud_subscription.subscription-resource.id
        name = "redis-docs-db"
        memory_limit_in_gb = 2
        data_persistence = "aof-every-write"
        throughput_measurement_by = "operations-per-second"
        throughput_measurement_value = 20000
        replication = true
    
        modules = [
        {
             name = "RedisJSON"
        }
        ]
    
        alert {
        name = "dataset-size"
        value = 40
        }
       depends_on = [rediscloud_subscription.subscription-resource]
    
    }
    
  4. 运行 terraform plan 以检查是否存在任何语法错误。

    $ terraform plan
    data.rediscloud_payment_method.card: Reading...
    data.rediscloud_payment_method.card: Read complete after 1s [id=8859]
    
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following
    symbols:
    + create
    
    Terraform will perform the following actions:
    
        # rediscloud_subscription.subscription-resource will be created
        + resource "rediscloud_subscription" "subscription-resource" {
            [...]
        }
    
        # rediscloud_subscription_database.database-resource will be created
        + resource "rediscloud_subscription_database" "database-resource" {
            [...]
        }
    
    Plan: 2 to add, 0 to change, 0 to destroy.
    
  5. 运行 terraform apply 应用更改,并在提示时输入 yes 进行确认。

    这将需要一些时间。在创建订阅和数据库时,您将在终端中看到消息。

    rediscloud_subscription.subscription-resource: Creating...
    rediscloud_subscription.subscription-resource: Still creating... [10s elapsed]
    rediscloud_subscription.subscription-resource: Still creating... [20s elapsed]
    rediscloud_subscription.subscription-resource: Still creating... [30s elapsed]
    

    配置完成后,您将在终端中看到一条消息。

    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
    

    查看Redis Cloud 控制台,验证您的订阅和数据库是否已创建。

  6. 如果您想移除这些示例资源,请运行 terraform destroy

更多信息

评价此页面
返回顶部 ↑