コードとしてのインフラストラクチャを作成する

完了

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 モジュールを作成します。

  1. テンプレートの infra フォルダー内に、app.bicep という名前の新しいファイルを作成します。

  2. 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 に関連付けるために使用されます。

  3. 新しい Bicep モジュールによってテンプレートの App Service が作成されますが、それを使用するには main.bicep を更新する必要があります。 エディター内で infra フォルダーを見つけて、main.bicep ファイルを開きます。

    スターター テンプレートによって生成される main.bicep ファイルには、役に立つセットアップ構成が含まれています。 たとえば、environmentNamelocation などの重要なパラメーターが、このファイルで定義されます。 既定では、これらのパラメーターは、main.parameters.json に含まれている場合はそのファイルから設定されますが、オーバーライドすることもできます。 また、スターター コードは、abbreviations.json ファイルを読み込み、使用できるようにするほか、サービスの名前付けに役立ついくつかのタグとトークンを作成し、作業を開始するのに役立つヒントを示す有用なコメントを挿入します。

  4. 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 デプロイ プロセスのこれらの要素間の関係を記述する構成を追加します。