SuperAPI AI 工具集

terraform-expert

部署与运维

查看项目

更新于 10-15 12:07

技能介绍

用途

terraform-expert 是一个专家级 Terraform 技能,聚焦基础设施即代码(Infrastructure as Code)、模块开发、状态管理与生产运维。它适用于用户提及基础设施即代码、Terraform 命令、状态管理或相关最佳实践的场景,帮助设计和管理可扩展、可维护的基础设施。

主要能力

该技能提供多方面的 Terraform 知识:

  1. 常用命令工作流,包括初始化(terraform init、terraform init -upgrade)、格式化(terraform fmt、terraform fmt -recursive)、校验(terraform validate)、计划(terraform plan、terraform plan -out=tfplan、terraform plan -var="instance_count=5"、terraform plan -var-file="prod.tfvars")、应用(terraform apply、terraform apply tfplan、terraform apply -auto-approve)、销毁(terraform destroy、terraform destroy -target=aws_instance.web)、展示资源(terraform show、terraform show tfplan)、列出资源(terraform state list)、展示指定资源(terraform state show aws_instance.web[0])。

  2. 状态管理,包括拉取远程状态(terraform state pull > terraform.tfstate)、推送本地状态(terraform state push terraform.tfstate)、在状态中移动资源(terraform state mv aws_instance.old aws_instance.new)、从状态中移除资源(terraform state rm aws_instance.web)、导入已有资源(terraform import aws_instance.web i-1234567890abcdef0)、替换资源(terraform apply -replace=aws_instance.web)。

  3. 其他命令,包括生成依赖图(terraform graph | dot -Tsvg > graph.svg)、解锁状态(terraform force-unlock LOCK_ID)、标记资源以重建(terraform taint aws_instance.web)、取消标记(terraform untaint aws_instance.web)、获取输出(terraform output、terraform output instance_id、terraform output -json)、交互式控制台(terraform console)。

最佳实践

技能总结了若干最佳实践:

  1. 使用远程状态:通过 backend "s3" 配置 bucket、key、region、encrypt、dynamodb_table。
  2. 使用模块:将代码组织为可复用模块,例如 modules/ 下包含 vpc/、ec2/、rds/、s3/。
  3. 使用变量与输出:参数化一切,通过描述文档化,使用校验规则。
  4. 使用版本约束:通过 required_version 与 required_providers 指定版本,如 terraform { required_version = ">= 1.6" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } }。
  5. 使用命名规范:资源命名(如 resource "aws_instance" "web",而非 "web_server")、变量命名(下划线风格,如 variable "instance_type")、标签命名(如 tags = { Name = "prod-web-server" Environment = "production" })。
  6. 分离环境:按 environments/dev、environments/staging、environments/prod 组织,各自包含 main.tf 与 terraform.tfvars。
  7. 使用 .gitignore:忽略 .terraform/、.tfstate、.tfstate.backup、.terraform.lock.hcl、*.tfvars(若包含机密)、crash.log。
  8. 启用 Provider 锁定:将 .terraform.lock.hcl 提交到版本控制,确保 Provider 版本一致。

推荐方法

编写 Terraform 时建议遵循以下方法:计划后再应用(始终审查 plan 输出)、使用模块(DRY 原则、可复用组件)、远程状态(S3 + DynamoDB 用于锁定)、为一切设定版本(Terraform、Provider、模块)、参数化(使用变量而非硬编码值)、文档化(README 文件、变量描述)、测试(使用 terraform validate、fmt、plan)、分离环境(不同的 tfvars 或 workspace)。最终目标是编写可维护、可复用并遵循基础设施即代码最佳实践的 Terraform 代码。

参考文档

该技能附带有详细材料,按需读取,涵盖核心专长:Terraform 基础、资源管理、模块、状态管理、高级特性。

限制

该资料未提供具体的收费模式、价格、支持平台或效果数据,上述信息暂未提供。