Terraform-阿里云- ECS实验
一、下载Terraform-cli
https://developer.hashicorp.com/terraform/installhttps://developer.hashicorp.com/terraform/install#选择适合你的安装即可。无特殊要求。
二、创建文件
./
├── ECS
│ ├── main.tf # 定义主要资源
│ ├── outputs.tf # 定义输出变量
│ ├── provider.tf # 配置云提供商
│ └── variables.tf # 定义变量
main.tf
这个文件定义了主要的Terraform资源。在你的例子中,它定义了ECS实例的配置,包括实例类型、镜像ID、安全组、子网等。
resource "alicloud_instance" "example" {
instance_name = var.instance_name
instance_type = var.instance_type
image_id = var.image_id
security_groups = [var.security_group_id]
vswitch_id = var.subnet_id
internet_charge_type = "PayByTraffic"
internet_max_bandwidth_out = 5
system_disk_category = "cloud_efficiency"
system_disk_size = 40
tags = {
Name = var.instance_name
}
}
outputs.tf
output "instance_id" {
description = "ECS实例的ID"
value = alicloud_instance.example.id
}
output "public_ip" {
description = "ECS实例的公网IP"
value = alicloud_instance.example.public_ip
}
这个文件定义了Terraform执行后输出的变量。它通常用于输出一些重要的信息,比如实例的ID、IP地址等。
provider.tf
provider "alicloud" {
region = "cn-hangzhou" # 根据你的需求选择区域
}
这个文件配置了Terraform使用的云提供商。在你的例子中,它配置了阿里云提供商,并指定了区域。
variables.tf
variable "access_key" {
description = "阿里云的Access Key"
type = string
}
variable "secret_key" {
description = "阿里云的Secret Key"
type = string
}
variable "instance_type" {
description = "ECS实例类型"
type = string
default = "ecs.t5-lc2m1.nano"
}
variable "instance_name" {
description = "ECS实例名称"
type = string
default = "my-ecs-instance"
}
variable "image_id" {
description = "ECS实例的镜像ID"
type = string
default = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
}
variable "security_group_id" {
description = "安全组ID"
type = string
}
variable "vpc_id" {
description = "VPC ID"
type = string
}
variable "subnet_id" {
description = "子网ID"
type = string
}
这个文件定义了Terraform配置中使用的变量。它通常用于定义一些可配置的参数,比如实例类型、镜像ID等。
三、本地创建环境变量
export TF_VAR_access_key="你的阿里云Access Key"
export TF_VAR_secret_key="你的阿里云Secret Key"
export TF_VAR_security_group_id="你的安全组ID"
export TF_VAR_vpc_id="你的VPC ID"
export TF_VAR_subnet_id="你的子网ID"export ALICLOUD_ACCESS_KEY="你的Access Key ID"
export ALICLOUD_SECRET_KEY="你的Access Key Secret"
四、启动
terraform init
*下载aliyun插件terraform plan
*生成并显示执行计划,但不实际执行任何更改
terraform apply
*根据执行计划实际应用更改,创建、修改或销毁资源。
`terraform plan` 和 `terraform apply` 是 Terraform 中的两个重要命令,它们的主要区别如下:
### `terraform plan`
- **功能**:生成并显示执行计划,但不实际执行任何更改。
- **用途**:用于预览即将进行的更改,帮助用户了解Terraform将对基础设施进行哪些操作(创建、修改或销毁资源)。
- **命令**:
```sh
terraform plan
```
### `terraform apply`
- **功能**:根据执行计划实际应用更改,创建、修改或销毁资源。
- **用途**:在确认执行计划后,实际执行更改以使基础设施达到所定义的状态。
- **命令**:
```sh
terraform apply
```
### 使用示例
1. **生成执行计划**:
```sh
terraform plan
```
这将显示Terraform将要进行的更改,但不会实际应用这些更改。
2. **应用执行计划**:
```sh
terraform apply
```
这将根据执行计划实际应用更改,更新基础设施。
总结来说,`terraform plan` 用于预览更改,而 `terraform apply` 用于实际应用更改。建议在每次执行 `terraform apply` 之前先运行 `terraform plan` 以确保更改符合预期。