GCP

Terraform と GCP の始め方:インストール・認証・ベストプラクティス

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


スポンサードリンク

前提条件とバージョン確認

項目 推奨バージョン (2026‑04 時点) 根拠
Terraform 本体 ≥ 1.9.0(最新安定版) https://developer.hashicorp.com/terraform/downloads の「Latest Release」欄に記載
Google Cloud Provider ~> 6.11.0 以上 Terraform Registry(https://registry.terraform.io/providers/hashicorp/google/latest) の required_version>= 1.9.0、Provider バージョンは 6 系の最新が 6.11.x 系です。※リリースノートで随時確認してください

⚠️ 注意
Provider バージョンは半年ごとにマイナーバージョンが上がります。versions.tf に記載するバージョン指定は「~> 6.11」や「>= 6.11,<7.0」のように範囲を明示し、常に公式リリースノートで互換性情報を確認してください。


Terraform CLI のインストール

macOS(Homebrew)

Ubuntu/Debian(APT)

Windows(公式 ZIP)

  1. https://www.terraform.io/downloads.html から terraform_1.9.x_windows_amd64.zip をダウンロード
  2. 任意のディレクトリに展開し、パスを環境変数 PATH に追加

バージョン確認

ポイントv1.9.x が表示されたらインストール完了です。バージョンが古い場合は再度インストール手順を実行してください。


Google Cloud Provider の設定

versions.tf(必須)

プロバイダブロック例 (provider.tf)

備考required_providersversion フィールドは 「~> 6.11」 と書くことで、
6.11.x 系の最新が自動で取得されます。上位互換(7.0 以降)への自動アップグレードは防げるため、突発的な破壊的変更を回避できます。


認証情報の安全な取り扱い

サービスアカウントキーの作成手順(概要)

  1. IAM → Service Accounts で新規サービスアカウント作成
  2. 必要最小限のロールを付与(例:roles/compute.instanceAdmin.v1, roles/network.admin
  3. 「キー」タブから JSON キーを生成しダウンロード

重要:キーは 機密情報 です。決してリポジトリにコミットせず、アクセス権が必要な環境だけで保管してください。

環境変数 GOOGLE_CREDENTIALS の使い方

方法 メリット デメリット
Base64 エンコードした JSON を直接設定 (export GOOGLE_CREDENTIALS=$(cat cred.json | base64 -w0)) CI/CD でシークレットストアに格納しやすい。環境変数漏洩リスクは同等だが、ログ出力されにくい デコード忘れで認証失敗しやすい
GOOGLE_APPLICATION_CREDENTIALS にファイルパスを設定 (export GOOGLE_APPLICATION_CREDENTIALS=$HOME/secrets/cred.json) ファイルベースのツールと相性が良い ファイル自体の権限管理が別途必要

Terraform でデコードする例(variables.tf

Provider に適用

安全上の注意
Base64 は暗号化ではなく「エンコード」だけです。漏洩した場合は即座にキーが復元可能になるため、必ずシークレット管理ツール(Vault、Secret Manager 等)で保護してください。
terraform console など対話的なコンソールで var.google_credentials_base64 を表示すると平文の JSON が出力されるので、実行時は sensitive = true に設定し、ログに流れないようにしましょう。


変数管理とベストプラクティス

ファイル構成例

主要変数 (variables.tf)

環境別 tfvars(例:dev.tfvars

実務での使い分け

項目 推奨方法
インフラ構成パラメータ(サイズ、タグ等) .tfvars ファイルまたは -var オプション
機密情報(サービスアカウントキー、API キー) 環境変数 / シークレットマネージャ
CI/CD の実装例 GitHub Actions で secrets.GCP_SA_JSON_BASE64GOOGLE_CREDENTIALS にエクスポート

GitHub Actions サンプル

ポイント:本番環境では -auto-approve の自動承認は避け、GitHub の「environment protection rule」や手動レビューを導入してください。


サンプル構成:VPC・Compute Engine・Pub/Sub

以下は最小構成のコード例です。実務に合わせてロールやタグ等を追加してください。

1️⃣ VPC とサブネット (network.tf)

2️⃣ Compute Engine インスタンス (instance.tf)

ベストプラクティス:本番では metadata_startup_script の代わりに Cloud‑Init、Ansible、または Packer イメージで構成を行い、インスタンス起動時の処理を最小化します。

3️⃣ Pub/Sub トピック & サブスクリプション (pubsub.tf)


Terraform ワークフロー(init → plan → apply)

コマンド 目的 補足
terraform init プラグイン・バックエンド取得 初回だけでなく、Provider バージョン変更時は -upgrade オプションを併用
terraform fmt -recursive コード整形 CI で自動実行推奨
terraform validate 設定の構文チェック plan 前に必ず実施
terraform plan -out=tfplan.out -var-file=dev.tfvars 変更点をファイルへ保存 -out によりレビューが容易になる
terraform show tfplan.out 計画内容の詳細表示 変更対象 (+, ~, -) を必ず確認
terraform apply tfplan.out 計画通りに適用 手動承認が必要な場合は -auto-approve を外す

実務での安全策

  1. Plan のレビュー:プルリクエストに Plan 出力を添付し、チームで確認。
  2. バックエンドロック:Terraform Cloud か、S3 + DynamoDB(AWS)/ GCS + ロックオブジェクトでロックを有効化。
  3. CI の自動テストterraform validateplan -detailed-exitcode を実行し、失敗したらパイプラインを停止。

State 管理と Terraform Cloud の活用

ローカル state のリスク

リスク 影響
ファイル破損・紛失 インフラの現状把握ができなくなる
同時実行による競合 予期せぬリソース削除や二重作成
バックアップ不足 復旧に時間がかかり、運用コスト増大

Terraform Cloud(remote backend)設定例 (backend.tf)

初回認証手順

ポイントTF_CLOUD_TOKEN機密情報。GitHub Actions 等では secrets.TF_CLOUD_TOKEN として注入し、平文で残さないようにしてください。

料金とプラン

プラン 無料枠 主な制限
Free 500 runs / 月 同時実行 1, ステート容量 250 MB
Team & Governance 有償 ロック、ポリシー、SAML SSO 等

小規模チームや PoC であれば Free プラン が十分です。


クリーンアップ(destroy)とリスク回避策

安全な削除フロー

⚠️ 注意terraform destroy -auto-approve本番環境では絶対に使用しない
予期せぬリソース削除はコストだけでなく、データ損失やサービス停止につながります。

よくあるエラーと対処法

エラー 原因例 対策
Error: Invalid credentials GOOGLE_CREDENTIALS が空・破損 環境変数を再設定し、base64 --decode で内容確認
Failed to query available provider packages ネットワーク制限・プロキシ未設定 HTTPS_PROXY/NO_PROXY を正しく設定、もしくは社内ミラーを利用
Locking state file failed 同時実行やロックファイル残存 Terraform Cloud に移行、または -lock-timeout=300s で待機

セキュリティ留意点

  1. 最小権限の原則
    bash
    gcloud projects add-iam-policy-binding my-project \
    --member="serviceAccount:terraform-sa@my-project.iam.gserviceaccount.com" \
    --role="roles/compute.instanceAdmin.v1"
    gcloud projects add-iam-policy-binding my-project \
    --member="serviceAccount:terraform-sa@my-project.iam.gserviceaccount.com" \
    --role="roles/network.admin"

    Owner 権限は付与しない。必要に応じて pubsub.editor などを追加。

  2. キーのローテーション

  3. 毎月または重要な権限変更時に新しい JSON キーを生成し、古いキーは即座に無効化。
  4. 自動化スクリプトで gcloud iam service-accounts keys createkeys delete を組み合わせる。

  5. シークレット管理

  6. HashiCorp Vault、Google Secret Manager、GitHub Secrets のいずれかを使用し、環境変数に注入。
  7. Base64 は暗号化ではない ことをチーム全員に周知し、アクセス権限は最小限に。

  8. State ファイルの暗号化

  9. Terraform Cloud の場合は自動で暗号化されますが、GCS バックエンド使用時は kms_key_name で CMEK を設定。

まとめと次のステップ

項目 要点
Terraform 本体 公式サイトから最新(≥ 1.9)を取得し、terraform version で確認
Google Provider ~> 6.11(最新版)を required_providers に明示。リリースノートは必ずチェック
認証情報 サービスアカウント JSON を Base64 エンコードし、環境変数 GOOGLE_CREDENTIALS 経由で注入。シークレットストアに保管
変数管理 variables.tf + .tfvars で非機密パラメータを管理、機密情報は環境変数/Secret Manager
サンプル構成 VPC → Subnet → Compute Engine → Pub/Sub のフローが一通り体験できる
ワークフロー terraform init → fmt/validate → plan -out → apply を CI に組み込み、Plan のレビューを必須化
State 管理 Terraform Cloud(Free)でリモートバックエンドとロック機能を利用。ローカル保存は避ける
クリーンアップ plan -destroy → apply で削除計画を可視化し、-auto-approve は CI のみ限定的に使用
セキュリティ 最小権限ロール、キーの定期ローテーション、シークレットは暗号化ストレージへ

次にやるべきこと

  1. 公式ドキュメント確認
  2. Terraform Registry の Google Provider ページで最新バージョンと required_version をチェック。
  3. CI パイプライン構築
  4. GitHub Actions(または Azure Pipelines 等)に上記の terraform fmt/validate/plan/apply ステップを実装し、Plan の自動コメント化を試す。
  5. 本番環境への適用
  6. 最小構成でステージング環境を作り、ロール・権限・キー管理フローを検証後、本番へ拡張する。

最終的なゴール:コードとしてインフラ(IaC)を完全に管理し、変更履歴とレビューが必ず行われる安全かつ再現性の高い GCP 環境を構築できることです。


この記事は 2026 年 4 月時点の情報に基づいています。リリースやベストプラクティスは随時変わりますので、公式ドキュメントで最新情報をご確認ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


-GCP