Terraformで環境構築の自動化 ~GCP編~

普段GCPにてシステムを運用しています。
これからの新規システムやリプレース等でもGCPの採用が多くなると思っています。
その為、面倒な環境構築を自動化 及び メンテナンスを簡易にする為に
Terraform・Terrafomerというツールを利用していきたいと思います。

※terraformにてプロジェクトを作成するのは面倒なので
あらかじめ作成しておきます。(My Project)

○ 読者対象
・GCP初心者 ・GCPをこれから使おうと思っている方

1.TerraformのダウンロードおよびPath設定(windows) 所要時間:3分

公式ページ より各OSでの設定が記載されています。
私の環境はWindows 64bitですので、64bitをクリックしダウンロードします。
※2020/02/19現在 terraform_0.12.20_windows_amd64.zip

Windows10では以下Pathの通っている場所が元々あった為
そこにzip内のterraform.exeを追加します。

C:\Users\ユーザ名\AppData\Local\Microsoft\WindowsApps

2.ユーザ設定(windows) 所要時間:5~10分

Cloud SDK をWindowsにインストールしている前提で進みます。
私事ですが、普段使っているユーザは使いたくない為
以下コマンドでユーザを切り替え・確認します。

・アカウントの切り替え
gcloud auth login
→ブラウザが起動され、今回利用するユーザを選択

・プロジェクトの選択
gcloud config set project <プロジェクトID>

・切り替え後の確認
gcloud config list
→accountの値を確認
→regionとprojectの値は後々利用します

今回以下のAPIをCloudコンソールの「APIとサービス」→「ライブラリ」から
有効にする必要があるのですが、クレジットカードを登録しないと有効にできない為
無料トライアルを登録し、有効にします。
・Google Compute Engine API
・Cloud Resource Manager API

次にサービスアカウントの秘密鍵を生成します。
「IAMと管理」→「サービスアカウント」にて「Compute Engine default service account」の「鍵を作成」を実行します。 (test.jsonとします)

3.定義ファイルの作成(tfファイル) 所要時間:5分~10分

公式ページ のProvidersから「Google Cloud Platform」を選択します。
ファイルの書式や書き方等が書いてあります。

ファイル名: test.tf
・対象インフラサービス
provider "google" {
  credentials = file("./test.json") サービスアカウントの秘密鍵
  project     = "my-project-id" GCPプロジェクトID
  region      = "asia-northeast1" リージョン
}

Provider以降はProvider Configuration Referenceを等を参考に入力していきます。
今回はプロジェクト内にGCEを作成します。※最低限な設定にしています。

ファイル名: test.tf
resource "google_compute_instance" "default" {
  name          = "test"
  machine_type  = "f1-micro"
  zone          = "asia-northeast1-b"
  boot_disk {
    auto_delete = true
    initialize_params {
      image = "ubuntu-os-cloud/ubuntu-1804-lts"
      size = 10
      type = "pd-standard"
    }
  }
  network_interface {
    network = "default"
  }
}

ひとまずこれで作成し、実行ディレクトリを作成・ファイルを移動します。

mkdir terraform
cd terraform
start .
→test.tfファイルと2でダウンロードしたJSONの秘密鍵(test.json)をコピー

4.terraformコマンドの実行 所要時間:3分

terraform init 初期化
terraform plan 計画

上記問題なければ、以下で実行
terraform apply
→yesを入力し実行

「Compute Engine」→「VMインスタンス」にて確認ができます。


今回、利用してみて個人的には初回はCloudコンソールで細かく構築し
その後Terrafomerで既存設定の出力→メンテナンス
または、その設定ファイルを基にTerraformで複製等を行う
のが良いと思いました。
※学習コスト削減の為

ここまでお読みいただきありがとうございました。

» お仕事のご依頼はこちら