演習 - レジストリからのモジュールを使用する

完了

前の演習で、あなたは CDN と Web サイト モジュールを、自分が所属する玩具会社のレジストリに発行しました。 玩具の犬を開発しているチームに、そのチーム独自のデプロイにモジュールを使用する方法を示します。

この演習では、以下のことを行います。

  • プライベート レジストリからのモジュールが含まれる Bicep ファイルを作成します。
  • レジストリ内のモジュールへの参照を追加します。
  • Bicep ファイルをビルドして検査し、モジュールの復元プロセスのしくみを理解します。
  • レジストリ エイリアスの使用に切り替えます。
  • Bicep ファイルを Azure にデプロイします。

Bicep ファイルを作成する

  1. Visual Studio Code では、main.bicep という名前の新しいファイルを作成します。

  2. Visual Studio Code によって Bicep ツールが読み込まれるように、空のファイルを保存します。

    [ファイル]>[名前を付けて保存] を選択するか、Windows で Ctrl+S (macOS では ⌘+S) を選択できます。 ファイルの保存場所を忘れないようにしてください。 たとえば、保存場所として、templates フォルダーを作成することをお勧めします。

Bicep ファイルにモジュールを追加する

  1. main.bicep ファイルに、次のパラメーターと変数を追加します。

    @description('The Azure region into which the resources should be deployed.')
    param location string = 'westus3'
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-dog-plan'
    
  2. パラメーターと変数の下で、次のコードを使用し、レジストリから Web サイト モジュールを追加します。 YOUR_CONTAINER_REGISTRY_NAME をプライベート レジストリの名前に置き換えてください。

    module website 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    入力を開始すると、Bicep によってモジュール識別子の下に赤い波線が表示されますが、その波線は消えて見えなくなります。 Visual Studio Code の Bicep 拡張機能によってレジストリからモジュールが読み取られ、それがご利用のローカル ファイル システムに保存されるために、そのような動作が発生するのです。

  3. 作成したモジュールの下で、次のコードを使用し、レジストリから CDN モジュールを追加します。 YOUR_CONTAINER_REGISTRY_NAME をプライベート レジストリの名前に置き換えてください。

    module cdn 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. ファイルを保存します。

Bicep ファイルをビルドして検査する

ここでは、Bicep ファイルを JSON ARM テンプレートにビルドします。 通常はビルドを行う必要はありませんが、モジュールのしくみを学習する際に役に立ちます。

  1. Visual Studio Code ターミナルで、次のコマンドを実行して、Bicep ファイルを JSON ファイルにビルドします。

    az bicep build --file main.bicep
    

    Bicep は、main.bicep ファイルと同じフォルダーに main.json という名前のファイルを作成します。

  2. main.json ファイルを開きます。

    JSON ARM テンプレートの resources セクションの 134 行目あたりから始まるリソースには型が Microsoft.Resources/deployments のものがあります。 これらのリソースは、レジストリから追加したモジュールで定義されたモジュール デプロイを表します。

  1. Visual Studio Code ターミナルで、次のコマンドを実行して、Bicep ファイルを JSON ファイルにビルドします。

    bicep build main.bicep
    

    Bicep は、main.bicep ファイルと同じフォルダーに main.json という名前のファイルを作成します。

  2. main.json ファイルを開きます。

    JSON ARM テンプレートの resources セクションの 134 行目あたりから始まるリソースには型が Microsoft.Resources/deployments のものがあります。 これらのリソースは、レジストリから追加したモジュールで定義されたモジュール デプロイを表します。

レジストリ エイリアスを作成する

Bicep ファイルにレジストリ URL を埋め込むのでなく、レジストリ エイリアスを作成することにしたとします。 この方法を選択すれば、Bicep ファイルが読みやすくなります。

  1. Visual Studio Code では、bicepconfig.json という名前の新しいファイルを作成します。 main.bicep ファイルと同じフォルダーに作成してください。

  2. 次のコードを bicepconfig.json ファイルに貼り付けます。 YOUR_CONTAINER_REGISTRY_NAME をプライベート レジストリの名前に置き換えてください。

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. ファイルを保存します。

レジストリ エイリアスを使用する

ここでは、レジストリを直接参照するのではなく、レジストリ エイリアスを使用するように Bicep ファイルを更新します。

  1. main.bicep ファイルを開きます。

  2. website モジュールの定義を見つけ、レジストリ エイリアスを含めるように定義を変更します。

    module website 'br/ToyCompanyRegistry:website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    ヒント

    モジュール パスの先頭を br: から br/ に必ず変更してください。 また、ToyCompanyRegistry の後で、スラッシュ (/) 文字をコロン (:) に変更します。

  3. cdn モジュールにも同様の変更を加えます:

    module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. ファイルを保存します。

Bicep ファイルを確認する

上記のすべての変更を完了すると、main.bicep ファイルは次の例のようになります。

@description('The Azure region into which the resources should be deployed.')
param location string = 'westus3'

@description('The name of the App Service app.')
param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'

@description('The name of the App Service plan SKU.')
param appServicePlanSkuName string = 'F1'

var appServicePlanName = 'toy-dog-plan'

module website 'br/ToyCompanyRegistry:website:v1' = {
  name: 'toy-dog-website'
  params: {
    appServiceAppName: appServiceAppName
    appServicePlanName: appServicePlanName
    appServicePlanSkuName: appServicePlanSkuName
    location: location
  }
}

module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
  name: 'toy-dog-cdn'
  params: {
    httpsOnly: true
    originHostName: website.outputs.appServiceAppHostName
  }
}

ファイルが例と一致しない場合は、例をコピーするか、例に合わせてテンプレートを調整してください。

Azure にデプロイ

Visual Studio Code ターミナルで、次のコマンドを実行してテンプレートを Azure にデプロイします。 このプロセスでデプロイが正常に完了するには数分かかることがあります。

az deployment group create \
   --template-file main.bicep
New-AzResourceGroupDeployment -TemplateFile main.bicep

デプロイを検証する

  1. Azure portal にアクセスして、サンドボックス サブスクリプション内にいることを確認します。

    1. それには、ページの右上隅にある自分のアバターを選択します。
    2. [ディレクトリの切り替え] を選択します。 リストで、[Microsoft Learn サンドボックス] ディレクトリを選択します。
  2. 左側のパネルで、[リソース グループ] を選択します。

  3. [サンドボックス リソース グループ名] を選択します。

  4. 左側のメニューで [デプロイ] を選択します。

    Screenshot of the Azure portal that shows the resource group, with the Deployments menu item highlighted.

    3 つのデプロイが一覧表示されることにご留意ください。

    • main は親 Bicep ファイルのデプロイを表します。
    • toy-dog-cdntoy-dog-website は、main.bicep ファイルに含めたモジュールを表します。
  5. main デプロイを選択し、[デプロイの詳細] を展開します。

    両方のモジュールが一覧表示されており、それらのタイプが Microsoft.Resources/deployments として表示されています。 toy-dog-website モジュールは、リスト内に 2 度表示されます。その出力がテンプレート内でも参照されるからです。

    Screenshot of the Azure portal that shows the details of the main deployment.

  6. toy-launch-cdn および toy-launch-app デプロイを選択し、それぞれでデプロイされたリソースを確認します。 これらが、それぞれのモジュールで定義されているリソースに対応していることに注目してください。