ここでは、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 コンソールにログインして、セキュリティグループとセキュリティグループのルールを表示することもできます。
- ECS インスタンスを作成します。
-
ファイル "
terraform.tf" に、以下を追加します。
resource "alicloud_instance" "instance" {
# cn-beijing
availability_zone = "cn-beijing-b"
security_groups = ["${alicloud_security_group.default. *.id}"]
# series III
instance_type = "ecs.n2.small"
system_disk_category = "cloud_efficiency"
image_id = "ubuntu_140405_64_40G_cloudinit_20161115.vhd"
instance_name = "test_foo"
vswitch_id = "${alicloud_vswitch.vsw.id}"
internet_max_bandwidth_out = 10
password = "<replace_with_your_password>"
}
注
- 上記の例では、
internet_max_bandwidth_out = 10
が指定されています。 そのため、インスタンスにはパブリック IP が自動的に割り当てられます。
- パラメーターの詳細な説明については、『 Alibaba Cloud のパラメーターの説明』をご参照ください。
-
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_instance" "instance" {
# cn-beijing
availability_zone = "cn-beijing-b"
security_groups = ["${alicloud_security_group.default. *.id}"]
# series III
instance_type = "ecs.n2.small"
system_disk_category = "cloud_efficiency"
image_id = "ubuntu_140405_64_40G_cloudinit_20161115.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"
}