模板内容
模板示例中包含main.tf和variables.tf两个文件。其中,resource定义要创建的资源(专有网络、交换机、安全组和ECS实例)、output定义实例创建以后用户可以看到的输出内容(专有网络ID、交换机ID和ECS实例ID),variable通过AllowedValues定义了可选的ECS实例规格。
说明
main.tf中instance_type = var.instance_type表示ECS实例规格引用了variables.tf中的规格参数。
main.tf中定义的可用区为cn-beijing-h,有权限的终端用户启动产品时需要选择实例所在的地域为华北2(北京),避免可用区和地域不一致导致实例创建失败。
main.tf
resource "alicloud_vpc" "vpc" {
name = "tf_test_foo"
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-beijing-h"
}
resource "alicloud_security_group" "default" {
name = "default"
vpc_id = alicloud_vpc.vpc.id
}
resource "alicloud_instance" "instance" {
# cn-beijing
availability_zone = "cn-beijing-h"
security_groups = alicloud_security_group.default.*.id
# series III
instance_type = var.instance_type
system_disk_category = "cloud_efficiency"
image_id = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
instance_name = "test_foo"
vswitch_id = alicloud_vswitch.vsw.id
internet_max_bandwidth_out = 10
}
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.default.id
cidr_ip = "0.0.0.0/0"
}
output "vpc_id" {
value = alicloud_vpc.vpc.id
description = "The ID of the VPC."
}
output "vswitch_id" {
value = alicloud_vswitch.vsw.id
description = "The ID of the switch."
}
output "instance_id" {
value = alicloud_instance.instance.id
description = "The ECS instance ID."
}
variables.tf
variable "instance_type" {
type = string
description = < { "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType", "AllowedValues": ["ecs.s6-c1m1.small", "ecs.s6-c1m2.small", "ecs.s6-c1m2.large", "ecs.s6-c1m2.xlarge", "ecs.s6-c1m2.2xlarge"], "Label": "ECS实例规格" } EOT }