継続は力なり

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

Bytebase の API を使って手動オペレーションの仕組み化を試みる【DB インスタンス編】

タダです.

Bytebase を使っていて手動オペレーションの中でいわゆるトイルになってしまって運用上負担になってしまう状況を改善したいと思い,API を使ってみることにしました.この記事では Bytebase の API を使用するための事前準備,認証,特定のエンドポイントを叩いてみた内容をまとめます.

事前準備

事前準備としてサービスアカウントのユーザーを作ります.Workspace Admin か DBA のロールを付与する必要があるため,DBAを設定して作成しました.作成後にサービスアカウントキーをコピーしておきます.

www.bytebase.com

API の認証

API の認証ために以下の環境変数を設定します.

export bytebase_url=[Bytebase の外部 URL]
export bytebase_account=[サービスアカウントのユーザーメールアドレス]
export bytebase_password=[サービスアカウントキー]

環境変数の設定後,認証のエンドポイントを叩いて, {"token": "API トークン"} が返ってくれば認証成功です.

bytebase_token=$(curl -X POST ${bytebase_url}/v1/auth/login \
    --data-raw '{"email":"'${bytebase_account}'","password":"'${bytebase_password}'","web":true}' \
    --compressed 2>&1 

{"token":"hoge"}

特定のエンドポイントを叩いて実行確認をしてみる

今回は Bytebase のライセンスの割当て/剥奪を実行してみます.Bytebase のライセンスを購入したら DB インスタンスの設定画面よりトグルで ON/OFF することでライセンスの割当て/剥奪を容易に実行できます.ただし,毎回手動オペレーションが発生しており,これを API で実行できるようにしたいというのが今回のモチベーションになっています.インスタンスの設定をいじることができるのは /v1/instances/{instance} のエンドポイントになります.

api.bytebase.com

コマンドで試した結果,以下の実行によりライセンスの割当てと剥奪を実行することができました.

curl --request PATCH \
  --url https://[Bytebaseのドメイン]/v1/instances/[Bytebaseに登録しているDBインスタンスID]?update_mask=activation' \
  --header 'Authorization: Bearer [取得した認証トークン]' \
  --data '{
  "activation": true(有効化)/false(無効化)
}'

まとめ

Bytebase の API を使って普段手動オペレーションしている作業を API で実行できないか試してみたので,試した内容をまとめました.今後もオペレーションが増えてきた場合は API からの実行を試みて行こうと思います.

関連記事

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com