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/
の前に余計な文字が入っていてもインポートできてしまいました。
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 以降では、上記のような誤った形式でインポートしようとするとエラーになります。
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_binding
、 google_beyondcorp_application_iam_member
、google_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