1. 创建ecs
定义一台 ECS
实例
- 可用区
- 安全组
- 实例规格
- 系统盘类型
- 名称描述
- 镜像
- 实例名称
- 交换机
- 带宽
- 付费类型
- 账户密码
1.2 按量付费✅
vim main.tf
#创建vpc
resource "alicloud_vpc" "vpc" {
vpc_name = "vpc_1"
cidr_block = "10.0.0.0/16"
}
# 创建vswitch
# alicloud_vswitch是阿里云的资源字段,vsw_1字段是tf文件中的自定义唯一资源名称,vswitch_name字段是在阿里云上的自定义备注名
resource "alicloud_vswitch" "vsw_1" {
vswitch_name = "vsw_aliyun1"
vpc_id = alicloud_vpc.vpc.id
cidr_block = "10.0.0.0/24"
zone_id = "cn-shanghai-b"
}
#新建安全组
resource "alicloud_security_group" "nsg1" {
security_group_name = "lyc_aliyun_nsg1"
vpc_id = alicloud_vpc.vpc.id
}
#将nsg_rule1、nsg_rule2加入安全组lyc_aliyun_nsg1中
resource "alicloud_security_group_rule" "nsg_rule1" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.nsg1.id
cidr_ip = "0.0.0.0/0"
}
#创建ECS实例
resource "alicloud_instance" "instance" {
# cn-shanghai
availability_zone = "cn-shanghai-b"
security_groups = ["${alicloud_security_group.nsg1.id}"]
instance_type = "ecs.e-c1m1.large" #若实例规格下线,请使用目前售卖中的实例规格
system_disk_category = "cloud_essd" #若磁盘规格下线,请使用目前售卖中的实例规格
system_disk_size = 40 # 系统盘大小,单位为GB
image_id = "centos_7_9_x64_20G_alibase_20220824.vhd"
instance_name = "lyc-test"
vswitch_id = alicloud_vswitch.vsw_1.id
internet_max_bandwidth_out = 1 # 出网带宽,单位为Mbps
password = "5jejYWzSjZhWQc7G22"
}
#创建vpc
resource "alicloud_vpc" "vpc" {
vpc_name = "vpc_1"
cidr_block = "10.0.0.0/16"
}
# 创建vswitch
# alicloud_vswitch是阿里云的资源字段,vsw_1字段是tf文件中的自定义唯一资源名称,vswitch_name字段是在阿里云上的自定义备注名
resource "alicloud_vswitch" "vsw_1" {
vswitch_name = "vsw_aliyun1"
vpc_id = alicloud_vpc.vpc.id
cidr_block = "10.0.0.0/24"
zone_id = "cn-shanghai-b"
}
#新建安全组
resource "alicloud_security_group" "nsg1" {
security_group_name = "lyc_aliyun_nsg1"
vpc_id = alicloud_vpc.vpc.id
}
#将nsg_rule1、nsg_rule2加入安全组lyc_aliyun_nsg1中
resource "alicloud_security_group_rule" "nsg_rule1" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.nsg1.id
cidr_ip = "0.0.0.0/0"
}
#创建ECS实例
resource "alicloud_instance" "instance" {
# cn-shanghai
availability_zone = "cn-shanghai-b"
security_groups = ["${alicloud_security_group.nsg1.id}"]
instance_type = "ecs.e-c1m1.large" #若实例规格下线,请使用目前售卖中的实例规格
system_disk_category = "cloud_essd" #若磁盘规格下线,请使用目前售卖中的实例规格
system_disk_size = 40 # 系统盘大小,单位为GB
image_id = "centos_7_9_x64_20G_alibase_20220824.vhd"
instance_name = "lyc-test"
vswitch_id = alicloud_vswitch.vsw_1.id
internet_max_bandwidth_out = 1 # 出网带宽,单位为Mbps
password = "5jejYWzSjZhWQc7G22"
}
1.3 创建多台ecs✅
vi main.tf
yaml
#创建vpc
resource "alicloud_vpc" "vpc" {
vpc_name = "vpc_1"
cidr_block = "10.0.0.0/16"
}
# 创建vswitch
# alicloud_vswitch是阿里云的资源字段,vsw_1字段是tf文件中的自定义唯一资源名称,vswitch_name字段是在阿里云上的自定义备注名
resource "alicloud_vswitch" "vsw_1" {
vswitch_name = "vsw_aliyun1"
vpc_id = alicloud_vpc.vpc.id
cidr_block = "10.0.0.0/24"
zone_id = "cn-shanghai-b"
}
#新建安全组
resource "alicloud_security_group" "nsg1" {
security_group_name = "lyc_aliyun_nsg1"
vpc_id = alicloud_vpc.vpc.id
}
#将nsg_rule1、nsg_rule2加入安全组lyc_aliyun_nsg1中
resource "alicloud_security_group_rule" "nsg_rule1" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.nsg1.id
cidr_ip = "0.0.0.0/0"
}
#创建ECS实例
resource "alicloud_instance" "instance" {
# cn-shanghai
count = 2 # 创建2台ECS实例
availability_zone = "cn-shanghai-b"
security_groups = ["${alicloud_security_group.nsg1.id}"]
instance_type = "ecs.e-c1m1.large" #若实例规格下线,请使用目前售卖中的实例规格
system_disk_category = "cloud_essd" #若磁盘规格下线,请使用目前售卖中的实例规格
system_disk_size = 40 # 系统盘大小,单位为GB
image_id = "centos_7_9_x64_20G_alibase_20220824.vhd"
instance_name = "lyc-test-${count.index+1}"
vswitch_id = alicloud_vswitch.vsw_1.id
internet_max_bandwidth_out = 1 # 出网带宽,单位为Mbps
password = "5jejYWzSjZhWQc7G22"
}
#创建vpc
resource "alicloud_vpc" "vpc" {
vpc_name = "vpc_1"
cidr_block = "10.0.0.0/16"
}
# 创建vswitch
# alicloud_vswitch是阿里云的资源字段,vsw_1字段是tf文件中的自定义唯一资源名称,vswitch_name字段是在阿里云上的自定义备注名
resource "alicloud_vswitch" "vsw_1" {
vswitch_name = "vsw_aliyun1"
vpc_id = alicloud_vpc.vpc.id
cidr_block = "10.0.0.0/24"
zone_id = "cn-shanghai-b"
}
#新建安全组
resource "alicloud_security_group" "nsg1" {
security_group_name = "lyc_aliyun_nsg1"
vpc_id = alicloud_vpc.vpc.id
}
#将nsg_rule1、nsg_rule2加入安全组lyc_aliyun_nsg1中
resource "alicloud_security_group_rule" "nsg_rule1" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.nsg1.id
cidr_ip = "0.0.0.0/0"
}
#创建ECS实例
resource "alicloud_instance" "instance" {
# cn-shanghai
count = 2 # 创建2台ECS实例
availability_zone = "cn-shanghai-b"
security_groups = ["${alicloud_security_group.nsg1.id}"]
instance_type = "ecs.e-c1m1.large" #若实例规格下线,请使用目前售卖中的实例规格
system_disk_category = "cloud_essd" #若磁盘规格下线,请使用目前售卖中的实例规格
system_disk_size = 40 # 系统盘大小,单位为GB
image_id = "centos_7_9_x64_20G_alibase_20220824.vhd"
instance_name = "lyc-test-${count.index+1}"
vswitch_id = alicloud_vswitch.vsw_1.id
internet_max_bandwidth_out = 1 # 出网带宽,单位为Mbps
password = "5jejYWzSjZhWQc7G22"
}
使用count = 2 # 创建2台ECS实例,instance_name = "lyc-test-${count.index+1}"
${} 为函数
其他方式,复制多个 instance 资源,不推荐这个方式
1.4 挂载数据盘✅
vim main.tf
yaml
#创建vpc
resource "alicloud_vpc" "vpc" {
vpc_name = "vpc_1"
cidr_block = "10.0.0.0/16"
}
# 创建vswitch
# alicloud_vswitch是阿里云的资源字段,vsw_1字段是tf文件中的自定义唯一资源名称,vswitch_name字段是在阿里云上的自定义备注名
resource "alicloud_vswitch" "vsw_1" {
vswitch_name = "vsw_aliyun1"
vpc_id = alicloud_vpc.vpc.id
cidr_block = "10.0.0.0/24"
zone_id = "cn-shanghai-b"
}
#新建安全组
resource "alicloud_security_group" "nsg1" {
security_group_name = "lyc_aliyun_nsg1"
vpc_id = alicloud_vpc.vpc.id
}
#将nsg_rule1、nsg_rule2加入安全组lyc_aliyun_nsg1中
resource "alicloud_security_group_rule" "nsg_rule1" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.nsg1.id
cidr_ip = "0.0.0.0/0"
}
#创建ECS实例
resource "alicloud_instance" "instance" {
# cn-shanghai
#count = 2 # 创建2台ECS实例,默认不写count,则创建1台ECS实例
availability_zone = "cn-shanghai-b"
security_groups = ["${alicloud_security_group.nsg1.id}"]
instance_type = "ecs.e-c1m1.large" #若实例规格下线,请使用目前售卖中的实例规格
system_disk_category = "cloud_essd" #若磁盘规格下线,请使用目前售卖中的实例规格
system_disk_size = 40 # 系统盘大小,单位为GB
image_id = "centos_7_9_x64_20G_alibase_20220824.vhd"
instance_name = "lyc-test-${count.index+1}"
vswitch_id = alicloud_vswitch.vsw_1.id
internet_max_bandwidth_out = 1 # 出网带宽,单位为Mbps
password = "5jejYWzSjZhWQc7G22"
data_disks {
name = "data_disk1"
description = "data_disk1" # 数据盘描述
size = 20 # 数据盘大小,单位为GB
category = "cloud_essd" # 数据盘类型
}
}
#创建vpc
resource "alicloud_vpc" "vpc" {
vpc_name = "vpc_1"
cidr_block = "10.0.0.0/16"
}
# 创建vswitch
# alicloud_vswitch是阿里云的资源字段,vsw_1字段是tf文件中的自定义唯一资源名称,vswitch_name字段是在阿里云上的自定义备注名
resource "alicloud_vswitch" "vsw_1" {
vswitch_name = "vsw_aliyun1"
vpc_id = alicloud_vpc.vpc.id
cidr_block = "10.0.0.0/24"
zone_id = "cn-shanghai-b"
}
#新建安全组
resource "alicloud_security_group" "nsg1" {
security_group_name = "lyc_aliyun_nsg1"
vpc_id = alicloud_vpc.vpc.id
}
#将nsg_rule1、nsg_rule2加入安全组lyc_aliyun_nsg1中
resource "alicloud_security_group_rule" "nsg_rule1" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.nsg1.id
cidr_ip = "0.0.0.0/0"
}
#创建ECS实例
resource "alicloud_instance" "instance" {
# cn-shanghai
#count = 2 # 创建2台ECS实例,默认不写count,则创建1台ECS实例
availability_zone = "cn-shanghai-b"
security_groups = ["${alicloud_security_group.nsg1.id}"]
instance_type = "ecs.e-c1m1.large" #若实例规格下线,请使用目前售卖中的实例规格
system_disk_category = "cloud_essd" #若磁盘规格下线,请使用目前售卖中的实例规格
system_disk_size = 40 # 系统盘大小,单位为GB
image_id = "centos_7_9_x64_20G_alibase_20220824.vhd"
instance_name = "lyc-test-${count.index+1}"
vswitch_id = alicloud_vswitch.vsw_1.id
internet_max_bandwidth_out = 1 # 出网带宽,单位为Mbps
password = "5jejYWzSjZhWQc7G22"
data_disks {
name = "data_disk1"
description = "data_disk1" # 数据盘描述
size = 20 # 数据盘大小,单位为GB
category = "cloud_essd" # 数据盘类型
}
}
使用data_disks 参数控制数据盘
2. 过滤镜像
比如,https://ecs.console.aliyun.com/image/region/cn-shanghai/systemImageList
json
data "alicloud_images" "images_ds" {
owners = "system"
name_regex = "^centos_7"
architecture = "x86_64"
}
// output 把值传递出去,给其他地方引用
output "first_image_id" {
value = "${data.alicloud_images.images_ds.images.0.id}"
}
data "alicloud_images" "images_ds" {
owners = "system"
name_regex = "^centos_7"
architecture = "x86_64"
}
// output 把值传递出去,给其他地方引用
output "first_image_id" {
value = "${data.alicloud_images.images_ds.images.0.id}"
}