演習 - レジストリからのモジュールを使用する
前の演習で、あなたは CDN と Web サイト モジュールを、自分が所属する玩具会社のレジストリに発行しました。 玩具の犬を開発しているチームに、そのチーム独自のデプロイにモジュールを使用する方法を示します。
この演習では、以下のことを行います。
- プライベート レジストリからのモジュールが含まれる Bicep ファイルを作成します。
- レジストリ内のモジュールへの参照を追加します。
- Bicep ファイルをビルドして検査し、モジュールの復元プロセスのしくみを理解します。
- レジストリ エイリアスの使用に切り替えます。
- Bicep ファイルを Azure にデプロイします。
Bicep ファイルを作成する
Visual Studio Code では、main.bicep という名前の新しいファイルを作成します。
Visual Studio Code によって Bicep ツールが読み込まれるように、空のファイルを保存します。
[ファイル]>[名前を付けて保存] を選択するか、Windows で Ctrl+S (macOS では ⌘+S) を選択できます。 ファイルの保存場所を忘れないようにしてください。 たとえば、保存場所として、templates フォルダーを作成することをお勧めします。
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'
パラメーターと変数の下で、次のコードを使用し、レジストリから 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 拡張機能によってレジストリからモジュールが読み取られ、それがご利用のローカル ファイル システムに保存されるために、そのような動作が発生するのです。
作成したモジュールの下で、次のコードを使用し、レジストリから 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 } }
ファイルを保存します。
Bicep ファイルをビルドして検査する
ここでは、Bicep ファイルを JSON ARM テンプレートにビルドします。 通常はビルドを行う必要はありませんが、モジュールのしくみを学習する際に役に立ちます。
Visual Studio Code ターミナルで、次のコマンドを実行して、Bicep ファイルを JSON ファイルにビルドします。
az bicep build --file main.bicep
Bicep は、main.bicep ファイルと同じフォルダーに main.json という名前のファイルを作成します。
main.json ファイルを開きます。
JSON ARM テンプレートの
resources
セクションの 134 行目あたりから始まるリソースには型がMicrosoft.Resources/deployments
のものがあります。 これらのリソースは、レジストリから追加したモジュールで定義されたモジュール デプロイを表します。
Visual Studio Code ターミナルで、次のコマンドを実行して、Bicep ファイルを JSON ファイルにビルドします。
bicep build main.bicep
Bicep は、main.bicep ファイルと同じフォルダーに main.json という名前のファイルを作成します。
main.json ファイルを開きます。
JSON ARM テンプレートの
resources
セクションの 134 行目あたりから始まるリソースには型がMicrosoft.Resources/deployments
のものがあります。 これらのリソースは、レジストリから追加したモジュールで定義されたモジュール デプロイを表します。
レジストリ エイリアスを作成する
Bicep ファイルにレジストリ URL を埋め込むのでなく、レジストリ エイリアスを作成することにしたとします。 この方法を選択すれば、Bicep ファイルが読みやすくなります。
Visual Studio Code では、bicepconfig.json という名前の新しいファイルを作成します。 main.bicep ファイルと同じフォルダーに作成してください。
次のコードを bicepconfig.json ファイルに貼り付けます。
YOUR_CONTAINER_REGISTRY_NAME
をプライベート レジストリの名前に置き換えてください。{ "moduleAliases": { "br": { "ToyCompanyRegistry": { "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io" } } } }
ファイルを保存します。
レジストリ エイリアスを使用する
ここでは、レジストリを直接参照するのではなく、レジストリ エイリアスを使用するように Bicep ファイルを更新します。
main.bicep ファイルを開きます。
website
モジュールの定義を見つけ、レジストリ エイリアスを含めるように定義を変更します。module website 'br/ToyCompanyRegistry:website:v1' = { name: 'toy-dog-website' params: { appServiceAppName: appServiceAppName appServicePlanName: appServicePlanName appServicePlanSkuName: appServicePlanSkuName location: location } }
ヒント
モジュール パスの先頭を
br:
からbr/
に必ず変更してください。 また、ToyCompanyRegistry
の後で、スラッシュ (/
) 文字をコロン (:
) に変更します。cdn
モジュールにも同様の変更を加えます:module cdn 'br/ToyCompanyRegistry:cdn:v1' = { name: 'toy-dog-cdn' params: { httpsOnly: true originHostName: website.outputs.appServiceAppHostName } }
ファイルを保存します。
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
デプロイを検証する
Azure portal にアクセスして、サンドボックス サブスクリプション内にいることを確認します。
- それには、ページの右上隅にある自分のアバターを選択します。
- [ディレクトリの切り替え] を選択します。 リストで、[Microsoft Learn サンドボックス] ディレクトリを選択します。
左側のパネルで、[リソース グループ] を選択します。
[サンドボックス リソース グループ名] を選択します。左側のメニューで [デプロイ] を選択します。
3 つのデプロイが一覧表示されることにご留意ください。
- main は親 Bicep ファイルのデプロイを表します。
- toy-dog-cdn と toy-dog-website は、main.bicep ファイルに含めたモジュールを表します。
main デプロイを選択し、[デプロイの詳細] を展開します。
両方のモジュールが一覧表示されており、それらのタイプが
Microsoft.Resources/deployments
として表示されています。toy-dog-website
モジュールは、リスト内に 2 度表示されます。その出力がテンプレート内でも参照されるからです。toy-launch-cdn および toy-launch-app デプロイを選択し、それぞれでデプロイされたリソースを確認します。 これらが、それぞれのモジュールで定義されているリソースに対応していることに注目してください。