タダです.
Bytebase の設定は手動で設定していたのですが, Terraform のサポートされています.全ての設定をサポートされているわけでないですが,試した備忘録としてまとめていきます.
サポートされているリソースについて
Bytebase Terraform provider では次のリソースがサポートされています.
ローカル環境のプロジェクトを追加する
ローカルで 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 を使ってみたので使い方をまとめました.