返回顶部
T

TerraformTerraform避坑指南

Avoid common Terraform mistakes — state corruption, count vs for_each, lifecycle traps, and dependency ordering.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
2,095
下载量
免费
免费
3
收藏
概述
安装方式
版本历史

Terraform

状态管理

  • - 本地状态损坏/丢失 — 使用远程后端(S3、GCS、Terraform Cloud)
  • 多人同时运行 — 使用 DynamoDB 或等效工具启用状态锁定
  • 切勿手动编辑状态 — 使用 terraform state mv、rm、import
  • 状态包含明文密钥 — 加密静态数据,限制访问权限

Count 与 for_each

  • - count 使用索引 — 删除第 0 项会导致所有索引偏移,强制重建
  • foreach 使用键 — 稳定,删除一个不会影响其他
  • 同一资源不能同时使用两者 — 选择其一
  • foreach 需要集合或映射 — 使用 toset() 转换列表

生命周期规则

  • - preventdestroy = true — 阻止意外删除,必须移除该规则才能销毁
  • createbeforedestroy = true — 先创建新资源再销毁旧资源,实现零停机
  • 针对外部修改使用 ignorechanges — ignorechanges = [tags] 忽略漂移
  • 使用 replacetriggered_by 强制重建 — 当依赖项发生变化时

依赖关系

  • - 通过引用隐式依赖 — awsinstance.foo.id 创建自动依赖
  • 使用 dependson 处理隐藏依赖 — 当配置中没有引用时
  • dependson 接受列表 — dependson = [awsiamrole.x, awsiampolicy.y]
  • 数据源在计划阶段运行 — 如果资源尚不存在可能会失败

数据源

  • - 数据源读取现有资源 — 不创建资源
  • 在计划阶段运行 — 依赖项必须在计划前存在
  • 如果隐式依赖不明确则使用 depends_on — 否则计划会失败
  • 考虑使用资源输出 — 更加明确

模块

  • - 固定模块版本 — source = org/name/aws?version=1.2.3
  • 使用 terraform init -upgrade 更新 — 不会自动更新
  • 模块输出必须明确定义 — 无法从外部访问内部资源
  • 嵌套模块:输出必须逐层传递 — 每层都需要导出

变量

  • - 无类型 = 任意类型 — 明确指定 type = string、list(string)、map(object({...}))
  • sensitive = true 隐藏输出 — 但仍存在于状态文件中
  • 使用 validation 块进行约束 — 自定义错误消息
  • nullable = false 拒绝空值 — 默认可为空

常见错误

  • - terraform destroy 不可逆 — 无法撤销,谨慎使用 -target
  • 计划成功 ≠ 应用成功 — API 错误、配额、权限问题在应用阶段才会发现
  • 重命名资源 = 删除 + 创建 — 使用 moved 块或 terraform state mv
  • 工作区不适用于环境 — 每个环境使用独立的状态文件/后端
  • 预配器是最后手段 — 改用 cloud-init、user_data 或配置管理

导入

  • - terraform import aws_instance.foo i-1234 — 将现有资源导入状态
  • 不会生成配置 — 必须手动编写匹配的资源块
  • import 块(Terraform 1.5+) — 在配置中声明式导入
  • 导入后执行计划验证 — 如果配置匹配应显示无变更

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 terraform-1775945648 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 terraform-1775945648 技能

通过命令行安装

skillhub install terraform-1775945648

下载

⬇ 下载 Terraform v1.0.0(免费)

文件大小: 2.1 KB | 发布时间: 2026-4-12 11:39

v1.0.0 最新 2026-4-12 11:39
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部