Terraform是一种开源工具,用于安全高效地预览、配置和管理云基础架构和资源。您可以使用Terraform管理DTS的部分资源。本文为您介绍如何通过Terraform,购买一个DTS同步实例。
支持资源列表
支持Terraform编排和使用DTS的部分资源和数据源清单,如下所示。若您还不了解Terraform,请参见什么是Terraform。
Resource
alicloud_dts_consumer_channel:为DTS订阅任务新增消费组
alicloud_dts_instance:购买DTS实例
alicloud_dts_job_monitor_rule:创建或修改任务告警规则
alicloud_dts_migration_instance:购买DTS迁移实例
alicloud_dts_migration_job:配置DTS迁移任务
alicloud_dts_subscription_job:配置DTS订阅任务
alicloud_dts_synchronization_instance:购买DTS同步实例
alicloud_dts_synchronization_job:配置DTS同步任务
Data Source
alicloud_dts_consumer_channels:查询订阅任务的消费组详情
alicloud_dts_instances:查询一个DTS实例详情
alicloud_dts_migration_jobs:查询一个数据迁移任务的详情
alicloud_dts_subscription_jobs:查询一个数据订阅任务的详情
alicloud_dts_synchronization_jobs:查询一个数据同步任务的详情
操作步骤
创建RAM用户并完成授权
若您已创建RAM用户并完成授权,可跳过此步骤。
创建RAM用户:
访问RAM用户列表,单击创建用户。
设置登录名称。
例如,填入
dts_testuser
。访问方式选择为OpenAPI 调用访问。
说明若您需要在云命令行(Cloud Shell)中使用Terraform,访问方式还需要选择控制台访问。
单击确定,创建RAM用户。
说明若您需要使用本地安装的Terraform,在RAM用户创建成功后,还需要保存AccessKey ID与AccessKey Secret信息。
完成授权:
访问RAM用户列表,单击目标RAM用户操作列的添加权限。
在权限策略下方的文本框中,搜索并选择AliyunDTSFullAccess策略。
说明AliyunDTSFullAccess策略拥有DTS所有读写权限,授权了该策略的子账号可以进行DTS实例的购买、配置、管理等操作。您也可以按需进行自定义策略,更多信息请参见数据传输自定义权限策略参考。
若您需要在云命令行(Cloud Shell)中使用Terraform,还需要选择AliyunCloudShellFullAccess策略。
单击确认新增授权,完成授权操作。
安装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中,运行命令的具体方式可能会有所不同。
初始化加载模块。
terraform init
返回如下信息,则表示初始化成功。
Terraform has been successfully initialized!
验证模板语法是否正确。
terraform validate
返回如下信息,则表示模板语法正确。
Success! The configuration is valid.
创建执行计划。
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.
部署模板。
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.
同步实例购买成功后,您可以通过OpenAPI、SDK或者在DTS控制台,查看该同步实例。