本文为您介绍RAM用户如何通过Terraform创建Tair(企业版)实例,并在新实例中创建一个数据库账号。
创建RAM用户并完成授权
如您已创建RAM用户且已完成授权,可跳过此步骤。
创建RAM用户:
访问RAM用户列表,单击创建用户。
设置登录名称为redis-terraform-test,选择访问方式为OpenAPI 调用访问。
单击确定,创建RAM用户并保存AccessKey ID与AccessKey Secret信息。
完成授权:
操作步骤
安装Terraform
在本地安装和配置Terraform,请参见在本地安装和配置Terraform。
安装完成后,您可以打开命令行终端,输入
terraform version
,看到返回版本信息表示已成功安装。如果您不想安装Terraform,可以使用阿里云提供的在线服务Cloud Shell,其中内置了Terraform的运行环境。
编写模板
创建一个名为main.tf
文件,填入以下内容,用于创建一个Tair(企业版)实例,并在新实例中创建一个数据库账号。
# 载入alicloud插件,并指定地域为华东2(上海)。
provider "alicloud" {
region = "cn-shanghai"
}
# 定义一个函数,用于作为实例名称。
variable "name" {
default = "tf-example"
}
# 查询华东2(上海)地域中可创建Tair内存型的可用区。
data "alicloud_kvstore_zones" "default" {
product_type = "Tair_rdb"
}
# 创建一个VPC实例。
resource "alicloud_vpc" "default" {
vpc_name = var.name
cidr_block = "10.4.0.0/16"
}
# 在指定VPC、可用区中创建一个交换机实例。
resource "alicloud_vswitch" "default" {
vswitch_name = var.name
cidr_block = "10.4.0.0/24"
vpc_id = alicloud_vpc.default.id
zone_id = data.alicloud_kvstore_zones.default.zones.0.id
}
# 创建一个Tair内存型实例。
resource "alicloud_redis_tair_instance" "default" {
tair_instance_name = var.name
payment_type = "Subscription"
instance_class = "tair.rdb.with.proxy.2g"
instance_type = "tair_rdb"
period = "1"
shard_count = "2"
zone_id = data.alicloud_kvstore_zones.default.zones.0.id
vpc_id = alicloud_vpc.default.id
vswitch_id = alicloud_vswitch.default.id
}
# 在新实例中创建一个数据库账号。
resource "alicloud_kvstore_account" "default" {
account_name = "tfexamplename"
account_password = "YourPassword_123"
instance_id = alicloud_redis_tair_instance.default.id
}
更多关于alicloud_redis_tair_instance
资源类型的配置信息,请参见Redis And Memcache (KVStore)。
运行模板
本示例以Cloud Shell操作为例,在其他操作系统中,运行命令的具体方式可能会有所不同。
在main.tf文件所在的目录下,执行
terraform init
命令,初始化、加载模块。预计返回:
Initializing the backend... Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.227.0... The following providers do not have any version constraints in configuration, so the latest version was installed. To prevent automatic upgrades to new major versions that may contain breaking changes, it is recommended to add version = "..." constraints to the corresponding provider blocks in configuration, with the constraint strings suggested below. * provider.alicloud: version = "~> 1.227" Warning: registry.terraform.io: For users on Terraform 0.13 or greater, this provider has moved to aliyun/alicloud. Please update your source in required_providers. 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. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
执行
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_kvstore_zones.default: 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_kvstore_account.default will be created + resource "alicloud_kvstore_account" "default" { + account_name = "tfexamplename" + account_password = (sensitive value) + account_privilege = "RoleReadWrite" + account_type = "Normal" + id = (known after apply) + instance_id = (known after apply) + status = (known after apply) } # alicloud_redis_tair_instance.default will be created + resource "alicloud_redis_tair_instance" "default" { + create_time = (known after apply) + engine_version = (known after apply) + id = (known after apply) + instance_class = "tair.rdb.with.proxy.2g" + instance_type = "tair_rdb" + node_type = (known after apply) + payment_type = "Subscription" + period = 1 + port = (known after apply) + resource_group_id = (known after apply) + shard_count = 2 + ssl_enabled = (known after apply) + status = (known after apply) + storage_size_gb = (known after apply) + tair_instance_name = "tf-example" + vpc_id = (known after apply) + vswitch_id = (known after apply) + zone_id = "cn-shanghai-b" } # alicloud_vpc.default will be created + resource "alicloud_vpc" "default" { + cidr_block = "10.4.0.0/16" + create_time = (known after apply) + id = (known after apply) + ipv6_cidr_block = (known after apply) + ipv6_cidr_blocks = (known after apply) + name = (known after apply) + resource_group_id = (known after apply) + route_table_id = (known after apply) + router_id = (known after apply) + router_table_id = (known after apply) + secondary_cidr_blocks = (known after apply) + status = (known after apply) + user_cidrs = (known after apply) + vpc_name = "tf-example" } # alicloud_vswitch.default will be created + resource "alicloud_vswitch" "default" { + availability_zone = (known after apply) + cidr_block = "10.4.0.0/24" + create_time = (known after apply) + id = (known after apply) + ipv6_cidr_block = (known after apply) + ipv6_cidr_block_mask = (known after apply) + name = (known after apply) + status = (known after apply) + vpc_id = (known after apply) + vswitch_name = "tf-example" + zone_id = "cn-shanghai-b" } Plan: 4 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
命令,部署模板。部分返回信息:
Plan: 4 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:
此时,您需要输入
yes
即可变更资源。输入后的返回信息如下:alicloud_vpc.default: Creating... alicloud_vpc.default: Creation complete after 6s [id=vpc-uf6****1k4o4fqifukqfc] alicloud_vswitch.default: Creating... alicloud_vswitch.default: Creation complete after 4s [id=vsw-uf6****cajhh00xznkwqm] alicloud_redis_tair_instance.default: Creating... alicloud_redis_tair_instance.default: Still creating... [10s elapsed] alicloud_redis_tair_instance.default: Still creating... [20s elapsed] ... alicloud_redis_tair_instance.default: Still creating... [7m0s elapsed] alicloud_redis_tair_instance.default: Still creating... [7m10s elapsed] alicloud_redis_tair_instance.default: Creation complete after 7m18s [id=r-uf6****4c367b1q6ty] alicloud_kvstore_account.default: Creating... alicloud_kvstore_account.default: Still creating... [10s elapsed] ... alicloud_kvstore_account.default: Still creating... [1m0s elapsed] alicloud_kvstore_account.default: Creation complete after 1m1s [id=r-uf6****4c367b1q6ty:tfexamplename] Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
创建完成后,您可以通过OpenAPI、SDK或者在Redis控制台,查看新创建的实例。