継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Bytebase の Terraform provider を試してみる

タダです.

Bytebase の設定は手動で設定していたのですが, Terraform のサポートされています.全ての設定をサポートされているわけでないですが,試した備忘録としてまとめていきます.

サポートされているリソースについて

Bytebase Terraform provider では次のリソースがサポートされています.

bytebase.cc

ローカル環境のプロジェクトを追加する

ローカルで Docker を立ち上げて新規のプロジェクトリソースを追加します.なお,最初は Sample project というのがあるだけです.

Docker を立ち上げた後 Terraform 用のサービスロールを追加し,ワークスペースDBA権限を持たせておきます.その後,Terraform 実行のためのサービスキーをコピーしておきます.

Docker の立ち上げコマンド

docker run --rm --init \
  --name bytebase \
  --publish 8080:8080 --pull always \
  --volume ~/.bytebase/data:/var/opt/bytebase \
  bytebase/bytebase:2.16.0

追加したサービスアカウント

Terraform provider を設定

以下のように provider 定義をしておきます.なお,必要なパラメータが①サービスアカウントのメールアドレス,②サービスアカウントのアクセスキー,③Bytebase の設定した外部 URLになります.

terraform {
  required_providers {
    bytebase = {
      source  = "bytebase/bytebase"
      version = "0.0.9"
    }
  }
}
provider "bytebase" {
  service_account = var.service_account
  service_key     = var.service_key
  url             = var.url
}

resource "bytebase_project" "first_my_project" {
  resource_id   = "first-my-project"
  title         = "Firest My project"
  key           = "FMP"
  workflow      = "UI"
  schema_change = "DDL"
}

プロジェクト初期化して, terraform apply で適用してみます.期待通りに First My project を追加できました.

❯ terraform init     

~中略~
Terraform has been successfully initialized!
~中略~

❯ terraform apply

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # bytebase_project.first_my_project will be created
  + resource "bytebase_project" "first_my_project" {
      + id            = (known after apply)
      + key           = "FMP"
      + resource_id   = "first-my-project"
      + schema_change = "DDL"
      + tenant_mode   = "TENANT_MODE_DISABLED"
      + title         = "Firest My project"
      + visibility    = "VISIBILITY_PUBLIC"
      + workflow      = "UI"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

bytebase_project.first_my_project: Creating...
bytebase_project.first_my_project: Creation complete after 0s [id=projects/first-my-project]
╷
│ Warning: Project not exists
│ 
│   with bytebase_project.first_my_project,
│   on project.tf line 1, in resource "bytebase_project" "first_my_project":
│    1: resource "bytebase_project" "first_my_project" {
│ 
│ Project projects/first-my-project not exists, try to exec the create operation
╵

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

terraform apply 実行後のプロジェクト一覧

まとめ

Bytebase の Terraform provider を使ってみたので使い方をまとめました.