Share via


Azure Developer CLI の azure.yaml スキーマ

azd テンプレートは、概念実証アプリケーション コード、エディター/IDE 構成、および Bicep または Terraform で記述されたインフラストラクチャ コードを含むブループリント リポジトリです。 これらのテンプレートは、特定のアプリケーション要件に合わせて変更および調整された後、Azure Developer CLI (azd) を使用して Azure でアプリケーションを取得するために使用されます。 azure.yaml スキーマは、これらのテンプレートに含まれるアプリと Azure リソースの種類を定義し、記述します。

サンプル

azd テンプレートに必要な azure.yaml の一般的な例を次に示します。

name: yourApp
metadata:
  template: yourApp@0.0.1-beta
services:
  web:
    project: ./src/web # path to your web project
    dist: build # relative path to service deployment artifacts
    language: js # one of the supported languages
    host: appservice # one of the supported Azure services

ToDo NodeJs Mongo テンプレートazure.yaml と比較します。

name: todo-nodejs-mongo
metadata:
  template: todo-nodejs-mongo@0.0.1-beta
services:
  web:
    project: ./src/web
    dist: build
    language: js
    host: appservice
  api:
    project: ./src/api
    language: js
    host: appservice

プロパティの説明

要素名 必須 説明
name Y (文字列) アプリケーションの名前。
resourceGroup N (文字列) Azure リソース グループの名前。 指定すると、インフラストラクチャのプロビジョニングに使用されるリソース グループ名がオーバーライドされます。
metadata N (オブジェクト) 詳細については、「メタデータのプロパティを参照してください。
infra N (オブジェクト) Azure インフラストラクチャ プロビジョニングに追加構成を提供します。 詳細については、「インフラのプロパティ」を参照してください。
services Y (オブジェクト) アプリケーションを構成するサービスを定義します。 詳細については、「サービスのプロパティ」を参照してください。
pipeline N (オブジェクト) 継続的インテグレーション パイプラインの定義。 詳細については、「パイプラインのプロパティ」を参照してください。
hooks N コマンド レベルのフック。 フックは、スクリプトをいつ実行するかに応じて、azd コマンド名に付いたプレフィックスが pre または post に一致する必要があります。 パスを指定するときは、プロジェクト パスに対する相対パスにする必要があります。 詳細については、「コマンドとイベント フックを使用して Azure Developer CLI ワークフローをカスタマイズする」を参照してください。
requiredVersions N このプロジェクトでサポートされている azd のさまざまなバージョン。 azd のバージョンがこの範囲外の場合、プロジェクトの読み込みに失敗します。 省略可能 (存在しない場合は、すべてのバージョンが許可されます)。 例: >= 0.6.0-beta.3

metadata のプロパティ

要素名 必須 説明
template N (文字列) アプリケーションの作成元のテンプレートの識別子。 todo-nodejs-mongo@0.0.1-beta

infra のプロパティ

要素名 必須 説明
provider N (文字列) アプリケーションの Azure リソースのインフラストラクチャ プロバイダー。 (既定値: bicep)。 以下の Terraform サンプルを参照してください。 bicep, terraform
path N (文字列) 指定したプロバイダーの Azure プロビジョニング テンプレートを含む場所への相対フォルダー パス。 (既定値: infra)。
module N (文字列) Azure プロビジョニング テンプレートを使用する既定のモジュールの名前。 (既定値: main)。

IaC プロバイダー サンプルとしての Terraform

name: yourApp-terraform
metadata:
  template: yourApp-terraform@0.0.1-beta
services:
  web:
    project: ./src/web
    dist: build
    language: js
    host: appservice
  api:
    project: ./src/api
      language: js
      host: appservice
infra:
  provider: terraform

services のプロパティ

要素名 必須 説明
resourceName N (文字列) サービスを実装する Azure リソースの名前。 指定しない場合は、azd はリソースを azd-env-name タグと azd-service-name タグを使って検索します。 見つからない場合は、現在の環境名から構築されたリソース名を検索します。これは、サービス名 (<environment-name><resource-name>) と連結された名前です。 prodapi
project Y (文字列) サービス ソース コード ディレクトリへのパス。
host Y (文字列) サービスの実装に使用される Azure リソースの種類。 省略時には、App Service が想定されます。 appservicecontainerappfunctionstaticwebappaks (kubectl apply -f を介して配置可能なプロジェクトのみ)、springapp (有効になっている場合 - アルファ版の機能の詳細を確認してください)
language Y (文字列) サービス実装言語。 dotnet, csharp, fsharp, py, python, js, ts, java
module Y (文字列) root インフラ フォルダーを基準としたサービスのデプロイに使用されるインフラストラクチャ モジュールのパス。 省略すると、CLI はモジュール名がサービス名と同じであると見なします。
dist Y (文字列) サービス デプロイ成果物への相対パス。 CLI は、このパスの下にあるファイルを使用して、デプロイ成果物 (.zip ファイル) を作成します。 省略すると、サービス プロジェクト ディレクトリの下にあるすべてのファイルが含まれることになります。 build
docker N hostcontainerapp の場合にのみ使用できます。 追加のプロパティを含めることはできません。 以下の「カスタム Docker サンプル」を参照してください。 path(文字列): Dockerfileへのパス。 既定値: ./Dockerfilecontext(文字列): Docker ビルド コンテキスト。 指定すると、既定のコンテキストがオーバーライドされます。 既定値: .platform(文字列): プラットフォーム ターゲット。 既定値: amd64
k8s N Azure Kubernetes Service (AKS) の構成オプション。 以下の AKS サンプルを参照してください。 deploymentPath(文字列): 省略可能。 サービス パスから k8s デプロイ マニフェストへの相対パス。 設定すると、k8s デプロイ マニフェストの既定のデプロイ パスの場所がオーバーライドされます。 既定値: manifestsnamespace(文字列): 省略可能。 デプロイされたリソースの k8s 名前空間。 指定すると、新しい k8s 名前空間がまだ存在していなければ、作成されます。 既定値: Project namedeployment(オブジェクト): デプロイ プロパティservice(オブジェクト): サービスのプロパティを参照してくださいingress(オブジェクト): イングレス プロパティを参照してください
hooks N サービス レベル フック。 フックは、スクリプトをいつ実行するかに応じて、service イベント名に付いたプレフィックスが pre または post に一致する必要があります。 パスを指定するときは、サービス パスに対する相対パスにする必要があります。 詳細については、「コマンドとイベント フックを使用して Azure Developer CLI ワークフローをカスタマイズする」を参照してください。

Docker オプションのサンプル

次の例では、コンテナー アプリの Docker オプションを宣言します。

name: yourApp-aca
metadata:
    template: yourApp-aca@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: containerapp
    docker:
      path: ./Dockerfile
      context: ../
  web:
    project: ./src/web
    language: js
    host: containerapp

AKS の deployment プロパティ

要素名 必須 説明
name N (文字列) 省略可能。 デプロイ時に使用する k8s デプロイ リソースの名前。 k8s デプロイのロールアウトが完了しているかどうかを確認するために、デプロイ中に使用されます。 設定されていない場合は、サービス名を含む同じ名前空間内のデプロイ リソースを検索します。 既定値: Service name api

AKS の service プロパティ

要素名 必須 説明
name N (文字列) 省略可能。 既定のサービス エンドポイントとして使用する k8s サービス リソースの名前。 既定のサービス リソースのエンドポイントを決定するときに使用されます。 設定されていない場合は、サービス名を含む同じ名前空間内のデプロイ リソースを検索します。 (既定値: サービス名) api

AKS の ingress プロパティ

要素名 必須 説明
name N (文字列) 省略可能。 既定のサービス エンドポイントとして使用する k8s イングレスの名前。 既定のイングレス リソースのエンドポイントを決定するときに使用されます。 設定されていない場合は、サービス名を含む同じ名前空間内のデプロイ リソースを検索します。 既定値: Service name api
relativePath N (文字列) 省略可能。 イングレス コントローラーの root からのサービスへの相対パス。 設定すると、イングレス リソース パスの root に追加されます。

サービス レベル フックを含む AKS サンプル

metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  web:
    project: ./src/web
    dist: build
    language: js
    host: aks
    hooks:
      postdeploy:
        shell: sh
        run: azd env set REACT_APP_WEB_BASE_URL ${SERVICE_WEB_ENDPOINT_URL}
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      ingress:
        relativePath: api
    hooks:
      postdeploy:
        shell: sh
        run: azd env set REACT_APP_API_BASE_URL ${SERVICE_API_ENDPOINT_URL}

pipeline のプロパティ

要素名 必須 説明
provider N (文字列) 継続的インテグレーションに使用するパイプライン プロバイダー。 (既定値: github)。 github, azdo

CI/CD パイプラインとしての Azure Pipelines (AzDo) のサンプル

name: yourApp
services:  
  web:    
    project: src/web
    dist: build
    language: js
    host: appservice
pipeline: 
  provider: azdo

サポートを要求します

バグ報告、支援要請、または Azure Developer CLI の新機能の提案を行う方法については、トラブルシューティングとサポートのページを参照してください。

次のステップ