本文为您介绍如何通过Terraform创建伸缩组、伸缩配置、伸缩规则等弹性伸缩资源。
前提条件
在使用Terraform之前,请您确保完成以下操作:
- 您已拥有一个阿里云账号和访问密钥(AccessKey)。请在阿里云控制台的AccessKey管理页面上查看您的AccessKey。如需创建AccessKey,具体操作,请参见创建AccessKey。
- 您已安装并配置了Terraform。如需安装Terraform,具体操作,请参见在本地安装和配置Terraform和在Cloud Shell中使用Terraform。
背景信息
- Terraform是一种开源工具,用于安全高效地预览,配置和管理云基础架构和资源。主要体现在可以对基础设施进行编码,利用代码来进行资源管理(例如创建、删除、查找或修改资源)。更多信息,请参见Terraform概述。
- Terraform命令包括terraform apply和terraform show等资源管理命令、状态管理命令和其他命令,更多信息,请参见资源管理常用命令。其中:
- terraform apply:该命令用于实际资源的新建和变更操作,为了安全起见,在命令运行过程中增加了人工交互的过程,即需要手动确认是否继续。
- terraform show:该命令用于展示当前state文件中所有被管理的资源及其所有属性值。
操作步骤
本操作以通过Terraform创建伸缩组、伸缩配置和伸缩规则为例,管理其他弹性伸缩资源请参考该方法进行。
操作示例
通过Terraform创建伸缩组、伸缩配置以及伸缩规则的操作示例如下所示:
resource "alicloud_vpc" "vpc" {
name = "tf_test_vpc"
cidr_block = "172.16.0.0/12"
}
resource "alicloud_vswitch" "vsw" {
vpc_id = alicloud_vpc.vpc.id
cidr_block = "172.16.0.0/21"
availability_zone = "cn-hangzhou-b"
}
resource "alicloud_security_group" "security" {
name = "tf_test_security"
vpc_id = alicloud_vpc.vpc.id
}
resource "alicloud_security_group_rule" "allow_all_tcp" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.security.id
cidr_ip = "0.0.0.0/0"
}
resource "alicloud_ess_scaling_group" "group" {
scaling_group_name="tf_test_scalinggroup"
min_size=0
max_size=100
vswitch_ids=[alicloud_vswitch.vsw.id]
}
resource "alicloud_ess_scaling_configuration" "configuration" {
scaling_group_id = alicloud_ess_scaling_group.group.id
instance_type = "ecs.hfc7.xlarge"
image_id = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
security_group_id = alicloud_security_group.security.id
scaling_configuration_name = "tf_test_scalingconfiguration"
system_disk_category = "cloud_essd"
spot_strategy = "SpotWithPriceLimit"
force_delete = true
}
resource "alicloud_ess_scaling_rule" "rule" {
scaling_group_id = alicloud_ess_scaling_group.group.id
adjustment_type = "QuantityChangeInCapacity"
adjustment_value = 1
}