Terraform是一个开源的基础设施即代码工具,允许开发人员通过声明式的语言来定义和管理基础设施的配置,提供了一种简洁的方式来创建、修改或删除ECS资源,减少手动操作的繁琐和错误,提高基础设施的可管理性和可维护性。本文为您介绍如何安装与配置Terraform、使用Terraform创建ECS实例。
更多Terraform信息,请参见Terraform产品介绍。
支持的资源列表
Resource:资源,指新创建的资源,用于定义基础设施组件,例如一个ECS实例、一个虚拟机、一个网络安全组等。
Data Source:数据源,用于查询和获取已有的基础设施组件的信息,在Terraform配置中使用这些信息来引用或配置其他资源。
安装Terraform并配置权限
在本地安装和配置Terraform
在本地使用Terraform,需要安装并预配置Terraform。具体操作,请参见在本地安装和配置Terraform。
由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用满足最小化权限需求的RAM用户的AccessKey。具体操作方式请参见创建AccessKey。
创建环境变量,用于存放身份认证信息。
在AccessKey管理页面上创建和查看您的AccessKey。
若无对应环境变量,在执行terraform模板时无法确认身份信息,将会导致调用失败。
使用在线服务(免安装和权限配置)
如果您不想安装Terraform,直接使用在线服务Cloud Shell。
阿里云Cloud Shell是一款帮助您运维的免费产品,预装了Terraform的组件,并配置好身份凭证(Credentials)。因此您可直接在Cloud Shell中运行Terraform的命令。更多信息,请参见Cloud Shell。
通过Cloud Shell使用Terraform时,由于其销毁特性会导致数据丢失,因此建议您使用Cloud Shell做简单、快速的操作,例如调试。更多使用限制,请参见使用限制。
使用Terraform创建并管理ECS
下文以创建ECS为例,介绍如何使用Terraform创建并管理ECS资源。
完整代码
您也可以在OpenAPI 门户调试运行代码。一键运行
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 = "cn-beijing-f"
}
resource "alicloud_security_group" "default" {
name = "default"
vpc_id = alicloud_vpc.vpc.id
}
resource "alicloud_security_group_rule" "allow_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 = "192.168.0.0/16"
}
resource "alicloud_instance" "instance" {
# cn-beijing
availability_zone = "cn-beijing-f"
security_groups = alicloud_security_group.default.*.id
# series III
instance_type = "ecs.e-c1m1.large"
system_disk_category = "cloud_essd"
image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
instance_name = "test_foo"
vswitch_id = alicloud_vswitch.vsw.id
internet_max_bandwidth_out = 10
password = "Terraform@Example"
}
output "public_ip" {
value = alicloud_instance.instance.public_ip
}
相关文档
更多实践教程,请参见Terraform的教程。
更多Terraform的常用命令,请参见Terraform常用命令。
更多创建ECS实例的方式,请参见ECS实例交付(创建)方式。
ROS提供了Terraform托管服务,因此您可以直接在ROS控制台部署Terraform模板。详细操作,请参见创建Terraform类型资源栈。