既存のテンプレートを使用して Azure Developer CLI のサポートをアプリに追加する
Azure Developer CLI (azd
) には、アプリで使用するテンプレートを初期化するための次の 2 つの異なるワークフローが用意されています。
- 現在のディレクトリでコードを使用する: この方法では、アプリを分析し、サポートされているインフラストラクチャと構成リソースを自動生成します。
- テンプレートを選択: この方法では、既存のテンプレートをアプリと統合したり、既存のテンプレートを新しいアプリの開始点として使用したりできます。
どちらの方法も、 Azure Developer CLI テンプレートの概要 ドキュメントで確認できます。
この記事では、テンプレートの選択アプローチを使用して、Azure Developer CLI (azd
) のサポートをアプリに追加する方法について説明します。 既存のテンプレートを使用したアプリへのazd
サポートの追加別の方法の詳細については、ドキュメントを参照してください。 azd
テンプレートの構築の詳細についてはトレーニング - azd
テンプレートのビルドとデプロイに関するページを参照してください。
Select a template for your app
テンプレートの選択 azd init
コマンドのワークフローを使用すると、開始点として使用する既存のazd
テンプレートを選択できます。 選択したテンプレートの内容がプロジェクトのルート ディレクトリに追加されます。 ほとんどのテンプレートには、必要な azd
ファイルとフォルダーのセットが用意されており、多くのテンプレートには、選択したアプリケーション スタック用に Azure リソースをプロビジョニングするための完全な一連のコードとしてのインフラストラクチャ ファイルが含まれています。
この例では、 Starter - Bicep テンプレートを使用します。このテンプレートには、 azd
テンプレートの基本的な構造と、使用を開始するための便利な定型コードが含まれています。 スターター テンプレートは、適切なテンプレート構造と開始リソースをスキャフォールディングするが、独自のインフラストラクチャ ファイルを作成する場合に適しています。
既存のサンプル アプリケーションを使用する前の手順に従うために、次のスターター プロジェクトをコンピューター上の空のディレクトリに複製します。
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
選択したコマンド ライン ツールで、複製されたプロジェクトのルート ディレクトリに移動します。
azd init
コマンドを実行して、azd
テンプレートを初期化します。azd init
メッセージが表示されたら、 テンプレートを選択するオプションを選択。
テンプレートの一覧から Starter - Bicep を選択します。 テンプレート名を入力するか、キーボードの方向キーを使用して検索できます。
プロンプトが表示されたら、 testenv などの短い環境名を入力します。
azd init
を実行すると、次の資産が現在のディレクトリに追加されます。├── .azdo [ Configures an Azure Pipeline ] ├── .devcontainer [ For DevContainer ] ├── .github [ Configures a GitHub workflow ] ├── .vscode [ VS Code workspace configurations ] ├── .azure [ Stores Azure configurations and environment variables ] ├── infra [ Contains infrastructure as code files ] │ ├── main.bicep/main.tf [ Main infrastructure file ] │ ├── main.parameters.json/main.tfvars.json [ Parameters file ] │ └── core/modules [ Contains reusable Bicep/Terraform modules ] └── azure.yaml [ Describes the app and type of Azure resources]
Bicep ファイルを更新する
プロジェクトに、 azd
テンプレートのコア構造とアセットが含まれるようになりました。 ただし、特定のプロジェクト用に Azure リソースをプロビジョニングするには、infra
フォルダー内の Bicep ファイルを更新する必要があります。 サンプル アプリケーションをホストするには、Bicep ファイルを使用して次のリソースを定義する必要があります。
- Azure App Service プラン
- Linux 上で実行される Azure App Service
Visual Studio Code など、任意のエディターでルート プロジェクト ディレクトリを開きます。
エディターを使用して、
infra
フォルダー内のmain.bicep
ファイルを開きます。 このファイルには、重要な変数、パラメーター、名前付け規則を設定するための便利な定型コードが含まれています。Add resources to be provisioned below
を読み取る 50 行目のコメント ブロックの下に、次の Bicep を追加します。// Creates an app service instance to host the app module web './core/host/appservice.bicep' = { name: 'web' scope: rg params: { name: '${abbrs.webSitesAppService}web-${resourceToken}' location: location tags: union(tags, { 'azd-service-name': 'web' }) appServicePlanId: appServicePlan.outputs.id runtimeName: 'python' runtimeVersion: '3.8' scmDoBuildDuringDeployment: true } } // Create an App Service Plan to group applications under the same payment plan and SKU module appServicePlan './core/host/appserviceplan.bicep' = { name: 'appserviceplan' scope: rg params: { name: '${abbrs.webServerFarms}${resourceToken}' location: location tags: tags sku: { name: 'B1' } } }
Note
- サブスクリプション ID に基づいて一意の文字列が生成され、
${resourceToken}
変数として使用されます。 このトークンは、azd
によって作成されたすべての Azure リソースの名前に追加されます。 azd
はタグを使用してリソースを識別するので、組織の名前付け規則に基づいて名前を変更できます。- アプリ サービスの
'azd-service-name': 'web'
タグは、デプロイ ホストを識別するために使用azd
値です。 値は、 azure.yaml ファイル内のサービスに定義されているものと同じである必要があります。
- サブスクリプション ID に基づいて一意の文字列が生成され、
azure.yaml ファイルを更新する
アプリをデプロイするには、azd
はアプリの詳細を知る必要があります。 azure.yaml
ファイルは、アプリ内の各サービスのソース コードの場所、言語、および Azure ホスティング サービスを定義するために使用されます。 完全な詳細情報については、「azure.yaml スキーマ」を参照してください。
プロジェクトのルートにある
azure.yaml
を開きます。ファイルの下部に次の行を追加します。
name: msdocs-python-flask-webapp-quickstart services: web: project: . language: py host: appservice
テンプレートをプロビジョニングしてデプロイする
すべての変更を保存し、次のコマンドを実行して、アプリ リソースをプロビジョニングして Azure にデプロイします。
azd up
コマンドが完了したら、コマンド出力のリンクをクリックして、デプロイされたサイトに移動します。
これで、プロジェクトは Azure Developer CLI と互換性があり、テンプレートとして使用できます。
Note
azd
では、既定でアプリをコンテナー化するための Buildpack の使用もサポートされています。 azd
テンプレートが Azure Container Apps または Azure Kubernetes Service を対象としていても、Docker ファイルが含まれていない場合、azd
は Buildpack を使用してイメージを自動的に生成します。