Terraform管理Google Cloud Composer时如何区分新建实例还是升级现有实例
Terraform 实例操作判断逻辑及 backend 配置修改影响说明
Terraform 如何区分升级现有实例还是创建新实例
Terraform 完全基于 backend 存储的状态文件(tfstate)与当前本地配置的差异判断操作类型:
- 若状态文件中已存在对应资源的记录,且你修改的是该资源支持原地更新的参数,就会触发升级/更新操作
- 若状态文件中无对应资源记录,或是你修改了资源的强制重建类参数(不同资源的该类参数不同,例如 Composer 实例的部署区域、核心网络配置等标识类参数),就会触发销毁旧实例、创建新实例的操作
所有 Composer 实例的配置,包括升级相关的版本、节点规格等参数,都在 tf 文件对应的 google_composer_environment 资源块中声明,直接修改该块内的对应字段即可。
修改 GCS backend 的 prefix 是否会触发新实例创建
你当前的 backend 配置如下:
terraform { backend "gcs" { bucket = "tf-state-prod" prefix = "terraform/state" } }
修改 prefix 本质是切换 Terraform 读取和存储状态文件的路径,会不会触发新建分两种情况:
- 如果你没有将原
prefix路径下的 tfstate 文件手动迁移到新的terraform/new_state路径下,Terraform 读取新路径时会找不到任何已部署资源的记录,执行 apply 时会把所有配置声明的资源都当作新资源,触发全量创建 - 如果你先把旧路径下的 tfstate 文件迁移到新路径,再修改配置执行
terraform init -reconfigure刷新 backend 配置,Terraform 依然可以匹配到已有资源记录,不会触发新建,只会按配置差异执行对应的更新/升级操作
内容的提问来源于stack exchange,提问作者slashie
相关产品推荐
相关产品推荐

