創建一臺ECS實例
本文介紹如何使用Terraform創建一臺ECS實例。
本教程所含示例代碼支持一鍵運行,您可以直接運行代碼。一鍵運行
前提條件
在開始之前,請您確保完成以下操作:
使用Terraform,您需要一個阿里云賬號和訪問密鑰(AccessKey)。 請在阿里云控制臺中的AccessKey管理頁面上創建和查看您的AccessKey。
已經安裝并配置了Terraform,具體操作請參見在本地安裝和配置Terraform和在Cloud Shell中使用Terraform。
操作步驟
創建專有網絡和交換機。
創建terraform.tf文件,輸入以下內容,并保存在當前的執行目錄中。
variable "region" { default = "cn-beijing" } variable "instance_type" { default = "ecs.n4.large" } provider "alicloud" { region = var.region } data "alicloud_zones" "default" { available_disk_category = "cloud_efficiency" available_resource_creation = "VSwitch" available_instance_type = var.instance_type } resource "alicloud_vpc" "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" zone_id = data.alicloud_zones.default.zones.0.id }
運行
terraform init
進行初始化。運行
terraform apply
開始創建。運行
terraform show
查看已創建的專有網絡和交換機。您也可以登錄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 = "intranet" 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 = data.alicloud_zones.default.zones.0.id security_groups = alicloud_security_group.default.*.id # series III instance_type = var.instance_type system_disk_category = "cloud_efficiency" image_id = var.image_id instance_name = "test_foo" vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = 10 } output "public_ip" { value = alicloud_instance.instance.public_ip }
說明在上述示例中,指定了
internet_max_bandwidth_out= 10
,因此會自動為實例分配一個公網IP,輸出到 output 中。詳細的參數解釋請參見 阿里云參數說明。
運行
terraform apply
開始創建。運行
terraform show
查看已創建的ECS實例。運行ssh root@<publicip>,并輸入設定好的密碼來訪問ECS實例。
操作樣例
當前示例代碼支持一鍵運行,您可以直接運行代碼。一鍵運行
variable "region" {
default = "cn-beijing"
}
variable "instance_type" {
default = "ecs.n4.large"
}
variable "image_id" {
default = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
}
provider "alicloud" {
region = var.region
}
data "alicloud_zones" "default" {
available_disk_category = "cloud_efficiency"
available_resource_creation = "VSwitch"
available_instance_type = var.instance_type
}
resource "alicloud_vpc" "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"
zone_id = data.alicloud_zones.default.zones.0.id
}
resource "alicloud_security_group" "default" {
name = "default"
vpc_id = alicloud_vpc.vpc.id
}
resource "alicloud_instance" "instance" {
# cn-beijing
availability_zone = data.alicloud_zones.default.zones.0.id
security_groups = alicloud_security_group.default.*.id
# series III
instance_type = var.instance_type
system_disk_category = "cloud_efficiency"
image_id = var.image_id
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"
}