本文介绍如何使用Terraform模块批量创建多台ECS实例。

操作步骤

  1. 创建VPC网络和交换机。
    本示例中Terraform的版本为0.11。
    说明 Terraform 0.11及更早的版本,变量表达式使用示例为 vpc_id = "${alicloud_vpc.vpc.id}"。Terraform 0.12版本进行了更新,变量表达式使用示例为 vpc_id = "alicloud_vpc.vpc.id"。请根据您安装的版本修改相应的变量表达式的格式。
    1. 创建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"
      }
    2. 运行terraform init初始化环境。
    3. 运行terraform plan查看资源。
    4. 确认资源无误后,运行terraform apply开始创建。
    5. 运行terraform show查看已创建的VPC和VSwitch。
      您也可以登录VPC控制台查看VPC和VSwitch的属性。
  2. 创建安全组,并将安全组作用于上一步创建的VPC中。
    1. 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        = "22/22"
        priority          = 1
        security_group_id = "${alicloud_security_group.default.id}"
        cidr_ip           = "0.0.0.0/0"
      }
    2. 运行terraform plan查看资源。
    3. 确认资源无误后,运行terraform apply开始创建。
    4. 运行terraform show查看已创建的安全组和安全组规则。
      您也可以登录ECS控制台查看安全组和安全组规则。
  3. 使用Module创建多台ECS实例。在本示例中,创建3台ECS实例。
    1. 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。
      • 详细的参数解释请参见参数说明
    2. 运行terraform plan查看资源。
    3. 确认资源无误后,运行terraform apply开始创建。
    4. 运行terraform show查看已创建的ECS实例。
    5. 运行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        = "22/22"
  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"
}