ここでは、Terraform を使用して複数の ECS インスタンスをまとめて作成する方法について説明します。
手順
- VPC と VSwitch の作成
-
"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 コンソールにログインして、セキュリティグループとセキュリティグループのルールを表示します。
- モジュールを使用して複数の 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_bandwidth_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"
}