terraform

Terraform 基础设施即代码

补充说明

terraform 用 HCL 描述云资源,通过 provider 调用各平台 API,并把状态保存在 backend 中。核心流程是 init、plan、apply,状态文件是团队协作的关键。

常用示例

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 workspace list
terraform providers lock -platform=linux_amd64

易错点与排错

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 为什么推荐 terraform plan -out=tfplan 后用同一个 plan 文件 apply?
  2. terraform import 会自动生成完整的资源代码吗?
  3. 状态文件在协作和安全上要注意什么?
答案
  1. 避免“计划”和“执行”之间出现差异。这样 apply 的正是刚才审阅过的变更。
  2. 不会。import 只把现有资源纳入状态,导入后还要补齐配置代码。
  3. 状态文件含明文敏感信息,remote backend 要加密并限制访问。多人协作必须启用状态锁,避免互相覆盖。