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将要进行的更改,但不会实际应用这些更改。

  1. **应用执行计划**:

```sh

terraform apply

```

这将根据执行计划实际应用更改,更新基础设施。

总结来说,`terraform plan` 用于预览更改,而 `terraform apply` 用于实际应用更改。建议在每次执行 `terraform apply` 之前先运行 `terraform plan` 以确保更改符合预期。

相关推荐
zz-zjx16 分钟前
云计算产品-介绍--计算篇
阿里云·云计算
阿里云大数据AI技术11 小时前
让 ETL 更懂语义:DataWorks 支持数据集成 AI 辅助处理能力
人工智能·阿里云·dataworks·ai辅助
微学AI15 小时前
深入评测openEuler 24.03 LTS SP2:在云原生时代构筑高性能的应用与实战操作
云原生·openeuler
似水流年 光阴已逝15 小时前
k8s中的StatefulSet 控制器
云原生·容器·kubernetes
chen_note15 小时前
K8s的标签应用和调度
云原生·容器·kubernetes·标签·污点与容忍度
Orlando cron17 小时前
K8s 中创建一个 Deployment 的完整流程
云原生·容器·kubernetes
Serverless社区17 小时前
助力企业构建 AI 原生应用,函数计算FunctionAI 重塑模型服务与 Agent 全栈生态
阿里云·云原生·serverless
企鹅侠客18 小时前
K8s高频命令实操手册
云原生·容器·kubernetes
观测云21 小时前
阿里云 RDS PostgreSQL 可观测最佳实践
阿里云·postgresql·云计算