TerraformでBigQuery上のリソースを管理する方法_PART1

インフラ関連

TerraformでBigQuery上のデータセットやテーブル等のリソースを管理するために必要なこと

BigQueryのデータセットやテーブル等、ちゃんと管理できていますか?

みなさん、データ分析基盤のDWH上に構築しているDWHのテーブルについて、権限管理などはちゃんとできていますか?データ分析基盤の構築やデータパイプラインの運用などを行っていると、分析用途の拡大に伴ってデータソースが増えたり、BIツールに繋ぐためのデータマートが増えるというケースは頻繁に発生するかと思います。

このような時にGoogle Cloud Platform(GCP)上のコンソールからGUIでBigQuery上のリソースを作成・更新したり、Cloud IAMを使ってIAMでのリソース管理を行うこと自体はそこまで難しいことではないかと思います。しかし、データセットやテーブルなどのリソースが増えるとそれに伴って管理も煩雑になってくるかと思います。

TerraformでGCP(BigQuery)上のリソースを管理してみよう

Terraformとはいわゆる「IaC(Infrastructure as Code)」で、インフラをソースコードとして管理するために利用するツールです。

Terraformでは様々なプロバイダーが用意されており、主要なパブリッククラウドはほぼサポートしています。当然GCPについてもBigQueryを含め、幅広くサポートされています。

BigQueryのプロバイダーとしては

  • google_bigquery_dataset
  • google_bigquery_job
  • google_bigquery_routine
  • google_bigquery_table

上記のようにデータセットやテーブルを始め、様々なプロバイダーが用意されています。

私が所属している組織ではデータ基盤の規模は小さいものの日々、頻繁にデータソースが増えたりBigQuery上のリソースの変更が発生するなど、運用に非常に手間が掛かっている状態です。

私自身がGCPのIAMについて全然知見がないため、どのような方法でBigQueryのリソース管理を行うべきか悩んでいたのですが、Twitterでいろいろ調べてみたところ、Terraformを利用して管理している企業が多いということを知り、さっそくですがTerraformでリソース管理ができないか、まずは情報収集を始めてみました。

コード(tfファイル)でBigQuery上のリソース管理ができる

Terraform自体は既に利用されている方も多いかと思いますが、コード(tfファイル)を作成してterraformのコマンド(terraform apply)を実行することで、tfファイルの内容に沿った形でGCP内にサービスが構築されます。

例えば、Terraformを利用してリソースの作成を行う場合、以下のようなファイルを作成することになります。

resource "google_bigquery_dataset" "dataset" {
dataset_id = "example_dataset"
friendly_name = "test"
description = "This is a test description"
location = "EU"
default_table_expiration_ms = 3600000

labels = {
env = "default"
}

access {
role = "OWNER"
user_by_email = google_service_account.bqowner.email
}

access {
role = "READER"
domain = "hashicorp.com"
}
}

resource "google_service_account" "bqowner" {
account_id = "bqowner"
}

(参考) https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/bigquery_dataset

Terraformをインストールしてみよう

それではまずはTerraformをインストールしてみましょう。一旦はLinux(Ubuntu/Debian)の手順を掲載しますが、公式ドキュメント上には他のOSへのインストール手順も掲載されています。
(参考) https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/gcp-get-started

まずはコンソール上で以下の4つのコマンドを実行します。

1.gnupg、software-properties-common、curlのインストール

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl

2.HashiCorpのGPGキーを追加します

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -

3.HashiCorp Linuxの公式リポジトリを追加

sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"

4.Terraform CLIをインストール

sudo apt-get update && sudo apt-get install terraform

 

次回はより、具体的な設定方法を説明するとともに、CI/CD環境の構築についても触れていきたいと思います。

コメント

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