TerraformによるGoogle Cloud環境構築

本記事では、Infrastructure as Code(IaC)ツールのTerraformを使ってGoogle Cloud環境を構築する手順を、セットアップ方法から解説します。
Google Cloudには公式のIaCサービスとしてCloud Deployment Manager(CDM)がありますが、CDMは2020/4/15で更新が止まっています。そのため、本記事ではより多くのリソースをサポートし、コミュニティが活発なTerraformを紹介します。

Terraformとは

Terraformは、HashiCorp社によって開発されたオープンソースのIaCツールです。インフラの構成をコードとして記述することで、インフラの構築・変更・バージョン管理を自動化できます。

Terraformのメリット

  • インフラ構築の自動化
  • バージョン管理
  • 再現性
  • ドキュメント化
  • モジュール化

事前準備

Terraform CLIのインストール

Windows環境でのインストール手順を示します。

  1. Terraform CLIの実行ファイルのzipファイルをダウンロード
    Install | Terraform | HashiCorp Developer
    Explore Terraform product documentation, tutorials, and examples.
  2. zipファイルを解凍し、「terraform.exe」を任意のフォルダに配置(C:\Users\<ユーザ名>\terraform等)
  3. コマンドプロンプトで以下のコマンドを実行し、実行ファイルへのパスを通す
    setx PATH "%PATH%;<フォルダパス>"
    例)setx PATH "%PATH%;C:\Users\<ユーザ名>\terraform"
  4. コマンドプロンプトを閉じる
    手順3で開いたコマンドプロンプトを1度閉じないと、環境変数の設定が反映されない場合があります
  5. コマンドプロンプトを新しく開き、以下のコマンドを実行する
    terraform -v
  6. バージョン情報が出力されればインストール成功です

Google Cloud CLI(gcloud CLI)のインストール

  1. gcloud CLIのインストーラをダウンロード
    バージョニングされたアーカイブからのインストール  |  Google Cloud CLI Documentation
  2. zipファイルを解凍し、google-cloud-sdkフォルダを任意のフォルダに配置(C:\Users\<ユーザ名>等)
  3. フォルダ内のinstall.batを実行
    ※ SSL Errorでインストールに失敗した場合、SSL検査ソフトウェア(netscope等)による干渉が考えられます。
  4. コマンドプロンプトで以下のコマンドを実行し、binフォルダ内の実行ファイルへのパスを通す
    setx PATH "%PATH%;<フォルダパス>"
    例)setx PATH "%PATH%;C:\Users\<ユーザ名>\google-cloud-sdk\bin"
  5. コマンドプロンプトを閉じる
  6. コマンドプロンプトを新しく開き、以下のコマンドを実行する
    gcloud version
  7. バージョン情報が出力されればインストール成功
  8. コマンドプロンプトで以下のコマンドを実行し、対話形式でgcloud CLIをセットアップ
    gcloud init
  9. コマンドプロンプトで以下のコマンドを実行する
    gcloud auth application-default login
  10. 自動で開かれたログイン画面でログインすることで、アプリケーションがGoogleCloudAPIを使用するための認証情報を取得できる

リソース構築

例として、Pub/Subトピックを作成します。

設定ファイル作成

main.tfという名前でファイルを作成し、以下のコードを記述

# 使用するプロバイダプラグインを指定(今回はGCP環境を構築するためgoogle)
provider "google" {
  project = "<GCPプロジェクトID>"
  region = "<リージョン>"
}

# プロバイダプラグインとTerraform CLIのバージョンを指定
terraform {
  required_providers {
    google = {
      source = "hashicorp/google"
      version = "~> 6.10.0"
    }
  }
  required_version = "~> 1.9.0"
}

# リソースを定義
resource "google_pubsub_topic" "sample" {
  name = "sample"
}

Terraform CLIの初期化

以下のコマンドを実行し、terraformを初期化

terraform init

更新内容の確認

以下のコマンドを実行し、更新内容を確認

terraform plan

# google_pubsub_topic.sample will be created
(Pub/Subトピックが作成される)              

Plan: 1 to add, 0 to change, 0 to destroy
(1個のリソースが追加され、0個のリソースが変更され、0個のリソースが削除される)

リソース作成

以下のコマンドを実行し、更新内容をクラウドに反映

terraform apply

トピックが作成された

リソース変更

  1. 設定ファイルを編集(トピックにラベルを追加)
    # 使用するプロバイダプラグインを指定(今回はGCP環境を構築するためgoogle)
    provider "google" {
      project = "<GCPプロジェクトID>"
      region = "<リージョン>"
    }
    # プロバイダプラグインとTerraform CLIのバージョンを指定
    terraform {
      required_providers {
        google = {
          source = "hashicorp/google"
          version = "~> 6.10.0"
        }
      }
      required_version = "~> 1.9.0"
    }
    
    # リソースを定義(ラベルを追加)
    resource "google_pubsub_topic" "sample" {
      name = "sample"
      labels = {
        name = "aiueo"
      }
    }
  2. 以下のコマンドを実行し、更新内容を反映
terraform apply
コンソール上で変更できない設定値をTerraformで変更しようとすると、リソースを削除(destroy)した後に再作成(add)される場合があります

ラベルが追加された

リソース削除

  1. 設定ファイルのリソース定義部分を削除 or コメントアウト
    # 使用するプロバイダプラグインを指定(今回はGCP環境を構築するためgoogle)
    provider "google" {
      project = "techs-3-gcp-prj"
      region  = "asia-northeast1"
    }
    
    # プロバイダプラグインとTerraform CLIのバージョンを指定
    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "~> 6.10.0"
        }
      }
      required_version = "~> 1.9.0"
    }
    
    # リソース定義部分をコメントアウト
    # resource "google_pubsub_topic" "sample" {
    #   name   = "sample"
    #   labels = { 
    #     name = "aiueo" 
    #   }
    # }
  2. 以下のコマンドを実行し、更新内容を反映
    terraform apply
    「terraform destroy」でも削除できますが、このコマンドではterraformで管理している全リソースが削除されるため、一部のリソースのみ削除する場合は上記手順を推奨します

トピックが削除された

おわりに

本投稿では、Terraformを使ってGCP環境を構築する手順を紹介しました。Terraformを利用し、インフラ環境をコードとして定義することで、インフラの構築・管理を効率的に行うことが可能となります。皆様もぜひ、Terraformによるインフラ構築にチャレンジしてみてください。

タイトルとURLをコピーしました