Ćwiczenie — refaktoryzacja szablonu w celu używania modułów

Ukończone

W tym ćwiczeniu zaktualizujesz utworzony wcześniej szablon Bicep, aby używał modułu dla zasobów usługi aplikacja systemu Azure. Moduły pomagają zachować czytelność intencji głównego szablonu. Jeśli zdecydujesz się ponownie użyć modułu usługi App Service w innych szablonach, możesz użyć go ponownie.

Podczas tego procesu wykonasz następujące czynności:

  • Dodaj nowy moduł i przenieś do niego zasoby usługi App Service.
  • Odwołanie do modułu z głównego szablonu Bicep.
  • Dodaj dane wyjściowe dla nazwy hosta aplikacji usługi App Service i emituj je z wdrożeń modułu i szablonu.
  • Przetestuj wdrożenie, aby upewnić się, że szablon jest prawidłowy.

Dodawanie nowego pliku modułu

  1. 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.

  2. 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 skopiowano parametry i zmienne z szablonu main.bicep , ponieważ szablon appService.bicep musi być samodzielny.

  3. 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.

Dodawanie odwołania do modułu z szablonu nadrzędnego

Teraz, gdy masz kompletny moduł umożliwiający wdrożenie zasobów usługi App Service, możesz odwołać się do modułu w szablonie nadrzędnym. Ponieważ moduł wdraża zasoby usługi App Service, możesz usunąć skojarzone zasoby i zmienne z szablonu nadrzędnego.

  1. W pliku main.bicep usuń zasoby usługi App Service i appServicePlanName definicje zmiennych i appServicePlanSkuName . Nie usuwaj parametrów usługi App Service, ponieważ nadal są one potrzebne. Ponadto nie usuwaj parametrów konta magazynu, zmiennej ani zasobów.

  2. 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 szablonie nadrzędnym.

  3. Zapisz zmiany w pliku.

Dodawanie nazwy hosta jako danych wyjściowych

  1. Dodaj następujący kod Bicep w dolnej części pliku appService.bicep :

    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    Ten kod deklaruje, że dane wyjściowe dla tego modułu, które będą mieć nazwę appServiceAppHostName, będą typu string. Dane wyjściowe zaczną przyjmować jego wartość z defaultHostName właściwości aplikacji usługi App Service.

  2. Zapisz zmiany w pliku.

    Te dane wyjściowe są deklarowane w pliku Bicep, który będziemy używać jako modułu, więc będzie on dostępny tylko dla szablonu nadrzędnego. Należy również zwrócić dane wyjściowe do osoby, która wdrożyła szablon.

  3. Otwórz plik main.bicep i dodaj następujący kod w dolnej części pliku:

    output appServiceAppHostName string = appService.outputs.appServiceAppHostName
    

    Zwróć 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.

  4. 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 plik nie jest zgodny, skopiuj przykład lub dostosuj szablon, aby był zgodny z przykładem.

Wdrażanie zaktualizowanego szablonu Bicep

Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure w terminalu.

az deployment group create \
  --name main \
  --template-file main.bicep \
  --parameters environmentType=nonprod

Uruchom następujące polecenie programu Azure PowerShell w terminalu.

New-AzResourceGroupDeployment `
  -Name main `
  -TemplateFile main.bicep `
  -environmentType nonprod

Sprawdzanie wdrożenia

  1. W przeglądarce wróć do witryny Azure Portal. Przejdź do grupy zasobów; Istnieją teraz dwa pomyślne wdrożenia.

  2. Wybierz link 2 Powodzenie. Zwróć uwagę, że masz wdrożenie o nazwie main na liście i nowe wdrożenie o nazwie appService.

    Zrzut ekranu przedstawiający interfejs witryny Azure Portal dla wdrożeń z dwoma wymienionymi wdrożeniami i stanami powodzenia.

  3. Wybierz wdrożenie o nazwie main, 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.

    Zrzut ekranu przedstawiający interfejs witryny Azure Portal dla określonego wdrożenia z jednym zasobem na liście.

  4. 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.

    Zrzut ekranu przedstawiający interfejs witryny Azure Portal dla danych wyjściowych określonego wdrożenia.

  5. Otwórz nową kartę przeglądarki i wklej skopiowaną nazwę hosta. Powinna zostać wyświetlona domyślna strona powitalna usługi App Service.

    Zrzut ekranu przedstawiający domyślną stronę powitalną usługi App Service.

Gratulacje! Pomyślnie wdrożono podstawy dla doskonałej aplikacji.