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環境の構築についても触れていきたいと思います。
コメント