常用命令
terraform init
terraform init -upgrade
terraform fmt -recursive
terraform validate
terraform plan -out=tfplan
terraform apply tfplan
terraform show
terraform output
terraform state list
terraform state show aws_instance.web
terraform import aws_instance.web i-0123456789
terraform plan -replace=aws_instance.web
terraform destroy
terraform console
terraform providers lock -platform=linux_amd64
terraform workspace list
场景速查
| 目的 |
命令 |
| 查看某资源状态 |
terraform state show <addr> |
| 移动状态条目 |
terraform state mv <old> <new> |
| 删除状态条目 |
terraform state rm <addr> |
| 刷新状态 |
terraform apply -refresh-only |
| 只初始化后端 |
terraform init -backend=true |
| 迁移后端 |
terraform init -migrate-state |
| 锁定 provider |
.terraform.lock.hcl 提交到仓库 |
| 查看依赖图 |
terraform graph |
易错点
- 始终先
plan -out,再 apply 同一个 plan 文件。
- state 含敏感信息,remote backend 要加密并限制访问。
- 多人协作必须启用状态锁;本地 state 容易互相覆盖。
terraform destroy 会按依赖删除资源;有保护策略时会失败。
import 只纳入状态,不会生成配置;导入后要补齐代码。
- provider/module 版本不锁会让 plan 漂移。
- workspace 不是环境隔离的万能方案;共享 backend 时要防串用。
相关命令
terraform — 完整命令页
opentofu — 开源分支
terragrunt — 编排封装