🛠️

Terraform Google Provider 7.0.0 の新機能と変更点について

に公開

こんにちは、クラウドエース 第一開発部の阿部です。
この記事では、メジャーバージョンアップデートされた Terraform Google Provider 7.0.0 の変更点について紹介します。

概要

2025 年 8 月 27 日に、Terraform の Google Cloud 向けプラグイン(Provider)である Terraform Google Provider が 7.0.0 にバージョンアップしました。
なお、本記事執筆時点(2025 年 9 月 8 日)では、 7.1.1 が最新バージョンです。

対象読者

  • Terraform で Google Cloud の構築・運用をしているエンジニア
  • メジャーバージョン間の非互換が気になる方

出典元のドキュメント

主な変更点

6.0.0 では自動的にリソースラベルが付与される等、比較的大きな変更が加えられましたが、7.0.0 では目立った新機能はありませんでした。
ただし、いくつかのリソースの廃止、属性の廃止・非互換変更がありますので、本ブログ記事ではそれらを中心に紹介します。

また、7.0.0 ではリソースインポートの検証が強化されました。
これまでプロバイダ全体で、入力の一部が適切な形式であっても、全体として不適切なインポート入力を誤って受け入れてしまうリソースが多数存在していました。
今回のメジャーバージョンアップで、全ての Google Cloud リソースにおいてドキュメントに記載されている通りの形式でインポート入力が検証されるようになりました。

リソースインポートの検証改善の補足

インポートの検証ですが、修正されたロジックとしては正規表現によるインポート形式の検証が厳密になったようです。
例えば、 6.49.2 では google_compute_instance リソースのインポートにおいて、 projects/ の前に余計な文字が入っていてもインポートできてしまいました。

6.49.2 で誤った形式でインポートできる例
terraform import google_compute_instance.test ABprojects/sample-project/zones/asia-northeast1-a/instances/instance-20250904-033018

google_compute_instance.test: Importing from ID "ABprojects/sample-project/zones/asia-northeast1-a/instances/instance-20250904-033018"...
google_compute_instance.test: Import prepared!
Prepared google_compute_instance for import
google_compute_instance.test: Refreshing state... [id=projects/sample-project/zones/asia-northeast1-a/instances/instance-20250904-033018]

しかし、7.0.0 以降では、上記のような誤った形式でインポートしようとするとエラーになります。

7.0.0 で誤った形式でインポートできない例
terraform import google_compute_instance.test ABprojects/ca-abe-test/zones/asia-northeast1-a/instances/instance-20250904-033018
google_compute_instance.test: Importing from ID "ABprojects/ca-abe-test/zones/asia-northeast1-a/instances/instance-20250904-033018"...
╷
│ Error: Import id "ABprojects/ca-abe-test/zones/asia-northeast1-a/instances/instance-20250904-033018" doesn't match any of the accepted formats: [^projects/(?P<project>[^/]+)/zones/(?P<zone>[^/]+)/instances/(?P<name>[^/]+)$ ^(?P<project>[^/]+)/(?P<zone>[^/]+)/(?P<name>[^/]+)$ ^(?P<name>[^/]+)$]
│
│

これによって、正規表現による検証が厳密になったことで、誤ったプロジェクトやリソースをインポートしてしまうリスクが減少しました。

廃止されたリソース

google_beyondcorp_application

google_beyondcorp_application リソース、および、関連する google_beyondcorp_application_iam_bindinggoogle_beyondcorp_application_iam_membergoogle_beyondcorp_application_iam_policy リソースが廃止されました。
また、google_beyondcorp_application_iam_policy データリソースも同様に廃止されました。
これらのリソースの代わりに google_beyondcorp_security_gateway_application リソースを使用してください。

google_notebooks_location

google_notebooks_location は機能しなくなっており、安全に削除可能です。

google_tpu_node

google_tpu_node リソースは廃止されました。代わりに、google_tpu_node_v2 リソースを使用してください。

廃止された属性があるリソース

google_cloud_run_v2_worker_pool

google_cloud_run_v2_worker_pool リソースの template.containers.depends_on 属性が廃止されました。

google_colab_runtime_template

google_colab_runtime_template リソースの post_startup_script_config 属性が廃止されました。

google_compute_subnetwork

google_compute_subnetwork リソースの enable_flow_logs 属性が廃止されました。
代わりに、 log_config ブロックを使用してください。

google_gke_hub_feature_membership

google_gke_hub_feature_membership リソースの configmanagement.binauthz 属性が廃止されました。

google_gke_hub_membership

google_gke_hub_membership リソースの description 属性が廃止されました。

google_memorystore_instance

google_memorystore_instance リソースの allow_fewer_zones_deployment 属性が廃止されました。
ユーザーが設定を変更できないためです。

google_service_account_key Data resource

google_service_account_key データリソースの project 属性が廃止されました。
この引数を設定しても機能しなかったため、安全に削除可能です。

google_vertex_ai_endpoint

google_vertex_ai_endpoint リソースの enable_secure_private_service_connect 属性が廃止されました。

検証強化による非互換リソース

google_cloudfunctions2_function

google_cloudfunctions2_function リソースにおける event_trigger ブロックの event_type 属性が必須になりました。

google_network_services_lb_traffic_extension

google_network_services_lb_traffic_extension リソースの load_balancing_scheme 属性が必須になりました。

google_sql_user

google_sql_user リソースの password_wo 属性を設定した際に、password_wo_version 属性の設定が必須になりました。

google_storage_notification

google_storage_notification リソースの topic 属性において、 projects/{project_id}/topics/{topic_name} 形式で指定することが必須になりました。
これまでは Google API の形式である //pubsub.googleapis.com/projects/{project_id}/topics/{topic_name} のプレフィクス文字列の形式でも設定可能でした。しかし、内部の SDK バージョンの変更により、リソース ID と同じ形式である projects/{project_id}/topics/{topic_name} 形式での指定が必須となりました。

google_storage_transfer_job

google_storage_transfer_job リソースの以下の属性において、 / で始まる文字列を除外する検証が追加されました。

  • transfer_spec.gcs_data_sink.path
  • transfer_spec.gcs_data_source.path
  • replication_spec.gcs_data_source.path
  • replication_spec.gcs_data_sink.path

google_vertex_ai_index

google_vertex_ai_index リソースの metadata および metadata.config 属性が必須になりました。もともとこれらの属性は API で必須だったため、既存の構成には影響ありません。

その他の非互換リソース

google_alloydb_cluster

google_alloydb_cluster リソースの deletion_protection 属性のデフォルト値が true になりました。

google_apigee_keystores_aliases_key_cert_file

google_apigee_keystores_aliases_key_cert_file リソースの certs_info 属性は読み取り専用になりました。
また、使用されるフレームワークが SDKv2 に移行されました。

google_artifact_registry_repository

google_artifact_registry_repository リソースの public_repository 属性のデフォルト値が削除されました。
既存の構成でデフォルト値に依存している場合は、手動で設定する必要があります。

google_bigquery_table

google_bigquery_table リソースの view.use_legacy_sql 属性のデフォルト値が削除されました。

google_bigtable_table_iam

google_bigtable_table_iam 系リソースの instance 属性が instance_name 属性にリネームされました。

google_billing_budget

google_billing_budget リソースの budget_filter.credit_types および budget_filter.subaccounts 属性はオプショナルになりました。
これまでは、オプショナルでしたが、プロバイダの動作で属性値を削除しても自動的に再設定されていました。

google_cloudfunctions2_function

google_cloudfunctions2_function リソースの service_config.service 属性は読み取り専用になりました。

google_compute_packet_mirroring

google_compute_packet_mirroring リソースの subnetworks および instances 属性は配列ではなく集合(Set)として扱われるようになりました。

google_compute_router

google_compute_router リソースの advertised_ip_ranges 属性はリストから集合(Set)として扱われるようになりました。

google_compute_instance_template, google_compute_region_instance_template

google_compute_instance_template リソース、および、 google_compute_region_instance_template リソースにおける以下の属性は、プロバイダでデフォルト値を設定しなくなりました。代わりに、API のデフォルト値が使用されます。

  • disk.type
  • disk.mode
  • disk.interface

google_project_service

google_project_service リソースの disable_on_destroy 属性のデフォルト値が false になりました。

google_secure_source_manager_instance, google_secure_source_manager_repository

google_secure_source_manager_instance リソース、および、 google_secure_source_manager_repository リソースにおける deletion_policy 属性のデフォルト値が DELETE から PREVENT になりました。

google_storage_bucket

google_storage_bucket リソースの retention_period 属性は int 型から string 型に変更されました。

新規リソース

以下の Data Source が追加されました。

  • google_artifact_registry_npm_package
  • google_certificate_manager_dns_authorization

また、以下のリソースが追加されました。

  • google_iap_web_region_forwarding_rule_service_iam_binding
  • google_iap_web_region_forwarding_rule_service_iam_member
  • google_iap_web_region_forwarding_rule_service_iam_policy
  • google_saas_runtime_saas

機能追加・変更

google_cloudbuild_trigger

google_cloudbuild_trigger リソースにおいて、 developer_connect_event_config 属性が追加されました。

google_cloud_tasks_queue

google_cloud_tasks_queue リソースにおいて、 desired_state 属性が追加されました。

google_cloud_run_v2_service

google_cloud_run_v2_service リソースにおいて、 max_instance_count 属性が追加されました。

google_compute_backend_service

google_compute_backend_service リソースにおいて、 params.resource_manager_tags 属性が追加されました。

google_compute_backend_bucket

google_compute_backend_bucket リソースにおいて、 params.resource_manager_tags 属性が追加されました。

google_compute_organization_security_policy

google_compute_organization_security_policy リソースにおいて、 short_name 属性が追加されました。

google_container_cluster

google_container_cluster リソースにおいて、 cluster_autoscaling.default_compute_class_enabled 属性が追加されました。

google_dialogflow_cx_agent

google_dialogflow_cx_agent リソースにおいて、以下の属性が追加されました。

  • enable_multi_language_training
  • locked
  • answer_feedback_settings
  • personalization_settings
  • client_certificate_settings
  • start_playbook
  • satisfies_pzs
  • satisfies_pzi

google_lustre_instance

google_lustre_instance リソースにおいて、 リソース作成のタイムアウト値が 20 分から 120 分に変更されました。

google_oracle_database_cloud_vm_cluster

google_oracle_database_cloud_vm_cluster リソースにおいて、 ODB ネットワークに関連する属性値はデフォルト値を API から取得するようになりました。

  • odb_network
  • odb_subnet
  • backup_odb_subnet

google_sql_database_instance

google_sql_database_instance リソースにおいて、 backupdr_backup 属性が追加されました。
この属性を使用すると、Terraform からバックアップからの復元を試みることができます。
backupdr_backup に記載されているように、この属性による復元は推奨されていません。

google_secure_source_manager_instance

google_secure_source_manager_instance リソースにおける ca_pool 属性がオプショナルになりました。

バグ修正

google_container_node_pool

google_container_node_pool で、 回復不能な taint の状態になった場合に、ノードプールの作成が失敗になる問題が修正されました。

google_gkeonprem_vmware_node_pool

google_gkeonprem_vmware_node_pool リソースにおける image 属性は API からデフォルト値を取得するようになりました。

google_workbench_instance

google_workbench_instance リソースの metadata 属性で install-monitoring-agent キーの値が設定可能になりました。

まとめ

Terraform Google Provider 7.0.0 では、多数のリソースの廃止、属性の廃止・非互換変更がありました。
また、リソースインポートの検証が強化され、正規表現による形式チェックが厳密になりました。

Terraform Google Provider は、Google Cloud の機能追加や変更に迅速に対応するため、頻繁に更新されます。
特に、メジャーバージョンアップでは今回のような破壊的な非互換変更が含まれることがあるため、アップグレード前に必ずリリースノートやアップグレードガイドを確認することをお勧めします。

この記事が Terraform Google Provider の最新バージョンへの理解の一助となれば幸いです。

Discussion