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` 以确保更改符合预期。

相关推荐
Anna_Tong4 小时前
物联网边缘(Beta)离全面落地还有多远?
物联网·阿里云·边缘计算·腾讯云·智能制造
周杰伦_Jay5 小时前
详细介绍:云原生技术细节(关键组成部分、优势和挑战、常用云原生工具)
java·云原生·容器·架构·kubernetes·jenkins·devops
元气满满的热码式5 小时前
K8S中Pod控制器之DaemonSet(DS)控制器
云原生·容器·kubernetes
夏子曦5 小时前
k8s 蓝绿发布、滚动发布、灰度发布
云原生·容器·kubernetes
ShareBeHappy_Qin6 小时前
ZooKeeper 中的 ZAB 一致性协议与 Zookeeper 设计目的、使用场景、相关概念(数据模型、myid、事务 ID、版本、监听器、ACL、角色)
分布式·zookeeper·云原生
颜淡慕潇10 小时前
【K8S系列】在 K8S 中使用 Values 文件定制不同环境下的应用配置
云原生·容器·kubernetes·环境配置
来恩100317 小时前
Kubernetes学习指南与资料分享
云原生·容器·kubernetes
weixin_3875456420 小时前
探索云原生可观测性:技术与团队协作的深度结合
云原生
向阳12181 天前
doris:阿里云 OSS 导入数据
数据库·阿里云·云计算·doris
RedCong1 天前
multus使用教程
云原生·k8s·openshift