CLI コマンドリファレンス
infra CLI ツールの全コマンドとオプションについて説明します。
📍 コマンドの実行場所
infra CLI コマンドは、実行場所によって用途が異なります:
🔧 Infra リポジトリ内で実行するコマンド
これらのコマンドは infra リポジトリ(GenerativeX/infra)内で実行します:テナント管理(init, migrate, tenant list/show)、Terraform ファイル生成とデプロイ(generate, plan, apply)、テナント設定の検証(validate <tenant>)、Container Apps の管理(shell, logs, ps, restart)、カスタムドメイン設定(setup-ca)
📦 アプリケーションリポジトリ内で実行するコマンド
これらのコマンドは 個別のアプリケーションリポジトリ(infra.config.yml がある場所)で実行します:infra env encrypt <file>(環境変数ファイルの暗号化)、infra env decrypt <file>(環境変数ファイルの復号化)、infra config validate(infra.config.yml の検証)
目次
Infra リポジトリ内で実行するコマンド
- グローバルオプション
- ワークスペース管理
- テナント管理
- Terraform ファイル生成
- デプロイメント管理
- テンプレート管理
- 環境変数管理(テナント単位)
- CI/CD パイプラインセットアップ
- インフラ設定駆動型 CI/CD セットアップ:
infra rollout-ci - Azure 環境変数エクスポート
- Azure リソースグループダンプ
- ブラウザで開く
- Container Apps 管理
- カスタムドメイン設定
- 設定検証
- デバッグモード
- トラブルシューティング
- よく使うコマンド一覧
アプリケーションリポジトリ内で実行するコマンド
その他
グローバルオプション
infra --help # 全体ヘルプ
infra <command> --help # 各コマンドの詳細ヘルプ
infra --version # バージョン情報
ログレベル制御
すべてのコマンドでログ出力のレベルを制御できます。
ログレベル: デフォルトは警告とエラーのみ、--verbose / -v はすべての情報メッセージを表示、--quiet / -q はエラーのみを表示
注意: コマンドの主要な出力(tenant listの一覧、generateの完了メッセージなど)は、ログレベルに関係なく常に表示されます。ログレベル制御は、進捗メッセージや補足情報にのみ適用されます。
JSON 出力(API 統合用)
多くのコマンドは JSON 形式での出力をサポートしており、スクリプトや自動化での利用に便利です(例: infra tenant list --json, infra ps <tenant> <env> --json)
ワークスペース管理
プロジェクト全体の管理コマンド: yarn install(依存関係インストール)、yarn build(CLIツールビルド)、yarn dev(開発モード)、yarn lint(リンティング)、yarn type-check(TypeScript型チェック)、yarn install:global(グローバルインストール)、yarn frontend:dev/build/start/lint(フロントエンド開発)、yarn terraform:format/validate/docs(Terraform操作)
グローバルインストール
CLI ツールをグローバルにインストールすることで、どこからでも infra コマンドを実行できます: yarn install:global
これにより、以下のコマンドがどこからでも実行可能になります:
- infra (短縮版)
- infra-cli (完全版)
使用例
infra tenant list infra-cli tenant list
アンインストール
yarn uninstall:global
PATHを確認
which infra
---
## テナント管理
### テナント初期化
新しいテナントを対話式で作成します:
```bash
# 対話式初期化(推奨)
infra init <tenant-name>
# デフォルト設定で初期化
infra init <tenant-name> --defaults
例:
# 新しいテナント "my-company" を作成
infra init my-company
# 実行時の対話フロー:
# 1. テンプレート選択(frontend-backend/monolith)
# 2. 環境選択(dev/stg/prd)
# 3. リージョン選択
# 4. GitHub リポジトリ設定(Organization/repository-name 形式)
# 5. ACR とイメージ設定(サブスクリプション、ACR名、イメージ名)
# - サブスクリプション・ACR 一覧は自動取得(キャッシュ)
# - イメージの存在確認(存在しない場合も続行可能)
# 質問に答えていきます:
# - テンプレートタイプ(frontend-backend または monolith)
# - デプロイ先リージョン(japaneast など)
# - 作成する環境(dev, prd など)
# - データベース設定
# - レプリカ数
# など
重要:
- テナント名は小文字とハイフンのみ使用可能です
- テンプレートの選択後は変更できません(再作成が必要)
- 初期化後、
config.tomlと環境変数ファイルを確認・編集してください
テナントマイグレーション
既存の Azure Resource Group からリソース情報を取得し、テナントの設定を自動生成します:
# 全環境をマイグレーション
infra migrate <tenant-name>
# 特定環境のみマイグレーション
infra migrate <tenant-name> -e <environment>
infra migrate <tenant-name> --environment <environment>
例:
# 全環境をマイグレーション
infra migrate my-company
# dev環境のみマイグレーション
infra migrate my-company -e dev
# 実行フロー:
# 1. Azure サブスクリプション選択
# 2. Resource Group 選択
# 3. リソース情報のダンプ
# 4. Claude AI を使った設定生成(対話的)
# 5. 環境変数の自動エクスポート
前提条件:
- テナントが既に
infra initで作成されていること - Azure CLI がログイン済みであること
- 必要に応じて Claude Code CLI がインストールされていること
マイグレーション後の手順:
- 生成された設定ファイルを確認
- 環境変数ファイル(
.env.*.{environment})を必要に応じて編集 - 環境変数を暗号化:
infra encrypt <tenant-name> - 変更内容を確認:
infra plan <tenant-name> <environment> - デプロイ実行:
infra apply <tenant-name> <environment>
詳細情報:
マイグレーションの詳細については、マイグレーションガイドを参照してください。
テナント一覧・詳細
# テナント一覧を表示
infra tenant list
# JSON形式で出力
infra tenant list --json
# 特定のテナントの詳細を表示
infra tenant show <tenant-name>
# 例
infra tenant show my-company
出力例:
📋 テナント一覧
テナント名: my-company
テンプレート: frontend-backend (v1.0.0)
有効な環境: dev, prd
場所: /path/to/terraform/environments/tenants/my-company
変更検出
Git の変更から変更されたテナントと有効な環境を検出します。GitHub Actions などの CI/CD パイプラインで使用されます。
# デフォルト(HEAD^ から HEAD までの変更を検出)
infra detect-changes
# 特定のコミット範囲を指定
infra detect-changes --base <base-sha> --head <head-sha>
# JSON形式で出力(CI/CDで使用)
infra detect-changes --json
例:
# 直前のコミットとの変更を検出
infra detect-changes
# PRのbaseとheadを指定
infra detect-changes --base abc123 --head def456
# JSON形式で出力(GitHub Actionsで使用)
infra detect-changes --base $BASE --head $HEAD --json
出力例(通常形式):
Changed Tenants and Environments:
==================================
● code-agent
Environments: dev
● excelence
Environments: dev, prd
● pj-japan
Environments: dev
Total: 4 job(s)
出力例(JSON 形式):
[
{
"tenant": "code-agent",
"environment": "dev"
},
{
"tenant": "excelence",
"environment": "dev"
},
{
"tenant": "excelence",
"environment": "prd"
},
{
"tenant": "pj-japan",
"environment": "dev"
}
]
検出ロジック:
- テナント変更の検出:
terraform/environments/tenants/{tenant}/配下のファイル変更を検出 - Modules 変更の検出:
terraform/modules/配下の変更があった場合、全テナントを対象とする - 環境フィルタリング:
config.tomlでenabled: trueの環境のみを検出 - 無効な環境の除外:
enabled: falseの環境は自動的に除外される
オプション:
| オプション | 説明 | デフォルト値 |
|---|---|---|
--base <sha> | ベースコミット(比較開始点) | HEAD^ |
--head <sha> | ヘッドコミット(比較終了点) | HEAD |
--json | JSON 形式で出力 | なし |
使用例:
# 直前のコミットとの変更を検出
infra detect-changes
# 特定のコミット範囲
infra detect-changes --base abc123 --head def456
# GitHub Actionsで使用(PRの場合)
infra detect-changes --base ${{ github.event.pull_request.base.sha }} --head ${{ github.event.pull_request.head.sha }} --json
# GitHub Actionsで使用(pushの場合)
infra detect-changes --base ${{ github.event.before }} --head ${{ github.sha }} --json
注意点:
- Git リポジトリ内で実行する必要があります
- 変更がない場合は空の配列
[]を返します config.tomlに定義されていない環境は検出されませんenabled: falseの環境は自動的に除外されます
Terraform ファイル生成
config.toml と encrypted/ 配下のファイルから Terraform ファイルをゼロから自動生成します:
# 特定環境のファイル生成
infra generate <tenant-name> <environment>
# 全環境のファイル生成
infra generate <tenant-name>
infra generate <tenant-name> --all-envs
# 生成内容の確認のみ(実際には生成しない)
infra generate <tenant-name> <environment> --dry-run
# 既存ファイルを強制上書き
infra generate <tenant-name> <environment> --force
例:
# 開発環境のみ生成
infra generate my-company dev
# 本番環境のみ生成
infra generate my-company prd
# 全環境を生成
infra generate my-company --all-envs
# dry-runで確認
infra generate my-company dev --dry-run
重要:
generateコマンドは Terraform ファイルを ゼロから自動生成 します- 既存の
.tfファイルは完全に上書きされます config.tomlとencrypted/配下のファイルが入力として必要です- 手動で Terraform ファイルを編集しないでください - 次回の生成時に上書きされます
生成されるファイル
terraform/environments/tenants/{tenant-name}/{environment}/
├── main.tf # メインの Terraform 設定
├── variables.tf # 変数定義
├── outputs.tf # 出力定義
├── terraform.tfvars # 変数の値
└── backend.tf # Terraform State の保存先設定
デプロイメント管理
Terraform 操作
# Terraformプラン実行(変更内容の確認)
infra plan <tenant-name> <environment>
# Terraformアプライ実行(デプロイ)
infra apply <tenant-name> <environment>
# 自動承認でアプライ(確認なし)
infra apply <tenant-name> <environment> --auto-approve
# または、グローバルフラグ --yes を使用可能
infra apply <tenant-name> <environment> --yes
例:
# 開発環境のプラン確認
infra plan my-company dev
# 開発環境へデプロイ
infra apply my-company dev
# 本番環境へデプロイ(慎重に!)
infra plan my-company prd
infra apply my-company prd
自動生成機能:
plan と apply コマンドは、実行前に 自動的に generate コマンドを実行 します。
これにより、常に最新の config.toml と暗号化された環境変数ファイルの内容が反映されます。
# 以下のコマンドを実行すると...
infra plan my-company dev
# 内部的に以下が自動実行されます:
# 1. infra generate my-company dev ← 自動実行!
# 2. terraform init
# 3. terraform plan
# つまり、手動で generate を実行する必要はありません!
メリット:
- 手動で
generateを実行する必要がなくなりました - 常に最新の
config.tomlの内容が反映されます plan/apply実行前に必ずファイルが最新化されます- ワークフローが簡素化され、操作ミスが減ります
状態管理
# 状態とロック情報を確認
infra status <tenant-name> <environment>
# ロックを解除(慎重に実行)
infra unlock <tenant-name> <environment>
# ロックIDを指定して強制解除
infra unlock <tenant-name> <environment> <lock-id> --force
例:
# 開発環境の状態確認
infra status my-company dev
# ロック解除
infra unlock my-company dev
注意:
- Terraform State は Azure Storage Account で一元管理 されています
- ロックの解除は他の人がデプロイ中でないことを確認してから実行してください
- 複数人での同時デプロイはロック機構により防止されます
テンプレート管理
利用可能なテンプレートを確認します:
# テンプレート一覧
infra template list
利用可能なテンプレート:
| テンプレート | 説明 | アーキテクチャ | 推奨用途 |
|---|---|---|---|
frontend-backend | Next.js + FastAPI | 分離型 | API 重視のアプリ、マイクロサービス |
monolith | Next.js (API Routes 使用) | モノリシック | シンプルな Web アプリ、スタートアップ |
テンプレート詳細:
frontend-backend テンプレート
- フロントエンド: Next.js(External Ingress)
- バックエンド: FastAPI(Internal Ingress - フロントエンドからのみアクセス可能)
- データベース: Azure Database for MySQL
- Redis: オプション(キャッシュ、セッション管理)
- Storage: オプション(ファイル共有)
monolith テンプレート
- フロントエンド: Next.js(API Routes 使用、External Ingress)
- データベース: Azure Database for MySQL
- Redis: 必須(セッション管理)
- Storage: オプション(ファイル共有)
環境変数管理
GitHub Secrets セットアップ
GitHub Actions のワークフローから secrets のリストを CLI で自動抽出し、config.toml や.env ファイル、Terraform output から取得した環境変数とマッチングして、GitHub repository の secrets として登録します:
# コンポーネントを対話式で選択
infra setup-secret <tenant-name> <environment>
# コンポーネントを指定
infra setup-secret <tenant-name> <environment> --component <frontend|backend>
# 確認をスキップ
infra setup-secret <tenant-name> <environment> --component frontend -y
例:
# frontendのsecretsをセットアップ(対話式で選択)
infra setup-secret pj-japan dev
# componentを指定
infra setup-secret pj-japan dev --component frontend
# 確認をスキップ
infra setup-secret pj-japan dev --component backend -y
前提条件:
- GitHub CLI のインストール:
# macOS
brew install gh
# その他のOSは公式サイトを参照
# https://cli.github.com/
- GitHub CLI の認証:
gh auth login --scopes "repo,workflow,admin:org"
- config.toml に repository が設定されていること:
["environments.dev.frontend"]
repository = "GenerativeX/your-frontend-repo"
["environments.dev.backend"]
repository = "GenerativeX/your-backend-repo"
詳細は setup-secret コマンドリファレンス を参照してください。
暗号化・復号化
環境変数ファイルを暗号化・復号化する方法が 2 つあります:
1. テナント単位の暗号化・復号化
テナントディレクトリ内の全環境変数ファイルを一括で暗号化・復号化します:
# 環境変数ファイルを暗号化
infra encrypt <tenant-name>
# 環境変数ファイルを復号化
infra decrypt <tenant-name>
例:
# 暗号化
infra encrypt my-company
# .env.frontend.dev → encrypted/encrypted.env.frontend.dev
# .env.backend.dev → encrypted/encrypted.env.backend.dev
# .env.frontend.prd → encrypted/encrypted.env.frontend.prd
# .env.backend.prd → encrypted/encrypted.env.backend.prd
# 復号化
infra decrypt my-company
# encrypted/encrypted.env.frontend.dev → .env.frontend.dev
# encrypted/encrypted.env.backend.dev → .env.backend.dev
# encrypted/encrypted.env.frontend.prd → .env.frontend.prd
# encrypted/encrypted.env.backend.prd → .env.backend.prd
環境変数管理(ファイル単位)
📍 実行場所: このコマンドは アプリケーションリポジトリ内(
infra.config.ymlがある場所)で実行します。
特定の環境変数ファイルを暗号化・復号化します。GX_SHARED_PRIVATE_KEYを使用して dotenvx 互換フォーマットで暗号化します。インフラ設定駆動型 CI/CD で使用する環境変数ファイルの管理に使用します。
# 環境変数ファイルを暗号化(元のファイルに上書き)
infra env encrypt <file>
# 環境変数ファイルを復号化(元のファイルに上書き)
infra env decrypt <file>
例:
# 環境変数を設定
export GX_SHARED_PRIVATE_KEY="your-private-key-hex-string"
# 暗号化(.env.frontend.devを暗号化して同じファイルに上書き)
infra env encrypt .env.frontend.dev
# 暗号化(別ファイルに出力)
infra env encrypt .env.frontend.dev --output .env.vault
# 復号化(.env.vaultを復号化して同じファイルに上書き)
infra env decrypt .env.vault
# 復号化(別ファイルに出力)
infra env decrypt .env.vault --output .env.frontend.dev
オプション:
| オプション | 説明 | デフォルト値 |
|---|---|---|
--output <path> | 出力ファイルパス | 入力ファイルに上書き |
特徴:
- 既に暗号化済みのファイルの場合は自動的にスキップされます
GX_SHARED_PRIVATE_KEYを常に使用(環境変数キー名の指定は不要)- dotenvx 互換フォーマットで暗号化・復号化
- 元のファイルに上書き(
--outputで別ファイルに出力可能)
使用例:
# アプリケーションリポジトリのルートで実行(infra.config.ymlがある場所)
cd /path/to/your-app-repo
infra env encrypt .env.dev
infra env decrypt .env.vault
# 別ファイルに出力
infra env encrypt .env.dev --output .env.vault
infra env decrypt .env.vault --output .env.dev
注意:
- このコマンドは アプリケーションリポジトリ(
infra.config.ymlがある場所)で実行します GX_SHARED_PRIVATE_KEY環境変数が必要です- 暗号化されたファイルは Git にコミットできます
- 復号化されたファイルは
.gitignoreに追加することを推奨します
詳細は インフラ設定ガイド を参照してください。
環境変数ファイルの構成(テナント単位)
📍 実行場所: このセクションは infra リポジトリ内でのテナント単位の環境変数管理について説明しています。
テンプレートによって必要なファイルが異なります:
frontend-backend テンプレート:
terraform/environments/tenants/{tenant-name}/
├── .env.frontend.dev # フロントエンド開発環境変数
├── .env.frontend.prd # フロントエンド本番環境変数
├── .env.backend.dev # バックエンド開発環境変数
├── .env.backend.prd # バックエンド本番環境変数
├── .env.shared.dev # 共有環境変数(開発)
├── .env.shared.prd # 共有環境変数(本番)
└── encrypted/ # 暗号化されたファイル
├── encrypted.env.frontend.dev
├── encrypted.env.frontend.prd
├── encrypted.env.backend.dev
├── encrypted.env.backend.prd
├── encrypted.env.shared.dev
└── encrypted.env.shared.prd
monolith テンプレート:
terraform/environments/tenants/{tenant-name}/
├── .env.frontend.dev # フロントエンド開発環境変数
├── .env.frontend.prd # フロントエンド本番環境変数
└── encrypted/ # 暗号化されたファイル
├── encrypted.env.frontend.dev
└── encrypted.env.frontend.prd
環境変数変更の典型的なフロー
# 1. 復号化
infra decrypt my-company
# 2. .env.* ファイルを編集
vim terraform/environments/tenants/my-company/.env.frontend.dev
# 3. 再暗号化(必須!)
infra encrypt my-company
# 4. Terraform ファイル生成(plan/applyで自動実行されるが、手動でも可能)
infra generate my-company dev
# 5. デプロイ
infra apply my-company dev
重要:
- 暗号化前の
.env.*ファイルは.gitignoreに含まれています - 暗号化されたファイル(
encrypted/encrypted.env.*)のみを Git にコミットしてください - 復号化された
.env.*ファイルは絶対に Git にコミットしないでください - 暗号化には
AGE_SECRET_KEY環境変数が必要です - チーム内で同じ秘密鍵を共有する必要があります
CI/CD パイプラインセットアップ
⚠️ 非推奨 (Deprecated): このコマンドは非推奨です。代わりに インフラ設定駆動型 CI/CD セットアップ (
infra rollout-ci) を使用してください。
GitHub Actions CI/CD パイプラインを自動的にセットアップします。
# CI/CDパイプラインをセットアップ
infra setup-ci <tenant-name>
# 例
infra setup-ci my-company
このコマンドは、Devin に以下の作業を依頼するプロンプトを生成します:
- Docker イメージのビルドワークフローを作成
- Azure Container Registry (ACR) へのプッシュ設定
- 環境ごとのデプロイワークフロー
- GitHub Secrets の設定手順
いつ使う?
infra validateコマンドを実行した際に、以下のいずれかが表示された場合:
- ⚠️ ACR イメージが見つかりません
- ⚠️ デプロイ用の GitHub Actions ワークフローが見つかりません
使用例
# 1. 検証を実行
infra validate pj-japan
# 出力:
# ⚠️ CI/CDパイプラインのセットアップが必要です:
# - Frontend: ACRイメージ (pj-japan-nextjs) が未作成
# - Frontend (GenerativeX/pj-japan-nextjs): デプロイワークフローが未設定
#
# 💡 以下のコマンドでCI/CDパイプラインをセットアップできます:
# infra setup-ci pj-japan
# 2. CI/CDをセットアップ
infra setup-ci pj-japan
# 3. 生成されたプロンプトをDevinに送信
# Devinが自動的にGitHub Actionsワークフローを作成します
# 4. イメージがビルドされたら再検証
infra validate pj-japan
# ✅ すべてのリソースが揃いました
従来の infra ask コマンド
infra setup-ciはinfra askコマンドのショートカットです。infra askを使うと、他のシナリオも選択できます:
# 対話式でシナリオを選択
infra ask my-company
# シナリオ一覧:
# - Setup CI/CD Pipeline - GitHub Actions CI/CDパイプラインをセットアップ
# (今後、他のシナリオも追加予定)
インフラ設定駆動型 CI/CD セットアップ: infra rollout-ci
アプリケーションリポジトリに infra.config.yml を使用した設定駆動型 CI/CD を自動的にセットアップします。指定されたリポジトリに設定ファイルと GitHub Actions ワークフローを追加し、プルリクエストを作成します。
基本的な使い方
# リポジトリに自動セットアップ(PRを作成)
infra rollout-ci <repository-name>
# 例: GenerativeX/my-app リポジトリにセットアップ
infra rollout-ci my-app
# 例: 完全なリポジトリ名を指定
infra rollout-ci GenerativeX/my-app
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--org <org-name> | GitHub 組織名(リポジトリ名のみ指定時) | GenerativeX |
--branch <branch-name> | 作成するブランチ名 | feat/infra-config-cicd |
--dry-run | 実際の変更を行わずに実行内容を表示 | false |
前提条件
- GitHub CLI (
gh): インストールされ、認証済みであることgh --version
gh auth login
実行内容
このコマンドは以下を自動的に実行します:
- ✅ リポジトリの存在確認
- ✅ リポジトリを一時ディレクトリにクローン
- ✅
infra.config.ymlを追加(既存の場合はスキップ) - ✅
.github/workflows/infra-deploy-dev.ymlとinfra-deploy-prd.ymlを追加または更新(環境ごとに分離) - ✅
.github/workflows/infra-env-apply-dev.ymlとinfra-env-apply-prd.ymlを追加または更新(環境ごとに分離) - ✅ 古いワークフローファイル(
infra-deploy.yml,infra-env-apply.yml)が存在する場合は削除 - ✅ ブランチを作成またはチェックアウト
- ✅ 変更をコミット
- ✅ ブランチをプッシュ
- ✅ プルリクエストを作成または更新
使用例
基本的な使用
# リポジトリ名のみ指定(デフォルト組織: GenerativeX)
infra rollout-ci my-app
# 完全なリポジトリ名を指定
infra rollout-ci GenerativeX/my-app
# 別の組織のリポジトリ
infra rollout-ci my-org/my-app --org my-org
ブランチ名をカスタマイズ
# カスタムブランチ名を指定
infra rollout-ci my-app --branch feat/add-infra-ci
ドライラン(実行内容の確認)
# 実際の変更を行わずに実行内容を確認
infra rollout-ci my-app --dry-run
出力例:
🚀 Infrastructure Config CI/CD Rollout
Repository: GenerativeX/my-app
Branch: feat/infra-config-cicd
Dry run: yes
📋 Checking repository: GenerativeX/my-app...
✅ Repository found: GenerativeX/my-app
Default branch: main
[DRY RUN] Would create PR for GenerativeX/my-app
動作の詳細
既存ファイルの扱い
infra.config.yml: 既に存在する場合は更新しません(個別環境設定が既に書かれている可能性が高いため)- ワークフローファイル: 既存のファイルとテンプレートに差分がある場合のみ更新します
- 差分がない場合: ファイルの追加・更新をスキップし、プルリクエストも作成しません
プルリクエスト
- 既存のプルリクエストがある場合は更新します
- プルリクエストの本文には、セットアップ手順と次のステップが含まれます
出力例
成功時の出力
🚀 Infrastructure Config CI/CD Rollout
Repository: GenerativeX/my-app
Branch: feat/infra-config-cicd
Dry run: no
📋 Checking repository: GenerativeX/my-app...
✅ Repository found: GenerativeX/my-app
Default branch: main
📥 Cloning repository...
🌿 Creating or checking out branch: feat/infra-config-cicd
✅ Created new branch: feat/infra-config-cicd
📄 Copying template files...
📤 Pushing branch...
🎯 Creating or updating pull request...
✅ Pull request created successfully
🔗 https://github.com/GenerativeX/my-app/pull/123
既存ファイルがある場合
⚠️ infra.config.yml already exists, skipping update (preserving existing configuration)
⚠️ infra-deploy-dev.yml exists but has differences
⚠️ Old workflow files detected, will be replaced with new environment-specific workflows
📄 Copying template files...
📤 Pushing branch...
✅ Pull request #123 updated successfully
トラブルシューティング
GitHub CLI がインストールされていない
# macOS
brew install gh
# その他のOS
# https://cli.github.com/
GitHub CLI が認証されていない
gh auth login
リポジトリが見つからない
# リポジトリ名を確認
gh repo list GenerativeX
# 完全なリポジトリ名を使用
infra rollout-ci GenerativeX/my-app
プッシュが失敗する
- ブランチの保護設定を確認
- 適切な権限があることを確認
- 必要に応じて
--forceオプションを使用(ただし、このコマンドでは直接使用不可)
詳細は インフラ設定ガイド を参照してください。
Azure 環境変数エクスポート
Azure App Service または Azure Container Apps から環境変数を .env 形式でエクスポートします。既存の Azure リソースから環境変数を取得し、ローカルでの開発や設定の移行に使用できます。
前提条件
- Azure CLI がインストールされていること
- Azure アカウントにログインしていること (
az login) - App Service または Container Apps の読み取り権限があること
対話的な選択方式(推奨)
オプションなしで実行すると対話的に選択できます:
# オプションなしで実行すると対話的に選択できます
infra export-env
# 実行すると以下を順に選択:
# 1. サブスクリプション
# 2. リソースグループ
# 3. サービスタイプ (Container Apps / App Service)
# 4. サービス/アプリ
実行例:
infra export-env
# 出力:
# ✔ サブスクリプションを取得しました
# ? サブスクリプションを選択してください:
# ❯ GenerativeX Production (8bebe608-cec5-41c4-9ee0-4377b03cb235) [default]
# GenerativeX Development (abc123...)
#
# ✔ リソースグループを取得しました
# ? リソースグループを選択してください:
# ❯ pj-japan-prod-rg (japaneast)
# pj-usa-prod-rg (eastus)
#
# ? サービスタイプを選択してください:
# ❯ Container Apps
# App Service
#
# ✔ Container Apps を取得しました
# ? Container App を選択してください:
# ❯ pj-japan-backend (Succeeded)
# pj-japan-frontend (Succeeded)
#
# ✔ 環境変数を取得しました
# ✅ Container App "pj-japan-backend" の環境変数 42個を
# /path/to/exported_env/pj-japan-backend.env にエクスポートしました
パラメータ指定方式
# Container Appsから環境変数をエクスポート
infra export-env \
--subscription e3143cb2-4707-4614-bbba-3ddeb66669c2 \
--resource-group "rg-name" \
--service-type "containerapp" \
--app-name "app-name"
# App Serviceから環境変数をエクスポート
infra export-env \
--subscription e3143cb2-4707-4614-bbba-3ddeb66669c2 \
--resource-group "rg-name" \
--service-type "appservice" \
--app-name "app-name"
# Azure PortalのURLを指定(App Serviceのみ)
infra export-env --url "<portal-url>"
# 出力ファイルを指定
infra export-env --service-type "containerapp" --output ".env.production"
# スロット設定を除外(App Serviceのみ)
infra export-env --service-type "appservice" --exclude-slot-settings
# 既存ファイルを確認なしで上書き
infra export-env --overwrite
オプション
| オプション | 説明 | 例 |
|---|---|---|
--url <url> | Azure Portal の App Service 環境変数設定ページの URL(App Service のみ) | ポータル URL をコピー |
--subscription <id> | Azure サブスクリプション ID(指定しない場合は選択式) | --subscription "8bebe608-cec5-41c4-9ee0-4377b03cb235" |
--resource-group <name> | リソースグループ名(指定しない場合は選択式) | --resource-group "pj-japan-prod-rg" |
--service-type <type> | サービスタイプ: containerapp または appservice(指定しない場合は選択式) | --service-type "containerapp" |
--app-name <name> | App Service/Container App 名(指定しない場合は選択式) | --app-name "pj-japan-backend" |
--output <path> | 出力ファイルパス(デフォルト: exported_env/{app-name}.env) | --output ".env.production" |
--overwrite | 既存ファイルを確認なしで上書き | --overwrite |
--exclude-slot-settings | スロット設定の環境変数を除外(App Service のみ) | --exclude-slot-settings |
--no-comments | コメントを追加しない | --no-comments |
使用例
# 対話的にエクスポート(推奨)
infra export-env
# Container Appsから環境変数をエクスポート
infra export-env \
--subscription "8bebe608-cec5-41c4-9ee0-4377b03cb235" \
--resource-group "pj-japan-prod-rg" \
--service-type "containerapp" \
--app-name "pj-japan-backend"
# App ServiceからAzure Portal URLを使用してエクスポート
infra export-env --url "https://portal.azure.com/#@generativex.onmicrosoft.com/resource/subscriptions/e3143cb2-4707-4614-bbba-3ddeb66669c2/resourceGroups/rg-my-company-dev/providers/Microsoft.Web/sites/my-app-frontend/environmentVariablesAppSettings"
# 特定のファイルにエクスポート
infra export-env \
--service-type "containerapp" \
--app-name "pj-japan-backend" \
--output ".env.production"
# スロット設定を除外してエクスポート(App Serviceのみ)
infra export-env \
--service-type "appservice" \
--resource-group "pj-japan-prod-rg" \
--app-name "pj-japan-prod" \
--exclude-slot-settings
# 既存ファイルを確認なしで上書き
infra export-env \
--service-type "containerapp" \
--app-name "pj-japan-backend" \
--output ".env.local" \
--overwrite
# コメントなしでエクスポート
infra export-env \
--service-type "containerapp" \
--app-name "pj-japan-backend" \
--no-comments
出力形式
App Service(コメント付き)
# Azure App Service Environment Variables
# Generated on: 2024-01-15T10:30:00.000Z
# Total variables: 25
API_URL=https://api.example.com
# Slot setting
SECRET_KEY=your-secret-key
Container Apps(コメント付き)
# Azure Container App Environment Variables
# Generated on: 2024-01-15T10:30:00.000Z
# Total variables: 42
API_URL=https://api.example.com
# SECRET REFERENCE: database-password
DATABASE_PASSWORD=<secret:database-password>
NODE_ENV=production
注意: Container Apps では、シークレット参照の環境変数は <secret:シークレット名> という形式で保存されます。実際の値は Azure Key Vault または Container Apps のシークレットストアに保存されています。
コメントなし
API_URL=https://api.example.com
SECRET_KEY=your-secret-key
DATABASE_PASSWORD=<secret:database-password>
NODE_ENV=production
セキュリティ上の注意点
-
機密情報の取り扱い: 生成された.env ファイルには機密情報が含まれている可能性があります。
exported_env/ディレクトリを.gitignoreに追加することを強く推奨します。 -
アクセス権限: App Service または Container Apps の環境変数を読み取るには適切な Azure 権限が必要です。
-
スロット設定:
--exclude-slot-settingsオプションを使用して、本番環境固有の設定を除外することができます(App Service のみ)。 -
シークレット参照: Container Apps のシークレット参照は
<secret:シークレット名>という形式で保存されます。実際のシークレット値を取得するには、Azure Portal または Azure CLI を使用する必要があります。 -
ファイル上書き:
- デフォルトでは既存ファイルがある場合に確認メッセージが表示されます
--overwriteオプションを使用すると確認なしで上書きされます- 重要なファイルは事前にバックアップを取ることを推奨します
Azure リソースグループダンプ
Azure Resource Group の構成情報を取得し、リソースの一覧や詳細をエクスポートします。既存の Azure 環境を調査したり、別のプロジェクトへの移行のために構成情報を取得する際に使用します。
前提条件
- Azure CLI がインストールされていること
- Azure アカウントにログインしていること (
az login) - Resource Group の読み取り権限があること
対話的な選択方式(推奨)
オプションなしで実行すると対話的に選択できます:
# オプションなしで実行すると対話的に選択できます
infra dump
# 実行すると以下を順に選択:
# 1. サブスクリプション
# 2. リソースグループ
# 3. 出力形式(サマリー or 詳細JSON)
実行例:
infra dump
# 出力:
# ✔ 3個のサブスクリプションを取得しました
# ? Azure サブスクリプションを選択してください:
# ❯ GenerativeX Production (8bebe608-cec5-41c4-9ee0-4377b03cb235) [default]
# GenerativeX Development (abc123...)
#
# ✔ 25個のリソースグループを取得しました
# ? リソースグループを選択してください:
# ❯ rg-pj-japan-prd (japaneast)
# rg-pj-usa-prd (eastus)
# shared-rg (japaneast)
#
# ✔ 42個のリソースを取得しました
パラメータ指定方式
# サブスクリプションとリソースグループを指定
infra dump \
--subscription e3143cb2-4707-4614-bbba-3ddeb66669c2 \
--resource-group "rg-name"
# JSON形式で出力(詳細情報)
infra dump \
--subscription e3143cb2-4707-4614-bbba-3ddeb66669c2 \
--resource-group "rg-name" \
--format json
# 出力ファイルを指定
infra dump \
--resource-group "rg-name" \
--output "exported_env/my-resources.json"
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--subscription <id> | Azure サブスクリプション ID(指定しない場合は選択式) | なし |
--resource-group <name> | リソースグループ名(指定しない場合は選択式) | なし |
--format <format> | 出力形式: summary (サマリー) または json (詳細 JSON) | summary |
--output <path> | 出力ファイルパス(指定しない場合はデフォルトパス) | migration_tmp/{subscription-id}/{resource-group-name}/resources.json (JSON) または summary.txt (サマリー) |
使用例
# 対話的にダンプ(推奨)
infra dump
# サマリー形式でコンソールに出力
infra dump \
--subscription "8bebe608-cec5-41c4-9ee0-4377b03cb235" \
--resource-group "rg-pj-japan-prd"
# JSON形式でファイルに保存
infra dump \
--subscription "8bebe608-cec5-41c4-9ee0-4377b03cb235" \
--resource-group "rg-pj-japan-prd" \
--format json \
--output "migration_tmp/pj-japan-prd-resources.json"
# サマリーをファイルに保存
infra dump \
--resource-group "rg-pj-japan-prd" \
--format summary \
--output "migration_tmp/pj-japan-prd-summary.txt"
出力形式
サマリー形式(デフォルト)
📊 リソースグループ: rg-pj-japan-prd
サブスクリプション: 8bebe608-cec5-41c4-9ee0-4377b03cb235
総リソース数: 42
リソース一覧:
────────────────────────────────────────────────────────────────────────────
▸ Microsoft.App/containerApps (3個)
• ca-pj-japan-backend-prd [japaneast]
• ca-pj-japan-frontend-prd [japaneast]
• ca-pj-japan-worker-prd [japaneast]
▸ Microsoft.App/managedEnvironments (1個)
• env-pj-japan-prd [japaneast]
▸ Microsoft.DBforMySQL/flexibleServers (1個)
• mysql-pj-japan-prd [japaneast]
▸ Microsoft.Cache/Redis (1個)
• redis-pj-japan-prd [japaneast]
▸ Microsoft.Network/virtualNetworks (1個)
• vnet-pj-japan-prd [japaneast]
...
────────────────────────────────────────────────────────────────────────────
JSON 形式
{
"subscriptionId": "8bebe608-cec5-41c4-9ee0-4377b03cb235",
"resourceGroupName": "rg-pj-japan-prd",
"timestamp": "2025-01-23T10:30:00.000Z",
"resourceCount": 42,
"resources": [
{
"id": "/subscriptions/8bebe608-.../resourceGroups/rg-pj-japan-prd/providers/Microsoft.App/containerApps/ca-pj-japan-backend-prd",
"name": "ca-pj-japan-backend-prd",
"type": "Microsoft.App/containerApps",
"location": "japaneast",
"properties": {
"provisioningState": "Succeeded",
"configuration": { ... },
"template": { ... }
},
"tags": {
"Environment": "prd",
"Project": "pj-japan"
}
},
...
]
}
活用シーン
既存環境の調査
# 既存の本番環境のリソース構成を調査
infra dump --resource-group "rg-pj-japan-prd"
# 詳細情報をJSONで保存して後で分析
infra dump \
--resource-group "rg-pj-japan-prd" \
--format json \
--output "migration/pj-japan-prd-resources.json"
環境間の比較
# 開発環境と本番環境のリソースを比較
infra dump --resource-group "rg-pj-japan-dev" --output "migration/dev-resources.json" --format json
infra dump --resource-group "rg-pj-japan-prd" --output "migration/prd-resources.json" --format json
# JSONファイルを比較ツールで比較
ドキュメント作成
# サマリー形式でドキュメント作成
infra dump \
--resource-group "rg-pj-japan-prd" \
--format summary \
--output "docs/infrastructure-summary.txt"
移行計画の作成
# 複数のリソースグループの構成を取得
infra dump --resource-group "rg-old-system-prd" --format json --output "migration/old-system.json"
infra dump --resource-group "shared-rg" --format json --output "migration/shared-infra.json"
# 取得した情報を元に移行計画を立てる
注意点
- 権限: リソースグループ内の全リソースを読み取る権限が必要です(
Readerロール以上) - 大規模環境: リソース数が多い場合、取得に時間がかかることがあります
- 機密情報: JSON 出力には設定値が含まれる場合があります。機密情報の取り扱いに注意してください
- キャッシュ: サブスクリプション情報はメモリにキャッシュされますが、リソース情報は毎回取得されます
export-env との違い
| 機能 | infra dump | infra export-env |
|---|---|---|
| 対象 | リソースグループ全体 | 特定の App Service / Container App |
| 取得内容 | 全リソースの構成情報 | 環境変数のみ |
| 出力形式 | サマリー or JSON | .env ファイル |
| 主な用途 | 環境調査、移行計画、ドキュメント作成 | 環境変数のバックアップ、ローカル開発、設定の移行 |
| 詳細度 | リソースの設定全体(ネットワーク、等) | 環境変数とシークレット参照のみ |
| 使用タイミング | infra init 前の既存環境調査 | アプリの環境変数を確認・バックアップしたい時 |
ブラウザで開く
テナントの site_url をデフォルトブラウザで開きます。
browse コマンド
config.toml に設定された site_url を取得し、デフォルトブラウザで開きます。
基本的な使い方
# テナント名と環境を指定
infra browse <tenant-name> <environment>
# 例: pj-japan の開発環境
infra browse pj-japan dev
# 例: my-company の本番環境
infra browse my-company prd
使用例
# 開発環境を開く
infra browse pj-japan dev
# 本番環境を開く
infra browse pj-namba prd
出力例
🔍 pj-japan/dev のURLを取得中...
🌐 URL: https://nissaydev.flower.gx-dev.app
🚀 ブラウザで開いています...
✅ ブラウザで開きました
前提条件
config.tomlの対象環境にsite_urlが設定されていること- ブラウザが利用可能な環境であること(GUI 環境)
設定例
config.toml での site_url 設定:
["environments.dev"]
enabled = true
location = "japaneast"
site_url = "https://nissaydev.flower.gx-dev.app"
["environments.prd"]
enabled = true
location = "japaneast"
site_url = "https://app.example.com"
注意点
site_urlが設定されていない場合はエラーになります- サーバー環境(GUI なし)では動作しません
- macOS、Windows、Linux に対応しています
Container Apps 管理
Azure Container Apps に対するシェル接続、ログストリーミング、再起動などの運用管理コマンドです。
前提条件
- Azure CLI (
az) がインストールされていること - Azure にログインしていること (
az login) - 対象の Container Apps へのアクセス権限があること
- 少なくとも以下のロールが必要:
Container Apps ContributorまたはContainer Apps Reader+Container Apps Exec Role
リソースグループ命名規則
Container Apps コマンドは以下の命名規則でリソースグループを検索します:
rg-<tenant-name>-<environment>
例:
rg-pj-namba-prdrg-my-company-dev
シェル接続: infra shell
Container App のシェルに接続します。TUI(ターミナルユーザーインターフェース)で対話的に Container App、リビジョン、レプリカ、コンテナを選択できます。
基本的な使い方
# テナント名と環境を指定してシェルに接続
infra shell <tenant-name> <environment>
# 例: pj-namba の本番環境
infra shell pj-namba prd
# 例: pj-japan の開発環境
infra shell pj-japan dev
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--app <app-name> | Container App 名を直接指定(選択をスキップ) | なし |
--revision <revision> | リビジョン名を直接指定 | なし |
--replica <replica> | レプリカ名を直接指定 | なし |
--container <container> | コンテナ名を直接指定 | なし |
--command <command> | 実行するシェルコマンド | /bin/bash |
使用例
# 基本的な使用(TUIで全て選択)
infra shell pj-namba prd
# Container Appを直接指定
infra shell pj-namba prd --app ca-pj-namba-backend-prd
# shシェルを使用
infra shell pj-namba prd --command /bin/sh
# 全てのパラメータを直接指定
infra shell pj-namba prd \
--app ca-pj-namba-backend-prd \
--revision ca-pj-namba-backend-prd--abc123 \
--replica ca-pj-namba-backend-prd--abc123-xyz789 \
--container backend
実行フロー
-
Container App 選択
- 複数の Container Apps がある場合は、TUI で選択
- 1 つしかない場合は自動的に選択
-
リビジョン選択
- アクティブなリビジョンが複数ある場合は、TUI で選択
- 1 つしかない場合は自動的に選択
-
レプリカ選択
- 複数のレプリカがある場合は、TUI で選択(実行状態も表示)
- 1 つしかない場合は自動的に選択
-
コンテナ選択
- 複数のコンテナがある場合は、TUI で選択(イメージ名も表示)
- 1 つしかない場合は自動的に選択
-
シェル接続
- 選択された環境にシェル接続
出力例
✔ 3個の Container Apps を見つけました
? Container Appを選択してください: (Use arrow keys)
❯ ca-pj-namba-backend-prd (Succeeded)
ca-pj-namba-frontend-prd (Succeeded)
ca-pj-namba-worker-prd (Succeeded)
📦 リビジョン: ca-pj-namba-backend-prd--abc123
🔄 レプリカ: ca-pj-namba-backend-prd--abc123-xyz789
📦 コンテナ: backend
🚀 シェルに接続しています...
Container App: ca-pj-namba-backend-prd
Revision: ca-pj-namba-backend-prd--abc123
Replica: ca-pj-namba-backend-prd--abc123-xyz789
Container: backend
Command: /bin/bash
root@ca-pj-namba-backend-prd--abc123-xyz789:/app# ls
app bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
root@ca-pj-namba-backend-prd--abc123-xyz789:/app# exit
✅ シェルセッションを終了しました
よくあるユースケース
# ログファイルの確認
infra shell my-company prd
# シェル内で:
# $ cd /var/log
# $ tail -f application.log
# データベースマイグレーション実行
infra shell my-company prd
# シェル内で:
# $ npm run db:migrate
# $ python manage.py migrate
# 環境変数の確認
infra shell my-company prd
# シェル内で:
# $ env | grep DATABASE
# $ printenv NODE_ENV
# ファイルシステムの調査
infra shell my-company prd
# シェル内で:
# $ df -h
# $ ls -la /app
# $ cat /app/package.json
ログストリーミング: infra logs
Container App のログをリアルタイムでストリーミング表示します。
基本的な使い方
# テナント名と環境を指定してログをストリーミング
infra logs <tenant-name> <environment>
# 例: pj-namba の本番環境
infra logs pj-namba prd
# 例: pj-japan の開発環境
infra logs pj-japan dev
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--app <app-name> | Container App 名を直接指定 | なし |
--revision <revision> | リビジョン名を直接指定 | なし |
--container <container> | コンテナ名を直接指定 | なし |
--tail <lines> | 表示する行数 | 100 |
--no-follow | リアルタイムストリーミングを無効化 | false |
--type <type> | ログタイプ (console, system) | console |
使用例
# 基本的な使用(TUIでContainer App選択)
infra logs pj-namba prd
# Container Appを直接指定
infra logs pj-namba prd --app ca-pj-namba-backend-prd
# 直近の500行を表示してリアルタイムストリーミング
infra logs pj-namba prd --tail 500
# リアルタイムストリーミングなしで最新100行のみ表示
infra logs pj-namba prd --no-follow
# システムログを表示
infra logs pj-namba prd --type system
# 特定のコンテナのログを表示
infra logs pj-namba prd --container backend
# 特定のリビジョンのログを表示
infra logs pj-namba prd --revision ca-pj-namba-backend-prd--abc123
出力例
✔ 3個の Container Apps を見つけました
📦 Container App: ca-pj-namba-backend-prd
📜 ログをストリーミングしています...
Container App: ca-pj-namba-backend-prd
Type: console
2025-01-23T10:30:15.123Z [INFO] Application starting...
2025-01-23T10:30:15.456Z [INFO] Database connected
2025-01-23T10:30:16.789Z [INFO] Server listening on port 3000
2025-01-23T10:30:20.123Z [INFO] GET /api/health 200 5ms
2025-01-23T10:30:25.456Z [ERROR] Failed to connect to Redis
2025-01-23T10:30:30.789Z [INFO] Retrying Redis connection...
...
Ctrl+C でログストリーミングを終了できます。
ログの種類
- console: アプリケーションの標準出力/標準エラー出力
- system: Container Apps プラットフォームのシステムログ
環境変数表示: infra env show
Container App の環境変数を表示します。
基本的な使い方
# テナント名と環境を指定
infra env show <tenant-name> <environment>
# 例: pj-namba の本番環境
infra env show pj-namba prd
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--app <app-name> | Container App 名を直接指定 | なし |
--json | JSON 形式で出力 | なし |
--raw | マスキングせずに生の値を表示 | なし |
使用例
# 基本的な使用(TUI で Container App 選択)
infra env show pj-namba prd
# Container App を直接指定
infra env show pj-namba prd --app ca-pj-namba-backend-prd
# JSON 形式で出力
infra env show pj-namba prd --json
# マスキングせずに生の値を表示
infra env show pj-namba prd --raw
再起動: infra restart
Container App を再起動します。新しいイメージをデプロイせずに、既存のコンテナを再起動したい場合に使用します。
いつ使う?
- アプリケーションが応答しなくなった
- メモリリークの疑いがあり、一旦リフレッシュしたい
- 設定変更後に再起動が必要
- デプロイなしで状態をリセットしたい
基本的な使い方
# テナント名と環境を指定
infra restart <tenant-name> <environment>
# 例: pj-namba の本番環境を再起動
infra restart pj-namba prd
# 例: pj-japan の開発環境を再起動
infra restart pj-japan dev
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--app <app-name> | Container App 名を直接指定 | なし |
使用例
# 基本的な使用(TUI で Container App 選択)
infra restart pj-namba prd
# Container App を直接指定
infra restart pj-namba prd --app ca-pj-namba-backend-prd
実行フロー
-
Container App 選択
- 複数の Container Apps がある場合は、TUI で選択
- 1 つしかない場合は自動的に選択
-
確認プロンプト
- 再起動の確認メッセージが表示されます
-
再起動実行
- Single revision mode: 一時的な環境変数を追加・削除して新しいリビジョンを作成
- Multiple revision mode: 全てのアクティブなリビジョンを再起動
出力例
✔ 3個の Container Apps を見つけました
📦 Container App: ca-pj-namba-backend-prd
? Container App "ca-pj-namba-backend-prd" を再起動しますか? Yes
⠋ Container App ca-pj-namba-backend-prd を再起動中...
⠙ 新しいリビジョンを作成中...
⠹ クリーンアップ中...
✔ Container App ca-pj-namba-backend-prd を再起動しました
✅ Container App "ca-pj-namba-backend-prd" を再起動しました
注意点
- Single revision mode: 一時的な環境変数を追加・削除して新しいリビジョンを作成(2-3 秒のダウンタイムが発生する可能性)
- Multiple revision mode: 全てのアクティブなリビジョンを順次再起動
- 本番環境での実行は慎重に!
- 通常 30 秒〜1 分程度かかります
ステータス表示: infra ps
Container Apps の詳細なステータス情報を一覧表示します。リソース使用状況やレプリカ数、URL などを確認できます。
いつ使う?
- 現在のリソース使用状況を確認したい
- レプリカ数を確認したい
- どのイメージが動いているか確認したい
- FQDN を確認したい
- 全体の状態を一目で把握したい
基本的な使い方
# テナント名と環境を指定
infra ps <tenant-name> <environment>
# 例: pj-namba の本番環境
infra ps pj-namba prd
# 例: pj-japan の開発環境
infra ps pj-japan dev
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--json | JSON 形式で出力 | なし |
使用例
# 基本的な使用(テーブル形式)
infra ps pj-namba prd
# JSON形式で出力(スクリプトで利用する場合)
infra ps pj-namba prd --json
# 開発環境の状態確認
infra ps pj-namba dev
出力例
✔ 3個の Container Apps を見つけました
✔ 3個の Container Apps のステータスを取得しました
📊 Container Apps ステータス (pj-namba/prd)
▸ ca-pj-namba-backend-prd
Status: Succeeded
Replicas: 2 (min: 1, max: 10)
Revision: ca-pj-namba-backend-prd--abc123def
Image: ghcr.io/generativex/pj-namba-backend:1.2.3
Resources: CPU: 0.5, Memory: 1Gi
FQDN: https://ca-pj-namba-backend-prd.example.azurecontainerapps.io
▸ ca-pj-namba-frontend-prd
Status: Succeeded
Replicas: 1 (min: 1, max: 5)
Revision: ca-pj-namba-frontend-prd--xyz789ghi
Image: ghcr.io/generativex/pj-namba-frontend:1.2.3
Resources: CPU: 0.25, Memory: 0.5Gi
FQDN: https://ca-pj-namba-frontend-prd.example.azurecontainerapps.io
▸ ca-pj-namba-worker-prd
Status: Succeeded
Replicas: 1 (min: 0, max: 3)
Revision: ca-pj-namba-worker-prd--jkl012mno
Image: ghcr.io/generativex/pj-namba-worker:1.2.3
Resources: CPU: 1.0, Memory: 2Gi
表示される情報
- Status: Container App の状態(Succeeded, Provisioning, など)
- Replicas: 現在のレプリカ数と min/max 値
- Revision: アクティブなリビジョン名
- Image: 実行中のコンテナイメージ
- Resources: CPU とメモリの割り当て
- FQDN: 外部からアクセス可能な URL(ingress が有効な場合)
運用ワークフローの例
デバッグワークフロー
# 1. まず状態を確認
infra ps pj-namba prd
# 2. ログをチェック
infra logs pj-namba prd --tail 100 --no-follow
# 3. 問題があれば再起動
infra restart pj-namba prd
# 4. シェルに入って詳細調査
infra shell pj-namba prd
メンテナンスワークフロー
# 1. 現在の状態を確認
infra ps pj-namba prd
# 2. シェルに入ってマイグレーション実行
infra shell pj-namba prd
# (シェル内で) npm run db:migrate
# 3. ログで結果を確認
infra logs pj-namba prd --tail 50
# 4. 問題なければ再起動
infra restart pj-namba prd
デプロイ後の確認ワークフロー
# 1. デプロイ実行
infra apply my-company prd
# 2. ステータス確認
infra ps my-company prd
# 3. ログを監視
infra logs my-company prd --tail 200
# 4. 問題があればロールバック
# Terraform で前のバージョンに戻す
Container Apps コマンド一覧
| コマンド | 説明 | 使用頻度 |
|---|---|---|
infra ps <tenant> <env> | ステータス確認(最初に実行すべき) | 🔥🔥🔥 |
infra logs <tenant> <env> | ログストリーミング | 🔥🔥 |
infra shell <tenant> <env> | シェル接続(対話的操作) | 🔥🔥 |
infra restart <tenant> <env> | 再起動(トラブル時) | 🔥 |
infra env <tenant> <env> | 環境変数表示 | 🔥 |
カスタムドメイン設定
Container Apps にカスタムドメインと SSL 証明書を設定するコマンドです。
セットアップ: infra setup-ca
Container Apps にカスタムドメインとマネージド SSL 証明書を対話的にセットアップします。
基本的な使い方
# 対話的にセットアップ
infra setup-ca <tenant-name> <environment>
# ドメイン名を指定して実行
infra setup-ca <tenant-name> <environment> --domain <custom-domain>
# 例: pj-japan の dev 環境
infra setup-ca pj-japan dev --domain nissaydev.flower.gx-dev.app
# 例: pj-namba の本番環境
infra setup-ca pj-namba prd --domain app.example.com
オプション
| オプション | 説明 | 例 |
|---|---|---|
--domain <domain> | カスタムドメイン名(省略時は対話的に入力) | --domain myapp.gx-dev.app |
--method <method> | 検証方式: CNAME(サブドメイン推奨)/ HTTP(APEX) | --method CNAME |
--apex | APEX ドメインとして扱う(A レコード + TXT) | --apex |
-y, --yes | 確認プロンプトをスキップ | -y |
コマンドの動作
このコマンドは以下を自動的に実行します:
-
検証方式の自動判定
- ドメイン名から自動的に APEX(ルート)ドメインかサブドメインかを判定
*.gx-dev.app配下の場合はサブドメインとして自動判定- サブドメイン: CNAME 方式、APEX: A+TXT 方式
- 判定結果を通知(例:
ℹ️ 検証方式: CNAME (サブドメイン) (ドメイン: nissaydev.flower.gx-dev.app))
-
既存設定のチェック
- すでにカスタムドメインが設定済みの場合は警告を表示
- 既存設定の場合、証明書の再バインドのみを実行(ホスト名追加をスキップ)
-
Cloudflare DNS レコードの自動設定(オプション)
CLOUDFLARE_API_TOKENが設定されている場合、DNS レコードを自動的に追加- 自動設定の確認プロンプトを表示(
--yesオプションの場合は確認なし) - 既存レコードが存在する場合は自動的に検出してスキップ
- 自動設定をスキップした場合、またはトークンが設定されていない場合は手動設定手順を案内
-
DNS レコード情報の表示
- CNAME レコード(または A レコード)
- TXT レコード(asuid)
.gx-dev.app配下の場合、ドメイン名を省略形式で表示
-
証明書の自動バインド
- DNS 設定確認後、Azure マネージド証明書をバインド
- ホスト名の追加と証明書の検証を実行
-
結果の表示
- バインド結果を
https://付きの URL で表示 - 証明書のステータスを確認
- バインド結果を
使用例
*.gx-dev.app 配下のドメイン設定
infra setup-ca pj-japan dev --domain nissaydev.flower.gx-dev.app
出力例(新規設定の場合):
ℹ️ 検証方式: CNAME (サブドメイン) (ドメイン: nissaydev.flower.gx-dev.app)
ℹ️ *.gx-dev.app 配下のドメインはサブドメインです(CNAMEレコード + TXTレコードで設定)
📌 DNS 設定手順
⚠️ Cloudflare対応について
現在、Cloudflareでの自動設定は行っていません
以下の手順でCloudflareのブラウザ画面から設定してください:
1. Cloudflareにログインし、対象ドメインのDNS設定画面を開く
2. 下記のDNSレコードを追加
3. プロキシステータス(橙雲マーク)は検証完了まで無効(DNS only/灰色雲マーク)にする
4. 検証完了後、必要であればプロキシを有効化
※ 権限がない場合は、GenerativeXの #team-infra まで投稿してください
📝 追加するDNSレコード
- CNAME レコード: nissaydev.flower → ca-pj-japan-frontend-dev.ashytree-e6e10983.japaneast.azurecontainerapps.io
- TXT レコード: asuid.nissaydev.flower → 2370EE940A0010D423E255AF353E3616B99F7F4855AF9F7836394200DC3753E4
⚠️ 重要: 中間CNAMEは不可。生成ドメイン(*.azurecontainerapps.io)に直接CNAMEしてください
? Cloudflare APIトークンが設定されています。DNSレコードを自動的に追加しますか? Yes
✔ DNSレコードを追加しました: CNAME nissaydev.flower → ca-pj-japan-frontend-dev.ashytree-e6e10983.japaneast.azurecontainerapps.io
✔ DNSレコードを追加しました: TXT asuid.nissaydev.flower → 2370EE940A0010D423E255AF353E3616B99F7F4855AF9F7836394200DC3753E4
✅ Cloudflare DNSレコードの設定が完了しました (2件)
⚠️ 重要: プロキシステータスは「DNS only」(灰色雲マーク)に設定されています
証明書の検証が完了するまで、プロキシを有効化しないでください
✔ ホスト名を追加しました: nissaydev.flower.gx-dev.app
✔ 証明書をバインドしました: nissaydev.flower.gx-dev.app
📊 バインド結果
- https://nissaydev.flower.gx-dev.app status: Succeeded
✅ カスタムドメイン (nissaydev.flower.gx-dev.app) とマネージド証明書のセットアップが完了しました
出力例(既存設定がある場合):
ℹ️ 検証方式: CNAME (サブドメイン) (ドメイン: nissaydev.flower.gx-dev.app)
⚠️ カスタムドメイン nissaydev.flower.gx-dev.app は既に設定されています
現在のステータス: Provisioned
? 既に設定されています。証明書の再バインドを試行しますか? Yes
🔄 証明書の再バインドを試行します...
✔ 証明書をバインドしました: nissaydev.flower.gx-dev.app
📊 バインド結果
- https://nissaydev.flower.gx-dev.app status: Provisioned
✅ カスタムドメイン (nissaydev.flower.gx-dev.app) の証明書設定を確認しました
APEX(ルート)ドメインの設定
infra setup-ca my-company prd --domain example.com --apex
HTTP 検証(A レコード方式)で設定されます。
重要な注意事項
DNS 設定について
.gx-dev.app配下のドメイン: 基本的にサブドメイン(CNAME 方式)- DNS レコード名:
.gx-dev.appより後ろの部分は不要- ❌ 誤:
nissaydev.flower.gx-dev.app - ✅ 正:
nissaydev.flower
- ❌ 誤:
- 中間 CNAME 不可: 生成ドメイン(
*.azurecontainerapps.io)に直接 CNAME する必要があります
Cloudflare プロキシ設定
⚠️ 最重要: 証明書の検証が完了するまで、Cloudflare プロキシは必ず無効化してください。
- 橙色の雲マーク → Cloudflare プロキシ有効(❌ 検証失敗)
- 灰色の雲マーク → DNS only(✅ 正しい設定)
検証完了後、必要であればプロキシを有効化できます。
Cloudflare API トークンの設定(自動設定を使用する場合)
自動設定を使用するには、CLOUDFLARE_API_TOKEN 環境変数を設定してください:
-
Cloudflare API トークンの取得
- Cloudflare Dashboard にログイン
- 「My Profile」→「API Tokens」→「Create Token」
- 「Edit DNS」テンプレートを選択、または以下の権限を付与:
- Zone: DNS: Edit
- トークンを作成し、安全に保管
-
環境変数の設定
export CLOUDFLARE_API_TOKEN="your-api-token"または、
.env.localファイルに追加 -
コマンドを実行
infra setup-ca <tenant-name> <environment> --domain <custom-domain>CLOUDFLARE_API_TOKENが設定されている場合、自動設定の確認プロンプトが表示されます。
権限がない場合
Cloudflare の編集権限がない場合、または自動設定を使用しない場合は、GenerativeX Slack の #team-infra に以下の形式で依頼してください:
[カスタムドメイン設定依頼]
テナント: pj-japan
環境: dev
ドメイン: nissaydev.flower.gx-dev.app
以下のDNSレコードの追加をお願いします:
- CNAME: nissaydev.flower → ca-xxx-frontend-xxx.ashytree-xxxxx.japaneast.azurecontainerapps.io
- TXT: asuid.nissaydev.flower → xxxxxxxx...
※ プロキシステータスは「DNS only」でお願いします
自動判定されるドメインタイプ
コマンドは以下のロジックでドメインタイプを自動判定します:
| ドメイン例 | ラベル数 | 判定結果 | 検証方式 |
|---|---|---|---|
example.com | 2 | APEX | A+TXT |
example.co.jp | 3 | APEX (2 段階 TLD) | A+TXT |
www.example.com | 3 | サブドメイン | CNAME |
nissaydev.flower.gx-dev.app | 4 | サブドメイン | CNAME |
api.app.example.com | 4+ | サブドメイン | CNAME |
2 段階 TLD 対応: co.jp, ne.jp, or.jp, ac.jp, go.jp, ed.jp, com.au, net.au, org.au, edu.au, co.uk, org.uk, ac.uk, com.cn, net.cn, org.cn, co.nz, net.nz, org.nz
判定を上書きしたい場合は、--method CNAME または --apex オプションを使用してください。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 証明書の発行に失敗 | Cloudflare プロキシが有効 | プロキシを無効化(橙雲 → 灰雲) |
| DNS 検証エラー | DNS レコードが反映されていない | 数分~数時間待つ、dig コマンドで確認 |
| ホスト名追加エラー | 既に同じドメインが登録済み | コマンドが自動的に既存設定を検出し、再バインドを提案します |
| DNS レコード追加エラー | 既存レコードが存在 | コマンドが自動的に既存レコードを検出してスキップします |
| 環境 ID が取得できない | Container App が存在しない | infra ps <tenant> <env> で確認 |
DNS 設定の確認コマンド:
# CNAME レコードの確認
dig nissaydev.flower.gx-dev.app CNAME
# TXT レコードの確認
dig asuid.nissaydev.flower.gx-dev.app TXT
関連コマンド
# Container Apps の状態確認
infra ps <tenant> <env>
# 環境変数の確認
infra env <tenant> <env>
# ログの確認
infra logs <tenant> <env>
関連ドキュメント
- カスタムドメイン設定ガイド - 詳細な設定手順とトラブルシューティング
- ドメイン設定 - 実践的な使用例
設定検証
テナント設定の検証: infra validate
テナント設定(config.toml)の妥当性を検証します:
# テナントのconfig.toml検証(GitHubリポジトリとACRイメージの存在確認を含む)
infra validate <tenant-name>
# 外部リソースの検証をスキップ
infra validate <tenant-name> --skip-external
# 全テナントの検証
infra validate --all
# テンプレートの検証
infra validate --template <template-name>
# 全テンプレートの検証
infra validate --all-templates
# 例
infra validate my-company
infra validate pj-japan
infra validate --all --verbose
インフラ設定ファイルの検証: infra config validate
📍 実行場所: このコマンドは アプリケーションリポジトリ内(
infra.config.ymlがある場所)で実行します。
infra.config.yml ファイルの妥当性を検証します。インフラ設定駆動型 CI/CD で使用する設定ファイルの検証に使用します。
# デフォルトのinfra.config.ymlを検証
infra config validate
# 特定のファイルを指定して検証
infra config validate -f infra.config.yml
infra config validate --file path/to/infra.config.yml
# JSON形式で出力
infra config validate --json
# 例
infra config validate
infra config validate -f infra.config.yml
infra config validate --json
検証内容:
- ✅ スキーマバリデーション: JSON スキーマ(
schemas/infra.config.schema.json)に準拠しているか - ✅ 無効なフィールドの検出: スキーマで定義されていないフィールドが存在するか
- ✅ 必須フィールドの確認: 必須フィールドがすべて指定されているか
- ✅
dotenv_pathファイルの存在確認: 各サービス設定のdotenv_pathに指定されたファイルが存在するか
検証エラーの例:
# 無効なフィールドが検出された場合
❌ 設定ファイルに 2 個のエラーが見つかりました
エラー:
• /dev/frontend: 無効なフィールド "invalid_field" が指定されています。このフィールドはスキーマで定義されていません。
• /dev/frontend/registry: 無効なフィールド "invalid_registry_field" が指定されています。このフィールドはスキーマで定義されていません。
# dotenv_pathのファイルが見つからない場合
❌ 設定ファイルに 1 個のエラーが見つかりました
エラー:
• dev.frontend.dotenv_path: dotenv_pathに指定されたファイルが見つかりません: .env.vault (解決後: /path/to/.env.vault)
使用例:
# CI/CDパイプラインでの使用(設定変更をコミットする前に検証)
infra config validate
# 特定のファイルを検証
infra config validate -f my-infra.config.yml
# JSON形式で出力(CI/CDスクリプトでの利用)
infra config validate --json | jq '.valid'
ベストプラクティス:
- コミット前に検証:
infra.config.ymlを変更したら、コミット前に必ず検証を実行 - CI/CD に組み込む: GitHub Actions ワークフローに検証ステップを追加
- プレコミットフック: Git フックを使って自動検証
# .github/workflows/validate.yml の例
name: Validate infra.config.yml
on:
pull_request:
paths:
- "infra.config.yml"
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: yarn install
- run: yarn infra config validate
- テンプレートに応じた必須コンポーネント
- リソース設定の妥当性(min/max レプリカ、ストレージサイズなど)
- 環境変数ファイルの存在
- GitHub リポジトリの存在確認 (新機能)
- Azure Container Registry (ACR) のイメージの存在確認 (新機能)
外部リソース検証(新機能):
infra validate コマンドは、設定されている GitHub リポジトリと ACR イメージが実際に存在するかを検証します。
# 外部リソースを含む完全な検証
infra validate pj-japan
# 出力例:
# 🔍 外部リソースの検証を開始します...
# ==================================================
#
# 📦 環境: dev
#
# 🔸 Frontend GitHubリポジトリの検証...
# ✅ リポジトリが見つかりました: GenerativeX/pj-japan-nextjs
# 🔸 Frontend ACRイメージの検証...
# ✅ イメージが見つかりました: gxSharedAcr/pj-japan-nextjs
#
# 🔸 Backend GitHubリポジトリの検証...
# ✅ リポジトリが見つかりました: GenerativeX/pj-japan-fastapi
# 🔸 Backend ACRイメージの検証...
# ⚠️ イメージが見つかりません: gxSharedAcr/pj-japan-fastapi
# イメージは後でビルド・プッシュする必要があります
# 設定ファイルだけを検証(外部リソースをスキップ)
infra validate pj-japan --skip-external
前提条件(外部リソース検証):
- GitHub 検証: GitHub CLI (
gh) がインストールされ、認証済みであることgh --version
gh auth status - ACR 検証: Azure CLI (
az) がインストールされ、ログイン済みであることaz --version
az account show
注意:
- GitHub リポジトリが見つからない場合、検証は失敗します(exit code 1)
- ACR イメージが見つからない場合、警告が表示されますが検証は成功します
- イメージは後でビルド・プッシュできるため
- GitHub CLI や Azure CLI が利用できない場合、その部分の検証はスキップされます
- 外部リソース検証をスキップする場合は
--skip-externalオプションを使用します
よくある検証エラー:
# min_replicas > max_replicas
❌ エラー: min_replicas (5) が max_replicas (3) より大きいです
# 必須コンポーネントが欠けている
❌ エラー: monolith テンプレートでは Redis が必須です
# 無効な SKU 名
❌ エラー: 無効なデータベース SKU 名です: "InvalidSKU"
# バージョン形式エラー
❌ エラー: template_version は 'v' で始まる必要があります(例: v1.0.0)
# GitHubリポジトリが見つからない(新機能)
❌ リポジトリが見つかりません: GenerativeX/my-invalid-repo
# ACRイメージが見つからない(新機能、警告のみ)
⚠️ イメージが見つかりません: gxSharedAcr/my-image
イメージは後でビルド・プッシュする必要があります
デバッグモード
詳細なログが必要な場合は、Terraform のデバッグモードを有効化できます:
# Terraformのデバッグモードを有効化
export TF_LOG=DEBUG
infra plan my-company dev
# ログレベルの選択肢
# - TRACE (最も詳細)
# - DEBUG
# - INFO
# - WARN
# - ERROR
# デバッグモードを無効化
unset TF_LOG
使用例:
# デプロイがエラーで失敗する場合
export TF_LOG=DEBUG
export TF_LOG_PATH=/tmp/terraform-debug.log
infra apply my-company dev
# ログファイルを確認
cat /tmp/terraform-debug.log
トラブルシューティング
一般的な問題
Azure CLI がインストールされていない
# macOS
brew install azure-cli
# Linux
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# Windows
# https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-windows
Azure にログインしていない
# ログイン
az login
# アカウント確認
az account show
# サブスクリプション切り替え
az account set --subscription e3143cb2-4707-4614-bbba-3ddeb66669c2
Terraform State がロックされている
# ロック状態を確認
infra status my-company dev
# 他の人がデプロイ中でないことを確認してからロック解除
infra unlock my-company dev
Config 検証エラー
# 詳細なエラーを表示
infra validate my-company
# config.toml を修正して再検証
vim terraform/environments/tenants/my-company/config.toml
infra validate my-company
イメージが見つからない
# ACR のイメージ一覧を確認
az acr repository list --name gxsharedacr
# 特定のイメージのタグ一覧
az acr repository show-tags --name gxsharedacr --repository <image-name>
# config.toml のイメージ名とタグを確認
vim terraform/environments/tenants/my-company/config.toml
Generate コマンドが失敗する
# 1. 暗号化ファイルの存在確認
ls -la terraform/environments/tenants/my-company/encrypted/
# 2. 暗号化ファイルがない場合
cd terraform/environments/tenants/my-company
vim .env.frontend.dev
vim .env.backend.dev
cd ../../../../
infra encrypt my-company
# 3. config.toml の検証
infra validate my-company
# 4. Azure ログイン確認
az account show
Container Apps 関連の問題
Container App が見つからない
# リソースグループ名の確認
# 命名規則: rg-<tenant-name>-<environment>
# リソースグループ一覧
az group list --query "[?starts_with(name, 'rg-pj-namba')]" --output table
# Container Apps 一覧
az containerapp list --resource-group rg-pj-namba-prd --output table
シェルに接続できない
- Container App が実行中か確認
- コンテナイメージに
/bin/bashが含まれているか確認(含まれていない場合は--command /bin/shを試す) - 最小スケールが 0 の場合、レプリカが起動しているか確認
# Container Appの状態を確認
az containerapp show \
--name ca-pj-namba-backend-prd \
--resource-group rg-pj-namba-prd \
--query "properties.provisioningState"
# レプリカの状態を確認
az containerapp replica list \
--name ca-pj-namba-backend-prd \
--resource-group rg-pj-namba-prd \
--revision <revision-name> \
--output table
権限エラー
Container Apps へのアクセス権限を確認してください。少なくとも以下のロールが必要です:
Container Apps ContributorまたはContainer Apps Reader+Container Apps Exec Role
# 自分のロールを確認
az role assignment list --assignee $(az account show --query user.name -o tsv) --output table
環境変数のエクスポートで失敗
# Azure CLI のログイン確認
az account show
# サブスクリプション一覧の確認
az account list --output table
# サブスクリプションの設定
az account set --subscription e3143cb2-4707-4614-bbba-3ddeb66669c2
# App Service のアクセス権限の確認
az webapp config appsettings list --resource-group "your-rg" --name "your-app"
# Container Apps のアクセス権限の確認
az containerapp show --name "your-app" --resource-group "your-rg"
よく使うコマンド一覧
頻繁に使用するコマンド
| コマンド | 説明 | カテゴリ |
|---|---|---|
infra init <tenant-name> | 新しいテナントを対話式で初期化 | テナント管理 |
infra tenant list | テナント一覧を表示 | テナント管理 |
infra tenant show <name> | テナント詳細を表示 | テナント管理 |
infra detect-changes | Git 変更から変更されたテナントと環境を検出 | CI/CD |
infra decrypt <tenant> | 環境変数ファイルを一時的に復号化(編集前) | 環境変数管理 |
infra encrypt <tenant> | 環境変数ファイルを再暗号化(編集後・必須) | 環境変数管理 |
infra env encrypt <file> | 環境変数ファイルを暗号化(dotenvx 互換、ファイル単位) | アプリケーションリポジトリ |
infra env decrypt <file> | 環境変数ファイルを復号化(dotenvx 互換、ファイル単位) | アプリケーションリポジトリ |
infra generate <tenant> <env> | Terraform ファイルをゼロから生成 | Terraform 生成 |
infra plan <tenant> <env> | デプロイ前の変更内容を確認 | デプロイメント |
infra apply <tenant> <env> | デプロイ実行(State は Azure Storage へ) | デプロイメント |
infra status <tenant> <env> | Terraform 状態とロック情報を確認 | デプロイメント |
infra unlock <tenant> <env> | Terraform 状態のロックを解除 | デプロイメント |
infra template list | 利用可能なテンプレート一覧 | テンプレート |
infra validate <tenant> | テナント設定の検証 | 設定検証 |
infra config validate | infra.config.yml の検証 | アプリケーションリポジトリ |
infra setup-ci <tenant> ⚠️ | CI/CD パイプラインをセットアップ(非推奨) | CI/CD |
infra rollout-ci <repo> 🚀 | リポジトリにインフラ設定駆動型 CI/CD を自動セットアップ | CI/CD |
infra export-env | Azure 環境変数をエクスポート(対話的選択) | 環境変数管理 |
infra browse <tenant> <env> | テナントの site_url をブラウザで開く | ブラウザ |
Container Apps 運用コマンド
| コマンド | 説明 | 使用頻度 |
|---|---|---|
infra ps <tenant> <env> | Container Apps の詳細ステータス表示 | 🔥🔥🔥 |
infra logs <tenant> <env> | Container App のログをストリーミング | 🔥🔥 |
infra shell <tenant> <env> | Container App のシェルに接続 | 🔥🔥 |
infra restart <tenant> <env> | Container App を再起動 | 🔥 |
infra env show <tenant> <env> | Container App の環境変数を表示 | 🔥 |
infra env encrypt <file> | 環境変数ファイルを暗号化(dotenvx 互換、アプリリポジトリ内) | 🔥 |
infra env decrypt <file> | 環境変数ファイルを復号化(dotenvx 互換、アプリリポジトリ内) | 🔥 |
infra setup-ca <tenant> <env> | カスタムドメインと SSL 証明書をセットアップ | 🔥 |
典型的なワークフロー
新しいテナントの作成
# 1. テナント初期化
infra init my-company
# 2. 環境変数を編集
cd terraform/environments/tenants/my-company
vim .env.frontend.dev
vim .env.backend.dev
# 3. 暗号化
cd ../../../../
infra encrypt my-company
# 4. 設定を検証
infra validate my-company
# 5. プラン確認
infra plan my-company dev
# 6. デプロイ
infra apply my-company dev
環境変数の更新
# 1. 復号化
infra decrypt my-company
# 2. 編集
cd terraform/environments/tenants/my-company
vim .env.frontend.dev
# 3. 再暗号化
cd ../../../../
infra encrypt my-company
# 4. デプロイ(generateは自動実行される)
infra plan my-company dev
infra apply my-company dev
# 5. ログで動作確認
infra logs my-company dev --tail 100
設定変更とデプロイ
# 1. config.toml を編集
vim terraform/environments/tenants/my-company/config.toml
# 2. 検証
infra validate my-company
# 3. プラン確認
infra plan my-company dev
# 4. デプロイ
infra apply my-company dev
# 5. ステータス確認
infra ps my-company dev
デバッグとトラブルシューティング
# 1. 現在の状態を確認
infra ps my-company prd
# 2. ログをチェック
infra logs my-company prd --tail 200
# 3. 問題がある場合は詳細調査
infra shell my-company prd
# シェル内で調査...
# 4. 必要に応じて再起動
infra restart my-company prd
# 5. 再度ログを確認
infra logs my-company prd --tail 100
関連ドキュメント
より詳しい情報は以下のドキュメントを参照してください:
基本ガイド
- テナント登録 - 初めての方向けの始め方ガイド
- アーキテクチャ - システムアーキテクチャとセキュリティ
- トラブルシューティング - よくある問題の解決方法
設定ガイド
アーキテクチャガイド
- コンポーネントアーキテクチャ - コンポーネントシステムの詳細
- ネットワークアーキテクチャ - テンプレートのネットワーク構成
デプロイメントガイド
- CI/CDの使い方 - GitHub Actions による CI/CD
Azure CLI リファレンス
Container Apps を Azure CLI で直接操作する場合:
# シェル接続
az containerapp exec \
--name <app-name> \
--resource-group <resource-group> \
--command /bin/sh
# ログストリーミング
az containerapp logs show \
--name <app-name> \
--resource-group <resource-group> \
--follow
# レプリカ一覧
az containerapp replica list \
--name <app-name> \
--resource-group <resource-group> \
--revision <revision-name>
# リビジョン一覧
az containerapp revision list \
--name <app-name> \
--resource-group <resource-group>
# 環境変数とシークレットの確認
az containerapp show --name "your-app" --resource-group "your-rg" \
--query "properties.template.containers[0].env"
az containerapp secret list --name "your-app" --resource-group "your-rg"
外部リソース
- Azure Container Apps ドキュメント
- Azure CLI Container Apps リファレンス
- Container Apps のログとメトリック
- Terraform Azure Provider ドキュメント
このドキュメントは定期的に更新されます。最新の情報については、プロジェクトの GitHub リポジトリを確認してください。