本文介紹如何使用Terraform模組大量建立多台ECS執行個體。
操作步骤
- 建立VPC網路和交換器。
-
建立terraform.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-b"
}
-
運行terraform apply
開始建立。
-
運行terraform show
查看已建立的VPC和VSwitch。
您也可以登入VPC控制台查看VPC和VSwitch的屬性。
- 建立安全性群組,並將安全性群組作用於上一步建立的VPC中。
-
在
terraform.tf檔案中增加以下內容。
resource "alicloud_security_group" "default" {
name = "default"
vpc_id = "${alicloud_vpc.vpc.id}"
}
resource "alicloud_security_group_rule" "allow_all_tcp" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "internet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = "${alicloud_security_group.default.id}"
cidr_ip = "0.0.0.0/0"
}
-
運行terraform apply
開始建立。
-
運行terraform show
查看已建立的安全性群組和安全性群組規則。
你也可以登入ECS控制台查看安全性群組和安全性群組規則。
- 使用Module建立多台ECS執行個體。在本樣本中,建立3台ECS執行個體。
-
在
terraform.tf檔案中增加以下內容。
module "tf-instances" {
source = "alibaba/ecs-instance/alicloud"
vswitch_id = "${alicloud_vswitch.vsw.id}"
group_ids = ["${alicloud_security_group.default.*.id}"]
availability_zone = "cn-beijing-b"
disk_category = "cloud_ssd"
disk_name = "my_module_disk"
disk_size = "50"
number_of_disks = 7
instance_name = "my_module_instances_"
host_name = "sample"
internet_charge_type = "PayByTraffic"
number_of_instances = "3"
password="User@123"
}
说明
- 在上述樣本中,指定了
internet_max_bandwith_out = 10
,因此會自動為執行個體分配一個公網IP。
- 詳細的參數解釋請參見 參數說明。
-
運行terraform apply
開始建立。
-
運行terraform show
查看已建立的ECS執行個體。
-
運行ssh root@<publicip>,並輸入密碼來訪問ECS執行個體。
操作样例
provider "alicloud" {}
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-b"
}
resource "alicloud_security_group" "default" {
name = "default"
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.default.id}"
cidr_ip = "0.0.0.0/0"
}
module "tf-instances" {
source = "alibaba/ecs-instance/alicloud"
vswitch_id = "${alicloud_vswitch.vsw.id}"
group_ids = ["${alicloud_security_group.default.*.id}"]
availability_zone = "cn-beijing-b"
disk_category = "cloud_ssd"
disk_name = "my_module_disk"
disk_size = "50"
number_of_disks = 7
instance_name = "my_module_instances_"
host_name = "sample"
internet_charge_type = "PayByTraffic"
number_of_instances = "3"
password="User@123"
}