TerraformでGoogle Cloudのサービスアカウントを作成してみた
データアナリティクス事業本部の根本です。TerraformでGoogle Cloudのリソース作成をしていて、サービスアカウントも作りたいなと思ったので検証してみました。よかったら読んでみてください。
この記事の対象者
- TerraformでGoogle Cloudのサービスアカウントを作成したいひと
前提条件
- Cloud Shell, IAM, Cloud Resource ManagerのAPIが使えること
検証の全体像
- Terraformでサービスアカウントを作成
- サービスアカウントにロールもセット
上記の検証をCloud Shellを用いて行います。
それでは早速検証していきます!
やってみる
Terraformの確認と準備
まずは、Cloud Shellを開いて、Terraformが入っているかコマンドで確認します。
terraform version
コマンドを実行して以下のようなバージョン情報の出力があれば問題ありません。
Terraform v1.5.7 on linux_amd64 Your version of Terraform is out of date! The latest version is 1.8.2. You can update by downloading from https://www.terraform.io/downloads.html
(今回は検証なのでバージョンは特に気にしません)
それではTerraformを動かす準備をしていきます。
まずはホームディレクトリ直下で、Terraform用のディレクトリを作成して移動します。
mkdir terraform_serviceaccount_test && cd terraform_serviceaccount_test
サービスアカウントを作成してみる
まずはサービスアカウントを作成してみます。
provider "google" { project = "プロジェクトID" region = "asia-northeast1" } resource "google_service_account" "terraform-test" { project = "プロジェクトID" account_id = "dev-terraform-service-account" display_name = "terraform_service_account" }
リファレンスを参考に作成しました。
リソースの種類はgoogle_service_account
を指定して、設定項目には以下を指定しました。
設定項目 | 設定値 |
---|---|
project | [任意]プロジェクトID |
account_id | [必須]サービスアカウントID |
display_name | [任意]表示名 |
それでは以下のコマンドを実行していきます。
terraform init
terraform init
コマンドが成功したらterraform apply
コマンドを実行します
terraform apply
コマンドを実行すると
Do you want to perform these actions?
と確認されますので、yes
と入力してEnterキーを押下します。
コマンドが成功したらサービスアカウントが作成されているか確認してみます。
サービスアカウントが、指定通り作成できていることを確認できました。
ロールを付与したサービスアカウントを作成してみる
次はロールを付与したサービスアカウントを作成してみます。 ホームディレクトリ直下へ移動して、ディレクトリを作成して移動します。
mkdir terraform_serviceaccount_test_with_role && cd terraform_serviceaccount_test_with_role
実行するTerraformは以下となります。
provider "google" { project = "プロジェクトID" region = "asia-northeast1" } resource "google_service_account" "terraform-role-test" { project = "プロジェクトID" account_id = "dev-serviceaccount-role" display_name = "terraform_service_account_with_role" } resource "google_project_iam_member" "log_writer_iam" { project = "プロジェクトID" role = "roles/logging.logWriter" member = "serviceAccount:${google_service_account.terraform-role-test.email}" }
リソースの種類はgoogle_project_iam_member
を指定してロール:roles/logging.logWriter(ログ書き込み権限)
を対象サービスアカウントに設定します。
リファレンスを参考に作成しました。
それでは先ほど同様に以下のコマンドを実行していきます。
terraform init
terraform init
コマンドが成功したらterraform apply
コマンドを実行します
terraform apply
コマンドを実行すると
Do you want to perform these actions?
と確認されますので、yes
と入力してEnterキーを押下します。
コマンドが成功したらサービスアカウントが作成されているかとロールが付与されているか確認してみます。
設定値通りロールも付与された状態で作成されていました。検証は無事成功です。
おわりに
TerraformでGoogle Cloudのサービスアカウントを作成してみました。リファレンスを見ると、他にも多くの項目があり柔軟に設定できるので運用に用いる際は他のリソースや設定項目も意識して実装したいですね。また時間があったらより深掘りをして記事にしたいと思います。
この記事がどなたかのお役に立てば嬉しいです。それではまた。