返回顶部
T

Terraform

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

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

Terraform

## State Management - Local state gets corrupted/lost — use remote backend (S3, GCS, Terraform Cloud) - Multiple people running simultaneously — enable state locking with DynamoDB or equivalent - Never edit state manually — use `terraform state mv`, `rm`, `import` - State contains secrets in plain text — encrypt at rest, restrict access ## Count vs for_each - `count` uses index — removing item 0 shifts all indices, forces recreation - `for_each` uses keys — stable, removing one doesn't affect others - Can't use both on same resource — choose one - `for_each` requires set or map — `toset()` to convert list ## Lifecycle Rules - `prevent_destroy = true` — blocks accidental deletion, must be removed to destroy - `create_before_destroy = true` — new resource created before old destroyed, for zero downtime - `ignore_changes` for external modifications — `ignore_changes = [tags]` ignores drift - `replace_triggered_by` to force recreation — when dependency changes ## Dependencies - Implicit via reference — `aws_instance.foo.id` creates automatic dependency - `depends_on` for hidden dependencies — when reference isn't in config - `depends_on` accepts list — `depends_on = [aws_iam_role.x, aws_iam_policy.y]` - Data sources run during plan — may fail if resource doesn't exist yet ## Data Sources - Data sources read existing resources — don't create - Runs at plan time — dependency must exist before plan - Use `depends_on` if implicit dependency not clear — or plan fails - Consider using resource output instead — more explicit ## Modules - Pin module versions — `source = "org/name/aws?version=1.2.3"` - `terraform init -upgrade` to update — doesn't auto-update - Module outputs must be explicitly defined — can't access internal resources from outside - Nested modules: output must bubble up — each layer needs to export ## Variables - No type = any — explicit `type = string`, `list(string)`, `map(object({...}))` - `sensitive = true` hides from output — but still in state file - `validation` block for constraints — custom error message - `nullable = false` to reject null — default is nullable ## Common Mistakes - `terraform destroy` is permanent — no undo, use `-target` carefully - Plan succeeded ≠ apply succeeds — API errors, quotas, permissions discovered at apply - Renaming resource = delete + create — use `moved` block or `terraform state mv` - Workspaces not for environments — use separate state files/backends per env - Provisioners are last resort — use cloud-init, user_data, or config management instead ## Import - `terraform import aws_instance.foo i-1234` — imports existing resource to state - Doesn't generate config — must write matching resource block manually - `import` block (TF 1.5+) — declarative import in config - Plan after import to verify — should show no changes if config matches

标签

skill ai

通过对话安装

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

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 terraform-1775945648 技能

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

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

通过命令行安装

skillhub install terraform-1775945648

下载 Zip 包

⬇ 下载 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
返回顶部