Ćwiczenie — tworzenie i używanie modułu

Ukończone

Twoim zadaniem było dodanie sieci dostarczania zawartości lub sieci CDN do firmowej witryny internetowej w celu uruchomienia wombatu. Jednak inne zespoły w Twojej firmie powiedziały, że nie potrzebują sieci CDN. W tym ćwiczeniu utworzysz moduły dla witryny internetowej i sieci CDN, a moduły zostaną dodane do szablonu.

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

  • Dodaj moduł dla aplikacji.
  • Utwórz szablon Bicep, który używa modułu.
  • Dodaj kolejny moduł dla sieci CDN.
  • Dodaj moduł CDN do szablonu, tworząc go jako opcjonalny.
  • Wdróż szablon na platformie Azure.
  • Przejrzyj historię wdrażania.

W tym ćwiczeniu jest używane rozszerzenie Bicep dla programu Visual Studio Code. Pamiętaj, aby zainstalować to rozszerzenie w programie Visual Studio Code.

Tworzenie pustego pliku Bicep

  1. Otwórz Visual Studio Code.

  2. Utwórz nowy plik o nazwie main.bicep.

  3. Zapisz pusty plik, aby program Visual Studio Code ładował narzędzia Bicep.

    Możesz wybrać pozycję Plik>Zapisz jako lub wybrać Ctrl+S w systemie Windows (⌘+S w systemie macOS). Pamiętaj, gdzie zapisujesz plik. Na przykład możesz utworzyć folder szablonów , aby go zapisać.

Tworzenie modułu dla aplikacji

  1. 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 app.bicep. Zapisz plik.

  2. Dodaj następującą zawartość do pliku app.bicep :

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @description('The name of the App Service app.')
    param appServiceAppName string
    
    @description('The name of the App Service plan.')
    param appServicePlanName string
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    
    @description('The default host name of the App Service app.')
    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    Ten plik wdraża plan usługi aplikacja systemu Azure i aplikację. Zwróć uwagę, że moduł jest dość ogólny. Nie zawiera żadnych założeń dotyczących nazw zasobów ani jednostki SKU planu usługi App Service. Ułatwia to ponowne użycie modułu dla różnych wdrożeń.

  3. Zapisz zmiany w pliku.

Dodawanie modułu do szablonu Bicep

W tym miejscu dodasz moduł aplikacji do szablonu Bicep jako punkt początkowy.

  1. Otwórz plik main.bicep.

  2. Dodaj następujące parametry i zmienną do pliku:

    @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-product-launch-plan'
    

    Ponieważ jest to szablon, który zamierzasz wdrożyć dla witryn sieci Web, jest nieco bardziej szczegółowy. Nazwa planu usługi App Service jest definiowana jako zmienna. Parametr jednostki SKU ma wartość domyślną, która ma sens dla witryny internetowej uruchamiania toy.

    Napiwek

    Określasz, że location parametr powinien być ustawiony na westus3wartość . Zwykle zasoby są tworzone w tej samej lokalizacji co grupa zasobów przy użyciu resourceGroup().location właściwości . Jednak podczas pracy z piaskownicą usługi Microsoft Learn musisz użyć niektórych regionów platformy Azure, które nie są zgodne z lokalizacją grupy zasobów.

  3. Poniżej parametrów utwórz pusty wiersz. Teraz wpisz pierwszy wiersz definicji modułu aplikacji:

    module app 'modules/app.bicep' = {
    

    Podczas wpisywania zwróć uwagę, że rozszerzenie Bicep dla programu Visual Studio Code ułatwia tworzenie szkieletu deklaracji modułu. Po wpiseniu ścieżki do modułu i wpiseniu znaku równości (=) zostanie wyświetlone menu podręczne z kilkoma opcjami.

  4. Wybierz pozycję Wymagane właściwości z menu podręcznego:

    Zrzut ekranu programu Visual Studio Code przedstawiający opcję tworzenia szkieletu modułu z wymaganymi właściwościami.

  5. Ukończ deklarację modułu:

    module app 'modules/app.bicep' = {
      name: 'toy-launch-app'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    
  6. W dolnej części pliku zdefiniuj dane wyjściowe:

    @description('The host name to use to access the website.')
    output websiteHostName string = app.outputs.appServiceAppHostName
    
  7. Zapisz zmiany w pliku.

Tworzenie modułu dla sieci dostarczania zawartości

  1. W folderze modules utwórz plik o nazwie cdn.bicep. Zapisz plik.

  2. Dodaj następującą zawartość do pliku cdn.bicep :

    @description('The host name (address) of the origin server.')
    param originHostName string
    
    @description('The name of the CDN profile.')
    param profileName string = 'cdn-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the CDN endpoint')
    param endpointName string = 'endpoint-${uniqueString(resourceGroup().id)}'
    
    @description('Indicates whether the CDN endpoint requires HTTPS connections.')
    param httpsOnly bool
    
    var originName = 'my-origin'
    
    resource cdnProfile 'Microsoft.Cdn/profiles@2022-11-01-preview' = {
      name: profileName
      location: 'global'
      sku: {
        name: 'Standard_Microsoft'
      }
    }
    
    resource endpoint 'Microsoft.Cdn/profiles/endpoints@2022-11-01-preview' = {
      parent: cdnProfile
      name: endpointName
      location: 'global'
      properties: {
        originHostHeader: originHostName
        isHttpAllowed: !httpsOnly
        isHttpsAllowed: true
        queryStringCachingBehavior: 'IgnoreQueryString'
        contentTypesToCompress: [
          'text/plain'
          'text/html'
          'text/css'
          'application/x-javascript'
          'text/javascript'
        ]
        isCompressionEnabled: true
        origins: [
          {
            name: originName
            properties: {
              hostName: originHostName
            }
          }
        ]
      }
    }
    
    @description('The host name of the CDN endpoint.')
    output endpointHostName string = endpoint.properties.hostName
    

    Ten plik wdraża dwa zasoby: profil CDN i punkt końcowy usługi CDN.

  3. Zapisz zmiany w pliku.

Dodawanie modułów do głównego szablonu Bicep

  1. Otwórz plik main.bicep.

  2. Poniżej parametru appServicePlanSkuName dodaj następujący parametr:

    @description('Indicates whether a CDN should be deployed.')
    param deployCdn bool = true
    
  3. Poniżej definicji modułu zdefiniuj app cdn moduł:

    module cdn 'modules/cdn.bicep' = if (deployCdn) {
      name: 'toy-launch-cdn'
      params: {
        httpsOnly: true
        originHostName: app.outputs.appServiceAppHostName
      }
    }
    

    Zwróć uwagę, że moduł ma warunek, aby był wdrażany tylko wtedy, gdy deployCdn wartość parametru jest ustawiona na truewartość . Zwróć również uwagę, że parametr modułu originHostName jest ustawiony na wartość danych wyjściowych appServiceAppHostName z modułu app .

  4. Zaktualizuj dane wyjściowe nazwy hosta, aby wybrać poprawną nazwę hosta. Po wdrożeniu usługi CDN nazwa hosta ma być nazwą punktu końcowego usługi CDN.

    output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName
    
  5. Zapisz zmiany w pliku.

Wdrażanie szablonu Bicep na platformie Azure

Aby wdrożyć ten szablon na platformie Azure, musisz zalogować się na konto platformy Azure z poziomu terminalu programu Visual Studio Code. Upewnij się, że zainstalowano interfejs wiersza polecenia platformy Azure i pamiętaj, aby zalogować się przy użyciu tego samego konta, które zostało użyte do aktywowania piaskownicy.

  1. W menu Terminal wybierz polecenie New Terminal (Nowy terminal). Okno terminalu zwykle otwiera się w dolnej połowie ekranu.

  2. Jeśli powłoka wyświetlana po prawej stronie okna terminalu jest powłoka bash, prawidłowa powłoka jest otwarta i możesz przejść do następnej sekcji.

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code z wyświetloną opcją powłoki Bash.

  3. Jeśli zostanie wyświetlona powłoka inna niż powłoka bash , wybierz strzałkę listy rozwijanej powłoki, a następnie wybierz pozycję Azure Cloud Shell (Bash).

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code z wyświetloną listą rozwijaną powłoki terminalu i wybraną pozycją Domyślna powłoka Git Bash.

  4. Na liście powłok terminali wybierz pozycję bash.

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code z wybranym terminalem powłoki Bash.

  5. W terminalu przejdź do katalogu, w którym zapisano szablon. Jeśli na przykład szablon został zapisany w folderze templates , możesz użyć następującego polecenia:

    cd templates
    

Instalowanie aplikacji Bicep

Uruchom następujące polecenie, aby upewnić się, że masz najnowszą wersję aplikacji Bicep:

az bicep install && az bicep upgrade

Logowanie się do platformy Azure

  1. W terminalu programu Visual Studio Code zaloguj się do platformy Azure, uruchamiając następujące polecenie:

    az login
    
  2. W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.

    W terminalu programu Visual Studio Code zostanie wyświetlona lista subskrypcji skojarzonych z tym kontem.

  3. Ustaw domyślną subskrypcję dla wszystkich poleceń interfejsu wiersza polecenia platformy Azure uruchamianych w tej sesji.

    az account set --subscription "Concierge Subscription"
    

    Uwaga

    Jeśli ostatnio użyto więcej niż jednej piaskownicy, terminal może wyświetlić więcej niż jedno wystąpienie subskrypcji Concierge. W tym przypadku użyj dwóch następnych kroków, aby ustawić jedną jako domyślną subskrypcję. Jeśli poprzednie polecenie zakończyło się pomyślnie i zostanie wyświetlona tylko jedna subskrypcja Concierge, pomiń kolejne dwa kroki.

  4. Pobierz identyfikatory subskrypcji Concierge.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Ustaw domyślną subskrypcję przy użyciu identyfikatora subskrypcji. Zastąp ciąg {your subscription ID} najnowszym identyfikatorem subskrypcji Concierge.

    az account set --subscription {your subscription ID}
    

Ustawianie domyślnej grupy zasobów

W przypadku korzystania z interfejsu wiersza polecenia platformy Azure możesz ustawić domyślną grupę zasobów i pominąć parametr z pozostałych poleceń interfejsu wiersza polecenia platformy Azure w tym ćwiczeniu. Ustaw wartość domyślną na grupę zasobów utworzoną dla Ciebie w środowisku piaskownicy.

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

Wdrażanie szablonu na platformie Azure

Uruchom następujący kod z terminalu w programie Visual Studio Code, aby wdrożyć szablon Bicep na platformie Azure. Ukończenie tego procesu może potrwać minutę lub dwie, a następnie pomyślne wdrożenie.

az deployment group create --template-file main.bicep

Stan Running... zostanie wyświetlony w terminalu.

Aby wdrożyć ten szablon na platformie Azure, zaloguj się do konta platformy Azure z poziomu terminalu programu Visual Studio Code. Upewnij się, że zainstalowano program Azure PowerShell i zaloguj się do tego samego konta, na którym aktywowano piaskownicę.

  1. W menu Terminal wybierz polecenie New Terminal (Nowy terminal). Okno terminalu zwykle otwiera się w dolnej połowie ekranu.

  2. Jeśli powłoka wyświetlana po prawej stronie okna terminalu to powershell lub pwsh, prawidłowa powłoka jest otwarta i możesz przejść do następnej sekcji.

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code z opcją pwsh wyświetlaną na liście rozwijanej powłoki.

  3. Jeśli zostanie wyświetlona powłoka inna niż powershell lub pwsh , wybierz strzałkę listy rozwijanej powłoki, a następnie wybierz pozycję PowerShell.

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code z wyświetloną listą rozwijaną powłoki terminalu i wybraną pozycją Programu PowerShell.

  4. Na liście powłok terminali wybierz pozycję powershell lub pwsh.

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code z wybranym terminalem programu PowerShell.

  5. W terminalu przejdź do katalogu, w którym zapisano szablon. Jeśli na przykład szablon został zapisany w folderze templates , możesz użyć tego polecenia:

    Set-Location -Path templates
    

Instalowanie interfejsu wiersza polecenia Bicep

Aby użyć aplikacji Bicep z poziomu programu Azure PowerShell, zainstaluj interfejs wiersza polecenia Bicep.

Logowanie się na platformie Azure przy użyciu programu Azure PowerShell

  1. W terminalu programu Visual Studio Code uruchom następujące polecenie:

    Connect-AzAccount
    

    Zostanie otwarta przeglądarka umożliwiająca zalogowanie się do konta platformy Azure.

  2. Po zalogowaniu się na platformie Azure w terminalu zostanie wyświetlona lista subskrypcji skojarzonych z tym kontem.

    Jeśli aktywowano piaskownicę, zostanie wyświetlona subskrypcja o nazwie Subskrypcja Concierge. Użyj go w pozostałej części ćwiczenia.

  3. Ustaw domyślną subskrypcję dla wszystkich poleceń programu Azure PowerShell uruchamianych w tej sesji.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Uwaga

    Jeśli ostatnio użyto więcej niż jednej piaskownicy, terminal może wyświetlić więcej niż jedno wystąpienie subskrypcji Concierge. W tym przypadku użyj dwóch następnych kroków, aby ustawić jedną jako domyślną subskrypcję. Jeśli poprzednie polecenie zakończyło się pomyślnie i zostanie wyświetlona tylko jedna subskrypcja Concierge, pomiń kolejne dwa kroki.

  4. Uzyskaj identyfikator subskrypcji. Uruchomienie następującego polecenia zawiera listę subskrypcji i ich identyfikatorów. Concierge SubscriptionWyszukaj ciąg , a następnie skopiuj identyfikator z drugiej kolumny. Wygląda to mniej więcej tak: cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  5. Zmień aktywną subskrypcję na Subskrypcja Concierge. Pamiętaj, aby zastąpić ciąg {Identyfikator subskrypcji} skopiowaną wartością.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Ustawianie domyślnej grupy zasobów

Możesz ustawić domyślną grupę zasobów i pominąć parametr z pozostałych poleceń programu Azure PowerShell w tym ćwiczeniu. Ustaw tę wartość domyślną na grupę zasobów utworzoną dla Ciebie w środowisku piaskownicy.

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

Wdrażanie szablonu na platformie Azure

Wdróż szablon na platformie Azure przy użyciu następującego polecenia programu Azure PowerShell w terminalu. Ukończenie tego procesu może potrwać minutę lub dwie, a następnie pomyślne wdrożenie.

New-AzResourceGroupDeployment -TemplateFile main.bicep

Przeglądanie historii wdrażania

  1. Przejdź do witryny Azure Portal i upewnij się, że jesteś w subskrypcji piaskownicy:

    1. Wybierz swój awatar w prawym górnym rogu strony.
    2. Wybierz pozycję Przełącz katalog. Z listy wybierz katalog Microsoft Learn Sandbox.
  2. Na panelu po lewej stronie wybierz pozycję Grupy zasobów.

  3. Wybierz pozycję [nazwa grupy zasobów piaskownicy].

  4. W menu po lewej stronie wybierz pozycję Wdrożenia.

    Zrzut ekranu witryny Azure Portal przedstawiający grupę zasobów z wyróżnionym elementem menu Wdrożenia.

    Zostaną wyświetlone trzy wdrożenia.

  5. Wybierz główne wdrożenie i rozwiń węzeł Szczegóły wdrożenia.

    Zwróć uwagę, że oba moduły są wymienione na liście i że ich typy są wyświetlane jako Microsoft.Resources/deployments. Moduły są wyświetlane dwa razy, ponieważ ich dane wyjściowe są również przywołyne w szablonie.

    Zrzut ekranu witryny Azure Portal przedstawiający szczegóły wdrożenia dla głównego wdrożenia.

  6. Wybierz wdrożenia aplikacji toy-launch-cdn i toy-launch-app i przejrzyj zasoby wdrożone w każdym z nich. Zwróć uwagę, że odpowiadają zasobom zdefiniowanym w odpowiednim module.

Testowanie witryny sieci Web

  1. Wybierz wdrożenie aplikacji toy-launch-app.

  2. Wybierz pozycję Dane wyjściowe.

    Zrzut ekranu witryny Azure Portal przedstawiający wdrożenie z wyróżnionym elementem menu Dane wyjściowe.

  3. Wybierz przycisk kopiowania danych wyjściowych appServiceAppHostName .

  4. Na nowej karcie przeglądarki spróbuj przejść do adresu skopiowanego w poprzednim kroku. Adres powinien zaczynać się od https://.

    Zrzut ekranu przedstawiający stronę powitalną aplikacji internetowej z paskiem adresu z nazwą hosta usługi App Service.

    Zostanie wyświetlona strona powitalna usługi App Service pokazująca, że aplikacja została pomyślnie wdrożona.

  5. Przejdź do głównego wdrożenia i wybierz pozycję Dane wyjściowe.

  6. Skopiuj wartość danych wyjściowych websiteHostName . Zwróć uwagę, że ta nazwa hosta jest inna, ponieważ jest to nazwa hosta usługi Azure Content Delivery Network.

  7. Na nowej karcie przeglądarki spróbuj przejść do nazwy hosta skopiowanej w poprzednim kroku. Dodaj https:// do początku adresu.

    Aktywowanie punktów końcowych usługi CDN zajmuje kilka minut. Jeśli zostanie wyświetlony błąd Nie znaleziono strony, zaczekaj kilka minut i spróbuj ponownie wkleić link. Upewnij się również, że dodano https:// do początku adresu URL, aby używać protokołu HTTPS.

    Gdy punkt końcowy usługi CDN jest aktywny, uzyskasz tę samą stronę powitalną usługi App Service. Tym razem została ona obsługiwana za pośrednictwem usługi Azure Content Delivery Network, która pomaga zwiększyć wydajność witryny internetowej.

    Zrzut ekranu przedstawiający stronę powitalną aplikacji internetowej z paskiem adresu przedstawiającym punkt końcowy usługi CDN.