ここでは、Terraform を使用して複数の ECS インスタンスをまとめて作成する方法について説明します。

手順

  1. VPC と VSwitch の作成
    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 apply を実行して、作成を開始します。

    3. 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        = "1/65535"
        priority          = 1
        security_group_id = "${alicloud_security_group.default.id}"
        cidr_ip           = "0.0.0.0/0"
      }
    2. terraform apply を実行して、作成を開始します。

    3. terraform show を実行して、作成したセキュリティグループとセキュリティグループのルールを表示します。

      ECS コンソールにログインして、セキュリティグループとセキュリティグループのルールを表示します。

  3. モジュールを使用して複数の 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_bandwidth_out = 10 が指定されています。 そのため、インスタンスにはパブリック IP が自動的に割り当てられます。
      • パラメーターの詳細な説明については『パラメーターの説明』をご参照ください。
    2. terraform apply を実行して、作成を開始します。

    3. terraform show を実行して、作成した ECS インスタンスを表示します。

    4. 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"
}