mcpField
F
fusion-infra-cli

fusion-infra-cli

github.com/equinorデータ・データベース491 回インストール
リポジトリ

fusion-infra-cli について

Fusion Infra CLI は、finf コマンドラインツールで Fusion サービスのデータベースを構築・移行するためのスキルです。ローカル開発と CI/CD に対応し、QA、本番、プルリクエスト用の一時データベースを扱います。

主な機能

  1. 01JSON 設定からデータベースを構築
  2. 02SQL ファイルまたはディレクトリから移行を実行
  3. 03CI、QA、本番、PR 環境に対応
  4. 04コマンド結果を出力ファイルに保存
  5. 05DefaultAzureCredential による認証

活用シーン

  1. 01開発用サービスデータベースの構築
  2. 02パイプラインでのデータベース移行
  3. 03プルリクエスト用一時データベースの作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/equinor/fusion-skills --skill fusion-infra-cli

インストール後、Claude Code で/fusion-infra-cliを入力して読み込まれたか確認します。

同梱ファイルCHANGELOG.mdreferences/db-config-schema.md

詳細

Fusion Infra CLI

使用する場面

Fusion サービスのデータベースをプロビジョニングまたは移行する必要がある場合に使用します。開発中のローカル環境、または CI/CD パイプライン内で利用できます。

主な使用例:

  • 「コンテキストサービスのデータベースをプロビジョニングして」
  • 「QA データベースでマイグレーションを実行して」
  • 「このプルリクエスト用の PR データベースをセットアップして」
  • 「データベースのプロビジョニング設定はどのような形式ですか?」
  • 「パイプラインのデータベースプロビジョニング手順で失敗します」
  • 「CI からコピーする PR データベースを作成して」

使用しない場面

  • アプリケーションコードやサービスの変更 — サービスリポジトリを使用してください
  • ロールや権限の管理 — fusion-roles-cli を使用してください
  • データベース以外のインフラ(ネットワーク、ストレージなど)
  • Kubernetes やコンテナーの管理

前提条件

.NET グローバルツールとして finf をインストールします:

dotnet tool install --global \
  --add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" \
  Fusion.Infra.Cli

最新バージョンに更新します:

dotnet tool update --global \
  --add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" \
  Fusion.Infra.Cli

認証には DefaultAzureCredential が自動的に使用されます(az login セッションが取得されます)。上書きするには -t <token> を渡します。

基本的なワークフロー — データベースのプロビジョニング

1. プロビジョニング設定ファイルを作成する

設定ファイルでデータベースのリソースを定義します。最小限の例(db-config.json):

{
  "name": "my-service",
  "environment": "ci"
}

SQL 権限を含む完全な設定:

{
  "name": "my-service",
  "environment": "fqa",
  "sqlPermission": {
    "owners": [
      { "clientId": "<app-registration-client-id>" }
    ],
    "contributors": [
      { "clientId": "<app-registration-client-id>" }
    ]
  }
}

完全なスキーマについては、references/db-config-schema.md を参照してください。

2. プロビジョニングを実行する

CI/非本番環境:

finf database provision -f db-config.json -e ci \
  --sql-owner-client-id <client-id> \
  --sql-contributor-client-id <client-id> \
  -o response.json --verbose

QA:

finf database provision -f db-config.json -e fqa \
  --sql-owner-client-id <client-id> \
  --sql-contributor-client-id <client-id> \
  -o response.json --verbose

本番環境(--production フラグを追加):

finf database provision -f db-config.json -e fprd \
  --production \
  --sql-owner-client-id <client-id> \
  --sql-contributor-client-id <client-id> \
  -o response.json --verbose

プルリクエスト(一時的なデータベース。CI からコピーします):

finf database provision -f db-config.json \
  -e pr -pr <pr-number> -ghr "equinor/my-repo" -c ci \
  --sql-owner-client-id <client-id> \
  --sql-contributor-client-id <client-id> \
  --timeout 500 -o response.json --verbose
3. マイグレーションを実行する

プロビジョニング後、SQL マイグレーションを適用します:

# Non-production
finf database migrate -d sql-myservice-fqa -m migrations/ \
  -o migrations.json --verbose

# Production
finf database migrate -d sql-myservice-fprd -m migrations/ \
  --production -o migrations.json --verbose

-m フラグには、.sql ファイルが格納されたディレクトリ、または単一の .sql ファイルを指定できます。

環境

キー用途
ci継続的インテグレーション
fqaQA/本番前環境
fprd本番環境(--production フラグが必要)
prプルリクエスト用の一時環境(-pr と -ghr が必要)

詳細リファレンス

すべてのフラグの詳細を確認するには、次を実行します:

finf database provision --help
finf database migrate --help

または、ソースドキュメントを参照してください:

安全性

  • 診断情報を取得するため、パイプラインでは必ず --verbose を使用してください
  • パイプラインの手順で結果を参照できるよう、必ず -o response.json で出力を保存してください
  • --production フラグは明示的な安全策です。fprd のプロビジョニングでは必ず指定してください
  • パイプラインの YAML に生のトークンを渡さないでください。シークレット変数を使用し、-t 経由で渡してください
  • database delete は PR 以外のデータベースに対して取り消しできません。実行前にユーザーに確認してください

コメント