首页龙虾技能列表 › Terraform — 技能工具

🟪 Terraform — 技能工具

v1.0.0

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

3· 2,100·22 当前·23 累计
by @ivangdavila (Iván)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
Instruction-only Terraform best-practices skill that is internally consistent with its stated purpose and requests no extra credentials or installs.
评估建议
This is a low-risk, instruction-only skill providing Terraform advice. It won't install code or ask for credentials, but be aware: if you let an agent execute terraform commands on your machine, those commands will use whatever local cloud credentials and access the actual infrastructure. Only allow command execution in a safe environment (e.g., CI or a sandbox), review plans before any apply/destroy, avoid granting broad cloud credentials to the agent, and prefer running destructive commands yo...
详细分析 ▾
用途与能力
名称、描述和内容都专注于Terraform最佳实践;唯一声明的要求(terraform二进制文件)是适当且成比例的。
指令范围
SKILL.md包含关于状态、生命周期、依赖项、模块、导入和常见错误的指导;它不指示代理读取无关文件、窃取数据或调用外部端点。它仅作为建议提及远程后端(S3/GCS/DynamoDB/Terraform Cloud),这对于Terraform指导是预期的。
安装机制
无安装规范和代码文件——这是仅指令的,最大限度地减少磁盘写入和执行风险。
凭证需求
该技能未声明环境变量或凭证。对云后端的引用是建议性的;不请求无关的机密或凭证。
持久化与权限
技能不强制始终开启,可由用户调用,并允许自主调用(平台默认)。它不请求持久的系统更改或修改其他技能的配置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

🖥️ OSLinux · macOS · Windows

版本

latestv1.0.02026/2/10

Initial release

● 无害

安装命令 点击复制

官方npx clawhub@latest install terraform
镜像加速npx clawhub@latest install terraform --registry https://cn.clawhub-mirror.com

技能文档

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
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务