コードとしてのインフラストラクチャを作成する
Azure Developer CLI (azd
) により、Bicep または Terraform で記述されたコードとしてのインフラストラクチャ (IaC) ファイルを使用して、Azure でリソースをプロビジョニングできます。 コードとしてのインフラストラクチャを使用すると、宣言型定義ファイルで、デプロイされるたびに同じ環境を確実に生成するインフラストラクチャのリソースと構成を定義できます。 これらのファイルは、アプリをホストするために必要な Azure リソースを作成するために、azd
によって実行されます。 コードとしてのインフラストラクチャの詳細については、「コードとしてのインフラストラクチャとは」のドキュメントを参照してください。
このユニットでは、Bicep コードをテンプレートに追加して、アプリに必要なリソースをプロビジョニングします。 このモジュールを完了するために、Bicep に関する予備知識は必要ありません。 ただし、azd
テンプレートを広範囲に使用する予定の場合は、少なくとも Bicep または Terraform の基本に慣れておくことをお勧めします。 Bicep の詳細については、「Bicep の基礎」のトレーニング パスを参照してください。
テンプレートの Bicep または Terraform ファイルは、infra
フォルダーに存在します。 選択した Bicep スターター テンプレートで、開始点として 3 つのファイルが生成されました。
main.bicep
- Bicep 実行のメイン エントリポイントとして機能し、Azure でプロビジョニングされるリソースを定義するために使用されます。main.bicep
ファイルで他の Bicep モジュール (ファイル) を参照することもできます。それにより、リソース定義をより細かく再利用可能なファイルに抽出できます。abbreviations.json
- 多くの便利な名前付けの省略形を提供する JSON ファイル。 このファイルは実行中にmain.bicep
ファイルに読み込まれ、それにより、さまざまな Azure リソースに一貫性のある論理名を付けるためのプレフィックスのセットが提供されます。main.parameters.json
- Azure の既定の場所や環境名など、重要なテンプレート パラメーターの既定値を定義する JSON ファイル。
main.bicep
ファイルを更新し、Bicep ファイルをさらに作成することで、アプリに必要な Azure リソースを定義してプロビジョニングできます。 Main.bicep
は、一般に、他の Bicep モジュール間でパラメーターを渡すことによって、それらの実行を調整します。 この例では、アプリケーションをホストする Azure App Service を定義するための追加の Bicep モジュールを作成します。
テンプレートの
infra
フォルダー内に、app.bicep
という名前の新しいファイルを作成します。app.bicep
ファイルを開き、次のコード スニペットを貼り付けます。 コード コメントには、コードの各セクションの目的が記述されています。// Define parameters that can be passed into the module // Parameters allow a module to be reusable @description('The location of where to deploy resources') param location string @description('The name of the App Service Plan') param appServicePlanName string @description('The name of the App Service') param appServiceName string // Define the App Service Plan to manage compute resources resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location properties: { reserved: true } sku: { name: 'F1' } kind: 'linux' } // Define the App Service to host the application resource appService 'Microsoft.Web/sites@2022-03-01' = { name: appServiceName location: location properties: { serverFarmId: appServicePlan.id siteConfig: { linuxFxVersion: 'DOTNETCORE|6.0' } } // Tag used to reference the service in the Azure.yaml file tags: { 'azd-service-name': 'web' } }
このコード スニペットで次のタスクが実行されます。
- 再利用可能で構成可能にするためにモジュールに渡すことができる、一連のパラメーターを定義します。 モジュールの柔軟性を高めるために、リソース定義のより多くの値をパラメーター化することを選択できます。
- App Service インスタンスのコンピューティング リソースを管理する App Service プランを定義します。
- デプロイされたアプリケーションをホストする App Service を定義します。
Note
azd-service-name
タグは App Service Bicep 定義に含まれており、後でAzure.yaml
構成ファイルによってアプリ ソース コードのフォルダーを App Service に関連付けるために使用されます。新しい Bicep モジュールによってテンプレートの App Service が作成されますが、それを使用するには
main.bicep
を更新する必要があります。 エディター内でinfra
フォルダーを見つけて、main.bicep
ファイルを開きます。スターター テンプレートによって生成される
main.bicep
ファイルには、役に立つセットアップ構成が含まれています。 たとえば、environmentName
やlocation
などの重要なパラメーターが、このファイルで定義されます。 既定では、これらのパラメーターは、main.parameters.json
に含まれている場合はそのファイルから設定されますが、オーバーライドすることもできます。 また、スターター コードは、abbreviations.json
ファイルを読み込み、使用できるようにするほか、サービスの名前付けに役立ついくつかのタグとトークンを作成し、作業を開始するのに役立つヒントを示す有用なコメントを挿入します。main.bicep
ファイルの下の方に、次のようなコメントがあります。// Add resources to be provisioned below. // A full example that leverages azd bicep modules can be seen in the todo-python-mongo template: // https://github.com/Azure-Samples/todo-python-mongo/tree/main/infra
このプレースホルダー コメントでは、プロビジョニングする追加のリソースを含める場所が強調表示されています。 App Service 用に作成した Bicep モジュールを含める必要があるため、コメントの直後に次のコード スニペットを貼り付けます。
module web 'app.bicep' = { name: '${deployment().name}-app' scope: rg params: { location: location appServiceName: '${abbrs.webSitesAppService}${resourceToken}' appServicePlanName: '${abbrs.webServerFarms}${resourceToken}' } }
このコード スニペットで次のタスクが実行されます。
- 前の手順で作成したファイルを指す Bicep モジュールを定義します。
- Azure デプロイ セットに名前を割り当て、
main.bicep
で作成されたリソース グループにスコープを設定します。 - 名前付けに役立つ
abbreviations.json
の値を使用して、パラメーターをモジュールに渡します。
これで、アプリ ソース コードのインフラストラクチャ ファイルがテンプレートの一部になりました。 次のユニットでは、azd
デプロイ プロセスのこれらの要素間の関係を記述する構成を追加します。