Ćwiczenie — refaktoryzuj plik Bicep, aby używać modułów
Uwaga / Notatka
To ćwiczenie jest opcjonalne. Jeśli chcesz go ukończyć, przed rozpoczęciem potrzebujesz subskrypcji Azure. Jeśli nie masz konta Azure lub nie chcesz go teraz tworzyć, możesz zapoznać się z instrukcjami, aby zrozumieć pojęcia.
W tym ćwiczeniu zaktualizujesz utworzony wcześniej plik Bicep, aby używał modułu dla zasobów usługi Azure App Service. Moduły pomagają zachować czytelność intencji głównego pliku. Możesz ponownie użyć modułu App Service w innych plikach Bicep, jeśli zdecydujesz się to zrobić.
Podczas tego procesu wykonasz następujące czynności:
- Dodaj nowy moduł i przenieś do niego zasoby usługi App Service.
- Odwołaj się do modułu z głównego pliku Bicep.
- Dodaj dane wyjściowe dla nazwy hosta aplikacji usługi App Service i emituj je z wdrożeń modułu i plików Bicep.
- Przetestuj wdrożenie, aby upewnić się, że plik Bicep jest prawidłowy.
Dodawanie nowego pliku modułu
Utwórz samodzielny moduł dla zasobów usługi App Service:
W programie Visual Studio Code utwórz nowy folder o nazwie modules w tym samym folderze, w którym utworzono plik main.bicep . W folderze modules utwórz plik o nazwie appService.bicep. Zapisz plik.
Dodaj następującą zawartość do pliku appService.bicep :
param location string param appServiceAppName string @allowed([ 'nonprod' 'prod' ]) param environmentType string var appServicePlanName = 'toy-product-launch-plan' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1' resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }Zwróć uwagę, że parametry i zmienne zostały skopiowane z pliku main.bicep Bicep , ponieważ plik appService.bicep Bicep musi być samodzielny.
Zapisz zmiany w pliku. Zwróć uwagę, że program Visual Studio Code nie wyświetla żadnych czerwonych zygzaków wskazujących ostrzeżenia dotyczące brakujących zmiennych, brakujących parametrów ani nieprawidłowych zasobów.
Dodaj odwołanie do modułu z nadrzędnego pliku Bicep
Po utworzeniu kompletnego modułu w celu wdrożenia zasobów usługi App Service możesz odwołać się do modułu w pliku nadrzędnym Bicep. Ponieważ moduł wdraża zasoby usługi App Service, możesz usunąć skojarzone zasoby i zmienne z pliku nadrzędnego.
W pliku main.bicep usuń zasoby usługi App Service oraz definicje zmiennych
appServicePlanNameiappServicePlanSkuName. Nie usuwaj parametrów usługi App Service, ponieważ nadal są one potrzebne. Ponadto nie usuwaj parametrów konta magazynu, zmiennej ani zasobów.W dolnej części pliku main.bicep dodaj następujący kod Bicep :
module appService 'modules/appService.bicep' = { name: 'appService' params: { location: location appServiceAppName: appServiceAppName environmentType: environmentType } }Zwróć uwagę, że określasz parametry modułu, odwołując się do parametrów w nadrzędnym pliku Bicep.
Zapisz zmiany w pliku.
Dodawanie nazwy hosta jako danych wyjściowych
Uwidocznij nazwę hosta aplikacji zarówno z modułu, jak i jego pliku macierzystego:
Dodaj następujący kod Bicep w dolnej części pliku appService.bicep :
output appServiceAppHostName string = appServiceApp.properties.defaultHostNameTen kod deklaruje, że dane wyjściowe dla tego modułu, które będą mieć nazwę
appServiceAppHostName, będą typustring. Dane wyjściowe będą przyjmować wartość z właściwościdefaultHostNameaplikacji App Service.Zapisz zmiany w pliku.
Dane wyjściowe są deklarowane w module usługi App Service. Plik nadrzędny może odczytać go za pośrednictwem
appService.outputs.appServiceAppHostName, ale nie jest automatycznie uwzględniany w danych wyjściowych wdrożenia nadrzędnego. Dodaj pasujące dane wyjściowe do pliku nadrzędnego, aby ktoś sprawdzający wdrożeniemainmógł je tam pobrać. Te zwykłe, nie tajne dane wyjściowe mogą być również odczytywane z zagnieżdżonego rekordu wdrożenia modułu przez użytkownika z wymaganymi uprawnieniami odczytu wdrożenia.Otwórz plik main.bicep i dodaj następujący kod w dolnej części pliku:
output appServiceAppHostName string = appService.outputs.appServiceAppHostNameZwróć uwagę, że te dane wyjściowe są deklarowane w podobny sposób do danych wyjściowych w module. Tym razem odwołujesz się jednak do danych wyjściowych modułu zamiast właściwości zasobu.
Zapisz zmiany w pliku.
Weryfikowanie plików Bicep
Po zakończeniu wszystkich powyższych zmian plik main.bicep powinien wyglądać następująco:
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
module appService 'modules/appService.bicep' = {
name: 'appService'
params: {
location: location
appServiceAppName: appServiceAppName
environmentType: environmentType
}
}
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
Plik appService.bicep powinien wyglądać następująco:
param location string
param appServiceAppName string
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Jeśli którykolwiek z plików Bicep nie jest zgodny, skopiuj przykład lub dostosuj swój plik, aby pasował do przykładu.
Wdrażanie zaktualizowanego pliku Bicep
Uwaga / Notatka
W tych ćwiczeniach użyj tej samej subskrypcji i grupy zasobów. Ponownie zastosuj wszystkie przesłonięcia parametrów nazwy zasobu lub lokalizacji z poprzedniego wdrożenia; w przeciwnym razie wartości domyślne w szablonie są ponownie używane.
Kontynuuj ustawianie environmentType na nonprod i używaj tej samej grupy zasobów ćwiczenia na potrzeby tego przewodnika. Wartość prod ilustruje płatną konfigurację środowiska produkcyjnego, a nie krok do uruchomienia w tych ćwiczeniach. Przed użyciem w osobnym środowisku zapoznaj się z wymaganiami wstępnymi wdrożenia produkcyjnego w temacie Wybieranie jednostek SKU dla zasobów w module Dodawanie elastyczności przy użyciu parametrów i zmiennych.
Uruchom następujące polecenie Azure CLI w terminalu.
az deployment group create \
--resource-group "$resourceGroupName" \
--name main \
--template-file main.bicep \
--parameters environmentType=nonprod
Uruchom następujące polecenie programu Azure PowerShell w terminalu.
New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroupName `
-Name main `
-TemplateFile main.bicep `
-environmentType nonprod
Sprawdź swoje wdrożenie
Upewnij się, że moduł został wdrożony i zwrócił nazwę hosta aplikacji:
W przeglądarce wróć do portalu Azure. Przejdź do grupy zasobów i otwórz pozycję Wdrożenia.
Znajdź wdrożenie
maini zagnieżdżone wdrożenieappService. Pomyślne uruchomienie powoduje utworzenie lub zaktualizowanie tych nazwanych wpisów. Inne wdrożenia mogą być również wymienione.
Wybierz wdrożenie o nazwie main. Upewnij się, że jego najnowsza operacja zakończyła się pomyślnie i odpowiada poleceniu, które właśnie uruchomiono, a następnie wybierz pozycję Szczegóły wdrożenia, aby rozwinąć listę wdrożonych zasobów.
Zwróć uwagę, że nasze wdrożenie modułu jest wyświetlane na liście.
Wybierz kartę Dane wyjściowe . Zwróć uwagę, że istnieje dane wyjściowe o nazwie appServiceAppHostName z nazwą hosta aplikacji usługi App Service. Skopiuj nazwę hosta do schowka.
Otwórz nową kartę przeglądarki i wklej skopiowaną nazwę hosta. Powinna zostać wyświetlona domyślna strona powitalna usługi App Service.
Gratulacje! Pomyślnie wdrożono podstawy dla doskonałej aplikacji.