それなりに適当にやってます

なんとなくそれっぽいメモとか備忘録とか適当に。 2018年5月にブログ移転しました。 古い記事は未整理です。

Trraform のインストールからGCPへの簡単な使い方までメモ

以前 AWS 環境向けに試してたんだけど、GCP ではやっていなかったので簡単にメモ

インストール

Terraform ホームページのダウンロードから、対象アーキテクチャのバイナリをダウンロード・配置する (~/bin 下に置くので次回ログイン以降は自動的にPATHに入る)

$ mkdir bin ; cd $_
$ wget https://releases.hashicorp.com/terraform/0.11.7/terraform_0.11.7_linux_amd64.zip
$ unzip terraform_0.11.7_linux_amd64.zip
$ cd ~
$ export PATH=${PATH}:~/bin

Google Cloud SDK の準備

Google Cloud SDK のドキュメント を参考に、gcloud コマンドを利用できるようにする。

$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk
$ gcloud init

GCP: サービスアカウントの作成

  • GCPコンソール > IAMと管理 > サービスアカウント > サービスアカウントを作成
    • 適切な 役割 を付与
    • 新しい秘密鍵の提供 > JSON
  • ダウンロードした JSON を、Terraform を実行する環境に配置する
$ cd ~
$ mkdir .gcp ; cd $_
$ vi accounts.json      #<-ダウンロードしたJSONの内容を反映

Terraform の初期設定

[Terrafrom ドキュメント : Google Cloud Provider] を参照して、GCP向けのプロバイダ設定をする。

$ cd ~
$ mkdir terraform-gcp-example ; cd $_
$ vi provider.tf
// Configure the Google Cloud provider
provider "google" {
  credentials = "${file("../.gcp/accounts.json")}"
  project     = "example-project"
  region      = "asia-northeast1"
}

Terraform の初期化と確認

terraform init を実行する事で、プロバイダに合ったプラグインダウンロードされ実行できる状態が整う。

$ terraform init

以後、構築したい環境に合わせた .tf ファイルを作成していく。

作成例

GCEインスタンスの作成

resource "google_compute_instance" "default" {
  name         = "sandbox"
  machine_type = "n1-standard-1"
  zone         = "asia-northeast1-c"

  tags         = ["sandbox"]

  boot_disk {
    auto_delete = true
    initialize_params {
      image = "centos-cloud/centos-7"
    }
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }

  scheduling {
    on_host_maintenance = "MIGRATE"
    automatic_restart   = true
  }
}

デプロイ~削除まで

$ terraform plan                    # Dry-Run
$ terraform apply                   # GCPへのデプロイ
$ terraform show                    # IPほかデプロイ後の情報を確認
$ terraform destroy                 # デプロイ環境の削除

以上