HashiCorp正式发布Terraform Google Cloud Provider 8.0版本,核心更新聚焦Compute Engine资源负载均衡行为调整,移除废弃服务相关资源并优化属性存储方式以消除计划差异。该版本存在显著破坏性变更,建议用户先升级至最新7.x版本,清理弃用提示后再推进8.0升级。主要变更包括默认负载均衡策略由EXTERNAL改为EXTERNAL_MANAGED,导致无显式设置配置时转向外部负载均衡器,依赖经典策略的团队需显式设置字段,同时涉及多类资源移除,需提前更新相关配置。Schema行为方面,不具备顺序语义的属性改为集合,减少API返回值与配置差异导致的永久性错误,部分变化还可自动迁移,但部分类型变更或新增必填属性需手动调整配置。8.0版本在资源覆盖、功能扩展及能力优化等方面均有提升,支持更多基础设施类型与查询能力,但升级需严格遵循防护步骤,通过固定版本、清理弃用项、确认兼容版本等方式保障升级安全,避免因变更引发不可逆问题。
--91likeyou---
此次发布还移除了一些资源和数据源,因为它们所依赖的服务已经关闭或被替代。被移除的资源包括 google_iap_brand 和 google_iap_client(IAP OAuth Admin API 关闭后),三个 google_notebooks_* 资源(用户应迁移至 google_workbench_instance)、google_ml_engine_model,以及 BeyondCorp 的应用连接、连接器和网关资源;这些资源由 Security Gateway 资源替代。google_vertex_ai_schedule 则由 google_colab_schedule 替代。升级前,必须更新所有引用这些资源的配置。
在 Schema 行为方面,不具备顺序语义的属性已由列表改为集合,其中包括 Compute Service Attachments、GKE 日志和监控配置,以及 Cloud Security Compliance Frameworks 中的字段。HashiCorp 表示,这可以避免 API 返回值顺序与配置不同而产生永久性差异。部分 Google Cloud API 的验证规则也变得更加严格。例如,google_workflows_workflow 现在必须提供 source_contents;创建 Workforce Identity Pool Provider SCIM 租户时,也必须提供 claim_mapping。某些状态变化,例如部分整数到字符串的转换,会自动迁移,但其他变化则需要修改配置。
公告还总结了 8.0 建立其上的一些 7.x 时代功能。该 Provider 现在支持 Terraform 列表资源,这些资源可以配合 terraform query 工作流使用。用户能够搜索状态之外的现有基础设施,并选择生成资源配置和导入配置。目前覆盖 Compute Engine、IAM、BigQuery、Pub/Sub、Secret Manager、Migration Center 和 Network Services。Resource Identity 支持也有所扩展,为 Provider 提供了一种清晰表示远程对象的方式,可与传统 ID 一样用于导入。只写属性可以将敏感值发送给 API,而不将其保存下来,目前已覆盖证书私钥、AlloyDB 密码和 IAP 凭证。
该 Provider 由 Google Cloud 工程团队、HashiCorp 和 Terraform 社区共同开发,8.0 版本现已在 Terraform Registry 中提供。官方文章没有提供基准测试或采用数据,也没有列出所有被移除的资源,因此升级指南和 GitHub 变更日志才是权威参考。
一种可行的升级方案如下:
固定 Provider 版本,先升级到最新的 7.x 版本。解决所有弃用警告后,再在非生产环境中升级至 8.0。
在代码中搜索上述已移除资源,以及未设置 load_balancing_scheme 的负载均衡器资源。显式设置该字段,避免意外迁移至 EXTERNAL_MANAGED。
仔细检查 terraform plan,重点关注被标记为销毁或替换的资源。尤其要留意列表到集合的转换,以及类型发生变化或改为必填的只写版本属性。
使用 OpenTofu 的团队可以采用该版本的大部分功能,但并非全部。该 Provider 的破坏性变更包括默认值改为 EXTERNAL_MANAGED、资源移除以及列表到集合的转换。这些变化都发生在 Provider 中,因此无论使用哪种 CLI 都会生效。只写属性需要 OpenTofu 1.11 或更高版本,因为该版本才引入了这项功能。
使用 Terraform 查询和列出资源的发现工作流在 OpenTofu 中尚无对应功能。关于 tofu query 的功能请求(issue #3787)仍处于待处理状态。因此,这些团队仍需使用 import 块和生成的配置来管理现有基础设施。
截至本文撰写时,OpenTofu 是否支持 Resource Identity 尚未得到确认,因此计划使用基于身份导入的团队应先查看 OpenTofu 变更日志。固定版本前,团队还应确认 OpenTofu Registry 中是否已经提供 8.0 Provider 构建版本。
:
🔥 热词:#Terraform是谁发明的 · #terraform的基础架构 · #terraform构建与运行 · #Terraform阿里云 · #Terraform搭建的详细步骤 · #Terraform的应用场景 · #terraform支持哪些云平台 · #terraform中文教程