Terraform CloudでGCP環境構築
投稿者:中根
はじめに
先日Terraform Cloudが5人まで無料で使えるようになりました。
今回はそのTerraform Cloudを利用してGCP上に環境を作成します。
Terraform Cloudの準備
兎にも角にもまずはTerraform Cloudのアカウントが必要となります。
Terraform Cloudにアクセスしアカウントを作成します。
アカウトを作成したらまず組織を作成します。
組織名とメールアドレスを入力します。
次にTerraform Cloudで利用するversion control system(VCS)の設定をします。
VCSはGithub、GitLab、Bitbucketから選択できます。
それぞれの設定手順はマニュアルに記載があるので割愛します。
Workspaceの作成
WorkspaceはNew Workspaceから作成します。
先程設定したVCSを選択するとリポジトリが表示されます。
選択すると設定画面が表示されます。ここでAdvanced optionsを選ぶと地下の設定が可能となります。
こちらはWorkspace作成後も変更が可能です。
環境変数
Workspaceが作成できたら環境変数の設定をします。
環境変数はTerraform Variables
とEnvironment Valiables
があります。
Terraform Variables
はterraform.tfvars
にセットする値を、Environment Variables
にはTerraformのShell環境で使用する値をセットします。
- GCP認証情報
GCPコンソールでTerraform Cloudで使用する権限を付与したサービスアカウントを作成し、JSONファイルをダウンロードします。
KeyはGOOGLE_CREDENTIALS
、Valueに上記JSONファイルの中身を貼り付けます。
機密情報の高い情報なのでSensitive
にチェックマークを入れます。
Sensitiveにチェックいれることで、閲覧不可の更新のみ、という状態になりGUIから参照することはできなくなります。
- Project ID
今回はGCPのプロジェクトIDも変数として扱うので一緒にセットします。
- CONFIRM_DESTROY
終了後のクリーンアップのためににCONFIRM_DESTROY
に1もセットします。
これはTerraform Cloudからterraform destroy
をするためのものです。
実環境ではうっかり削除できないように設定しないでおくのが良いですね。
通知設定
NotificationよりWebhookおよびSlackへの通知設定が行なえます。
今回はSlackへ通知するようにしてみましょう。
Slack側のWebhook URLを設定するだけです。
GCEインスタンスの作成
今回はシンプルにGCEインスタンスを1台作成する以下のTFファイルを使います。
variable "GOOGLE_CREDENTIALS" {}
variable "PROJECT_ID" {}
provider "google" {
credentials = "${var.GOOGLE_CREDENTIALS}"
project = "${var.PROJECT_ID}"
region = "us-central1"
zone = "us-central1-c"
}
resource "google_compute_instance" "tf-cloud-01" {
name = "tf-cloud-01"
machine_type = "f1-micro"
allow_stopping_for_update = true
boot_disk {
initialize_params {
size = 10
type = "pd-standard"
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
}
}
初回はQueue Planを実行します。
実行するとUI上からPlanが確認できます。
planが問題なく通ればコメントと承認ができます。
この設定はApply Methodにて自動/手動の設定ができます。
また通知設定がうまく行っていればこの段階でApply Pendingの通知が来ます。
それではインスタンスのマシンタイプをf1-microからg1-smallに変えたコードをGitlabへコミットします。
コミットすると自動的にTerraform Cloudにて変更を検知し、Terraform Cloud側でplanが走ります。
先程と同じように承認をすると変更が走ります。
環境削除
SettingからDestruction and Deletionを開きQueue destory planでWorkspaceの環境を削除できます。
ボタンを押すと作成時同様Planの確認、承認という流れになります。
まとめ
まだ触り始めたばかりですがTerraform Cloudは非常に良さそうな感じです。
現在Terraformを利用されている方はもちろん、手を出せていなかった方も5人までは無料なのでまずは試してみてはいかがでしょうか。