SuperAPI AI 工具集

terraform-infrastructure

部署与运维

查看项目

更新于 10-15 12:02

技能介绍

Terraform Infrastructure-as-Code 是一项用于以 Terraform 构建、管理与扩展云基础设施的综合技能,核心是掌握声明式基础设施、多云端部署、状态管理、模块组合以及面向 AWS、Azure、GCP 和其他 provider 的企业级模式。

用途与适用场景

该技能适用于以下情形:

  • 在 AWS、Azure、GCP 或多云环境中配置云基础设施。
  • 为团队与组织构建可复用的基础设施模块。
  • 跨多个环境(dev、staging、prod)管理基础设施状态。
  • 落地基础设施即代码(IaC)最佳实践与治理。
  • 从手工基础设施迁移到自动化、可版本控制的部署。
  • 创建可重复、可测试的基础设施配置。
  • 编排复杂的多层应用架构。
  • 管理 Kubernetes 集群、数据库、网络与计算资源。
  • 实现灾难恢复与多区域部署。
  • 通过 GitOps 工作流与团队协作变更基础设施。

核心概念

基础设施即代码理念:Terraform 支持声明式基础设施管理,包括:声明式配置(定义期望状态,由 Terraform 处理执行)、不可变基础设施(替换而非修改基础设施)、版本控制(像应用代码一样追踪基础设施变更)、先计划后应用(执行前预览变更)、资源图(自动依赖解析与并行执行)、状态管理(追踪真实资源及其配置)。

关键组件:Providers(面向基础设施平台的插件,如 AWS、Azure、GCP、Kubernetes 等)、Resources(基础设施对象,如虚拟机、网络、数据库、存储)、Data Sources(查询已有基础设施或外部数据)、Variables(参数化配置以提升复用性)、Outputs(导出供其他配置使用的值)、Modules(可复用、可组合的基础设施组件)、State(追踪受管基础设施的 JSON 文件)、Workspaces(管理基础设施的多个实例)。

工作流:Write → Init → Plan → Apply → Destroy,对应编写 .tf 文件、下载 providers、审查变更、执行变更、移除资源。

主要能力

HCL 语言:declarative 且人类可读的块结构,例如 resource "aws_instance" "web_server",并支持数值、字符串、布尔、列表、映射、对象、集合、元组等变量类型。

变量与校验:可为变量添加自定义校验规则,例如用 contains 限制实例类型、用 can(regex(...)) 限制环境名、用 can(cidrhost(...)) 校验 IPv4 CIDR。

Locals 与表达式:本地值只计算一次并复用,可用于公共标签、条件实例数量、列表拼接、映射合并、字符串插值、for 表达式与映射转换。

内置函数:涵盖字符串(upper、lower、title、trim、trimprefix、format、join、split、substr、replace)、数值(max、min、ceil、floor、parseint)、集合(length、element、concat、contains、distinct、flatten、keys、values、lookup、merge、reverse、slice、sort)、编码(base64encode/decode、jsonencode/decode、yamlencode/decode)、文件系统(file、templatefile)、日期时间(timestamp、formatdate)、网络(cidrhost、cidrnetmask、cidrsubnet)、类型转换(tostring、tonumber、tobool、tolist、toset、tomap)以及条件函数(can、try)。

条件表达式与动态块:三元运算符、用 count 实现条件资源、dynamic 块批量生成 ingress 等嵌套配置。

元参数:depends_on(显式依赖)、count(创建多个实例)、for_each(基于 map 或 set 创建)、provider(指定 provider 配置)、lifecycle(create_before_destroy、prevent_destroy、ignore_changes 等)。

Providers:配置 AWS、Azure、GCP、Kubernetes provider,使用 required_providers 与版本约束,支持多 provider 配置与 alias,以及多种认证方式(环境变量、assume role、Azure 服务主体或托管标识、GCP 服务账号)。

Resources 与生命周期:资源声明、属性引用、生命周期定制(create_before_destroy、prevent_destroy、ignore_changes、replace_triggered_by)。

Data Sources:查询 AWS AMI、VPC、可用区、当前区域与账号,使用 external、http、template_file(已废弃,推荐 templatefile())等数据源。

Modules:模块目录结构(main.tf、variables.tf、outputs.tf、versions.tf、README.md),编写输入变量、资源与输出,供团队和组织复用。

使用方式

按 Terraform 工作流操作:编写 .tf 文件,执行 init 下载 providers,plan 审查变更,apply 执行变更,destroy 移除资源。变量用于参数化,模块用于复用,状态用于追踪受管资源,工作区用于区分多套基础设施。provider 认证可使用环境变量、assume role、托管标识或服务账号等方式。

限制

具体收费、价格、平台支持范围、性能效果等事实资料中暂未提供。