Terraform集成示例

Terraform是一种开源工具,用于安全高效地预览、配置和管理云基础架构和资源。您可以使用Terraform管理DTS的部分资源。本文为您介绍如何通过Terraform,购买一个DTS同步实例。

支持资源列表

支持Terraform编排和使用DTS的部分资源和数据源清单,如下所示。若您还不了解Terraform,请参见什么是Terraform

操作步骤

创建RAM用户并完成授权

若您已创建RAM用户并完成授权,可跳过此步骤。

  1. 创建RAM用户:

    1. 访问RAM用户列表,单击创建用户

    2. 设置登录名称

      例如,填入dts_testuser

    3. 访问方式选择为OpenAPI 调用访问

      说明

      若您需要在云命令行(Cloud Shell)中使用Terraform,访问方式还需要选择控制台访问

    4. 单击确定,创建RAM用户。

      说明

      若您需要使用本地安装的Terraform,在RAM用户创建成功后,还需要保存AccessKey ID与AccessKey Secret信息。

  2. 完成授权:

    1. 访问RAM用户列表,单击目标RAM用户操作列的添加权限

    2. 权限策略下方的文本框中,搜索并选择AliyunDTSFullAccess策略。

      说明
      • AliyunDTSFullAccess策略拥有DTS所有读写权限,授权了该策略的子账号可以进行DTS实例的购买、配置、管理等操作。您也可以按需进行自定义策略,更多信息请参见数据传输自定义权限策略参考

      • 若您需要在云命令行(Cloud Shell)中使用Terraform,还需要选择AliyunCloudShellFullAccess策略。

    3. 单击确认新增授权,完成授权操作。

安装Terraform

  • 在本地安装和配置Terraform,请参见在本地安装和配置Terraform

    安装完成后,您可以打开命令行终端,输入terraform version,看到返回版本信息表示已成功安装。

  • 若您不想安装Terraform,可以使用阿里云提供的在线服务Cloud Shell,其中内置了Terraform的运行环境。

    更多信息,请参见在Cloud Shell中使用Terraform

编写模板

创建一个名为main.tf文件,填入如下内容。

说明

在Cloud Shell中,可以使用vim main.tf命令进行创建。

data "alicloud_regions" "default" {
  current = true
}
resource "alicloud_dts_synchronization_instance" "default" {
  payment_type                     = "PayAsYouGo"
  source_endpoint_engine_name      = "MySQL"
  source_endpoint_region           = "cn-hangzhou"
  destination_endpoint_engine_name = "MySQL"
  destination_endpoint_region      = "cn-hangzhou"
  instance_class                   = "small"
  sync_architecture                = "oneway"
}

更多关于alicloud_dts_synchronization_instance资源类型的配置信息,请参见资源详情

说明

如果您在运行模板的时候遇到参数不存在的报错,可以执行terraform version命令确认当前版本与资源详情的最新版是否一致。如果不是最新版本,您需要在main.tf文件首行添加provider "alicloud" {version = "~> v*.***.*"}指定版本,并将v*.***.*替换为最新版本号,例如provider "alicloud" {version = "~> v1.227.0"}

运行模板

说明

本示例以在Cloud Shell中操作为例。在本地安装的Terraform中,运行命令的具体方式可能会有所不同。

  1. 初始化加载模块。

    terraform init

    返回如下信息,则表示初始化成功。

    Terraform has been successfully initialized!
  2. 验证模板语法是否正确。

    terraform validate

    返回如下信息,则表示模板语法正确。

    Success! The configuration is valid.
  3. 创建执行计划。

    terraform plan

    返回如下信息,则表示执行计划创建成功。

    Refreshing Terraform state in-memory prior to plan...
    The refreshed state will be used to calculate this plan, but will not be
    persisted to local or remote state storage.
    
    data.alicloud_regions.example1: Refreshing state...
    
    ------------------------------------------------------------------------
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # alicloud_dts_synchronization_instance.example1 will be created
      + resource "alicloud_dts_synchronization_instance" "example1" {
          + destination_endpoint_engine_name = "MySQL"
          + destination_endpoint_region      = "cn-hangzhou"
          + id                               = (known after apply)
          + instance_class                   = "small"
          + payment_type                     = "PayAsYouGo"
          + source_endpoint_engine_name      = "MySQL"
          + source_endpoint_region           = "cn-hangzhou"
          + status                           = (known after apply)
          + sync_architecture                = "oneway"
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.

    若出现如下返回信息,可以忽略不处理。

    Note: You didn't specify an "-out" parameter to save this plan, so Terraform
    can't guarantee that exactly these actions will be performed if
    "terraform apply" is subsequently run.
  4. 部署模板。

    terraform apply
    说明

    如需释放使用当前模板创建的实例,请执行terraform destroy命令。

    当返回如下信息时,输入yes即可购买同步实例。

    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: 

    返回如下信息,则表示同步实例购买成功。

    alicloud_dts_synchronization_instance.default: Creating...
    alicloud_dts_synchronization_instance.default: Creation complete after 4s [id=dtsv8gj741y12t****]
    
    Apply complete! Resources: 1 added, 0 changed, 1 destroyed.
  5. 同步实例购买成功后,您可以通过OpenAPI、SDK或者在DTS控制台,查看该同步实例。

    购买同步实例后,您还需要进行配置,以完成源库到目标库的数据同步。更多信息,请参见配置同步实例同步方案概览