0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

連載2: Windows 11 WSL2 で始めるIaC:WSL2 × Google Cloud × IaC 実践ガイド

Last updated at Posted at 2026-01-07

eyechatch-TOP306_1200x742.png

第2回:Terraform 導入と State 管理編

Terraform の State をローカルに置く時代は終わり —— GCS による実務レベルの状態管理

プロジェクトの論理構造と実現される世界

Terraformは、Google Cloud のインフラをコードで定義(IaC)するための強力なツールです。
本ステップでは、仮想マシンの作成に先立ち、「状態(State)」の管理場所をクラウドへ移行します。
Stateファイルをローカルに置いたままにすると、チーム開発や不慮のデータ紛失に耐えられません。
GCS(Google Cloud Storage)をバックエンドに設定し、堅牢な運用基盤を構築するのが本記事の目的です。

Terraform のインストール

手動バイナリ配置を避け、HashiCorp社の公式リポジトリを apt に登録して管理します。

[COMMAND]

# GPG鍵の取得とリポジトリ追加
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

# インストール
sudo apt update && sudo apt install -y terraform

💡 LOGIC: 公式リポジトリを利用することで、apt upgrade による一括更新が可能になります。

【実務の核心】GCS バケットへの State 移行

まずは State を保存するための「箱(バケット)」自体を Terraform で作成します。

STEP1:初期構成ファイルの作成と権限確認

⚠️ CAUTION: Terraformを実行するアカウントには、GCSバケットへの書き込み権限(例:roles/storage.objectAdmin)が必要です。

[PATH] main.tf

provider "google" {
  project = "YOUR_PROJECT_ID"
  region  = "us-central1"
}

# State保存用のバケット定義
resource "google_storage_bucket" "tf_state" {
  name     = "your-unique-tfstate-bucket"
  location = "US"
  storage_class = "STANDARD"
  versioning {
    enabled = true
  }
}

💡 LOGIC: バケットのバージョニングを有効にすることで、Stateの誤操作によるデータ消失を防ぎます。

STEP2:Backend への切り替え

バケット作成後、設定を追記してローカルの State をクラウドへ「昇格」させます。

[COMMAND]

# main.tf の冒頭に追記
terraform {
  backend "gcs" {
    bucket = "your-unique-tfstate-bucket"
    prefix = "terraform/state"
  }
}

⚠️ CAUTION: Backend設定内では、変数(var)やリソースの参照は一切使用できません。 そのため、バケット名はリテラル(文字列)で直接記述する必要があります。

追記後、以下のコマンドで移行を完了させます。

terraform init -migrate-state

正常性確認のポイント

移行が成功したことを、以下の観点で確認しましょう。

  • ローカルディレクトリから terraform.tfstate が消えている(または中身が空である)こと。
  • Google Cloud コンソールの GCS 画面に、指定したプレフィックスでファイルが存在すること。
  • terraform state list を実行し、定義したバケットが正常に表示されること。

セクションサマリー(Machine-readable summary)

purpose: Terraformの導入とGCSバックエンドによるState管理の確立
target: 安全なIaC運用を目指すエンジニア
used_services:
  - Terraform v1.x
  - Google Cloud Storage
reference_urls:
  - https://developer.hashicorp.com/terraform/language/settings/backends/gcs
risk_notes: Backendブロックでの変数参照不可という制約により、バケット名の動的変更ができない点に注意

[Source: https://developer.hashicorp.com/terraform/language/settings/backends/gcs]


次回は、Ansible を導入し、IAP(Identity-Aware Proxy)経由で VM にセキュア接続する手法を解説します。パブリックIPを持たないVMをどう操作するか、実務の勘所をお伝えします。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?