Ćwiczenie — dodawanie zasobów do stosu wdrożenia

Ukończone

Jesteś na przebiegu 3 dla nowej aplikacji depozytów. Niedawno zespół ds. depozytów zażądał zmian w niektórych usługach platformy Azure w użyciu. Zażądali również utworzenia innych usług potrzebnych do obsługi aplikacji.

W tym ćwiczeniu utworzysz stos wdrożenia o zakresie do grupy zasobów, która odwołuje się do pliku Bicep. Plik definiuje plan usługi App Service, usługę aplikacji i bazę danych Azure SQL Database. Następnie zmodyfikujesz jednostkę SKU planu usługi App Service i zaktualizujesz stos wdrożenia. Na koniec dodasz istniejący obszar roboczy usługi Log Analytics i nowe wystąpienie usługi Application Insights do obsługi monitorowania aplikacji.

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

  • Tworzenie pliku Bicep definiującego początkową architekturę
  • Utwórz stos wdrożenia o zakresie do grupy zasobów przy użyciu pliku Bicep.
  • Modyfikowanie właściwości istniejącego zasobu zarządzanego
  • Zaktualizuj plik Bicep, aby uwzględnić istniejący obszar roboczy usługi Log Analytics i nowe wystąpienie usługi Application Insights
  • Aktualizowanie stosu wdrożenia w celu wdrożenia zarządzanych zasobów
  • Zweryfikuj zarządzane zasoby stosu wdrożenia.

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 pliku Bicep

Pierwszym krokiem jest utworzenie pliku Bicep definiującego nasze zasoby do użycia ze stosem wdrożenia.

  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 zapisano plik. Na przykład możesz utworzyć folder szablonów , w którym ma zostać zapisany plik.

  4. Dodaj następujący kod Bicep do pliku. Szablon zostanie wkrótce wdrożony.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @description('The name of the SQL database.')
    param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'
    
    @description('The password of the admin user.')
    param sqlServerAdminUserName string
    
    @description('The name of the admin user.')
    @secure()
    param sqlServerAdminPassword string
    
    @description('The name of the SQL server.')
    param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the web application.')
    param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'
    
    // Variables
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'F1'
        capacity: 1
      }
    }
    
    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id  
      }
    }
    
    // Resource - SQL Server
    resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
      name: sqlServerName
      location: location
      properties: {
        administratorLogin: sqlServerAdminUserName
        administratorLoginPassword: sqlServerAdminPassword
      }
    }
    
    // Resource - SQL Database
    resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
      parent: sqlServer
      name: sqlDatabaseName
      location: location
      sku: {
        name: 'Standard'
        tier: 'Standard'
      }
    }
    

    Zwróć uwagę, że używasz wyrażeń zawierających interpolację ciągów i uniqueString() funkcję do definiowania domyślnych wartości parametrów. Osoba wdrażająca ten szablon może zastąpić domyślne wartości parametrów, określając wartości w czasie wdrażania, ale nie może zastąpić wartości zmiennych.

    Zwróć również uwagę, że używasz zmiennej dla nazwy planu usługi App Service, ale używasz parametrów dla innych nazw. Konta magazynu i aplikacje usługi App Service wymagają globalnie unikatowych nazw, ale nazwy planów usługi App Service muszą być unikatowe tylko w ramach grupy zasobów. Ta różnica oznacza, że nie ma problemu z używaniem tej samej nazwy planu usługi App Service w różnych wdrożeniach, o ile wszystkie wdrożenia przechodzą do różnych grup zasobów.

  5. Zapisz zmiany w pliku.

Tworzenie stosu wdrożenia i wdrażanie zasobów 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 narzędzia interfejsu wiersza polecenia platformy Azure.

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

  2. Jeśli w oknie terminalu jest wyświetlana powłoka bash po prawej stronie, oznacza to, że prawidłowa powłoka jest już otwarta. Alternatywnie, jeśli po prawej stronie zostanie wyświetlona ikona powłoki bash, możesz ją wybrać, aby uruchomić powłokę.

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

    Jeśli zostanie wyświetlona powłoka inna niż powłoka bash , wybierz strzałkę listy rozwijanej powłoki, a następnie wybierz pozycję Git 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.

  3. 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 przy użyciu interfejsu wiersza polecenia 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. Na liście znajdź subskrypcję, której chcesz użyć w tym ćwiczeniu.

    Jeśli pominięto listę z logowania, możesz użyć poniższego fragmentu kodu, aby ponownie wyświetlić listę subskrypcji.

    az account list --output table
    
  4. Ustaw domyślną subskrypcję dla wszystkich poleceń interfejsu wiersza polecenia platformy Azure uruchamianych w tej sesji.

    az account set --subscription "Your Subscription Name or ID"
    

Tworzenie grupy zasobów

Musimy utworzyć grupę zasobów dla naszego stosu wdrożenia i zasobów zarządzanych. Aby utworzyć grupę zasobów, uruchom następujące polecenie z poziomu terminalu w programie Visual Studio Code.

az group create \
    --name rg-depositsApplication \
    --location eastus

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.

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

  2. Jeśli w oknie terminalu jest wyświetlany program pwsh lub powershell po prawej stronie, oznacza to, że prawidłowa powłoka jest już otwarta. Alternatywnie, jeśli po prawej stronie zostanie wyświetlona ikona powłoki programu PowerShell, możesz ją wybrać, aby uruchomić powłokę.

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

    Jeśli zostanie wyświetlona powłoka inna niż pwsh lub powershell , 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.

  3. 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 zaloguj się do platformy Azure, uruchamiając następujące polecenie:

    Connect-AzAccount
    
  2. W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.

  3. Pobierz identyfikator subskrypcji, której chcesz użyć w tym ćwiczeniu, uruchamiając następujące polecenie:

    Get-AzSubscription
    

    Identyfikatory subskrypcji znajdują się w drugiej kolumnie. Skopiuj drugą kolumnę. Wygląda to jak aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e.

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

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Tworzenie grupy zasobów

Musimy utworzyć grupę zasobów dla naszego stosu wdrożenia i zasobów zarządzanych. Aby utworzyć grupę zasobów, uruchom następujące polecenie z poziomu terminalu w programie Visual Studio Code.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus

Tworzenie stosu wdrożenia

Następnie musimy utworzyć nasz stos wdrożenia o zakresie do niedawno utworzonej grupy zasobów. Aby utworzyć stos wdrożenia, uruchom następujące polecenie z poziomu terminalu w programie Visual Studio Code.

  1. Aby utworzyć stos wdrożenia, uruchom następujące polecenie z poziomu terminalu w programie Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminUserName Utwórz nazwę administratora programu SQL Server, a następnie ciąg "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia interfejsu wiersza polecenia platformy Azure z monitem o wprowadzenie nazwy użytkownika administratora programu SQL Server.

  3. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminPassword Utwórz złożone hasło dla administratora programu SQL Server, a następnie "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia interfejsu wiersza polecenia platformy Azure z monitem o wprowadzenie hasła administratora programu SQL Server.

  4. Poczekaj na zakończenie operacji aktualizacji przed przejściem do następnego zadania.

  1. Aby utworzyć stos wdrożenia, uruchom następujące polecenie z poziomu terminalu w programie Visual Studio Code.

    New-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode None
    
  2. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminUserName Utwórz nazwę administratora programu SQL Server, a następnie ciąg "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia programu Azure PowerShell z monitem o wprowadzenie nazwy użytkownika administratora programu SQL Server.

  3. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminPassword Utwórz złożone hasło dla administratora programu SQL Server, a następnie "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia programu Azure PowerShell z monitem o wprowadzenie hasła administratora programu SQL Server.

  4. Poczekaj na zakończenie operacji aktualizacji przed przejściem do następnego zadania.

Zmodyfikuj plik Bicep, aby dodać istniejący obszar roboczy usługi Log Analytics i nowe wystąpienie usługi Application Insights

  1. Otwórz plik main.bicep w programie Visual Studio Code.

  2. Dodaj wyróżniony kod do sekcji zmiennych pliku:

    // Variables
    @description('The name of the Application Insights instance.')
    var applicationInsightsName = 'appinsights-deposits'
    
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    @description('The name of the Log Analytics Workspace.')
    var logAnalyticsWorkspaceName = 'log-deposits'
    
  3. Dodaj następujący kod w dolnej części pliku:

    // Resource - Log Analytics Workspace
    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
      name: logAnalyticsWorkspaceName
      location: location
      properties: {
        retentionInDays: 30
        sku: {
          name: 'PerGB2018'
        }
      }
    }
    
    // Resource - Application Insights
    resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
      name: applicationInsightsName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
        WorkspaceResourceId: logAnalyticsWorkspace.id
      }
    }
    
  4. Zapisz zmiany w pliku.

Modyfikowanie pliku Bicep w celu zmodyfikowania planu usługi App Service i usługi app Service

  1. Otwórz plik main.bicep w programie Visual Studio Code.

  2. Zmień nazwę jednostki SKU planu usługi App Service z F1 na S1:

    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'S1'
        capacity: 1
      }
    }
    
  3. Dodaj wyróżniony kod do komunikacji sieciowej w wystąpieniu usługi Application Insights:

    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }     
          ]
        }    
      }
    }
    
  4. Zapisz zmiany w pliku.

Aktualizowanie stosu wdrożenia

Po zmodyfikowaniu pliku Bicep chcemy zaktualizować stos wdrożenia, aby zmiany wprowadzone w zasobach w pliku Bicep zostały zaimplementowane.

  1. Aby zaktualizować stos wdrożenia, uruchom następujące polecenie z poziomu terminalu w programie Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Zostanie wyświetlony komunikat z informacją, że stos już istnieje w bieżącej subskrypcji. Jeśli wartość akcji dla parametru niezarządzanego została zmieniona, ostrzeżenie ostrzega o nowych wartościach. Naciśnij y, a następnie Enter.

    Zrzut ekranu przedstawiający ostrzeżenie wiersza polecenia interfejsu wiersza polecenia platformy Azure, że stos wdrożenia już istnieje.

  3. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminUserName Utwórz nazwę administratora programu SQL Server, a następnie ciąg "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia interfejsu wiersza polecenia platformy Azure z monitem o wprowadzenie nazwy użytkownika administratora programu SQL Server.

  4. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminPassword Utwórz złożone hasło dla administratora programu SQL Server, a następnie "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia interfejsu wiersza polecenia platformy Azure z monitem o wprowadzenie hasła administratora programu SQL Server.

  5. Poczekaj na zakończenie operacji aktualizacji przed przejściem do następnego zadania.

Po zmodyfikowaniu pliku Bicep chcemy zaktualizować stos wdrożenia, aby zmiany wprowadzone w planie usługi App Service były implementowane.

  1. Aby zaktualizować stos wdrożenia, uruchom następujące polecenie z poziomu terminalu w programie Visual Studio Code.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminUserName Utwórz nazwę administratora programu SQL Server, a następnie ciąg "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia programu Azure PowerShell z monitem o wprowadzenie nazwy użytkownika administratora programu SQL Server.

  3. Zostanie wyświetlony monit o wprowadzenie wartości .sqlServerAdminPassword Utwórz złożone hasło dla administratora programu SQL Server, a następnie "Enter".

    Zrzut ekranu przedstawiający wiersz polecenia programu Azure PowerShell z monitem o wprowadzenie hasła administratora programu SQL Server.

  4. Poczekaj na zakończenie operacji aktualizacji przed przejściem do następnego zadania.

Weryfikowanie aktualizacji stosu wdrożenia i zarządzanych zasobów

Po zakończeniu aktualizacji chcemy sprawdzić, czy jednostka SKU planu usługi App Service została zaktualizowana i że stos wdrożenia zarządza istniejącym obszarem roboczym usługi Log Analytics i nowym wystąpieniem usługi Application Insights.

  1. Aby wyświetlić konfigurację planu usługi App Service, uruchom następujące polecenie w terminalu w programie Visual Studio Code.

    az appservice plan show \
        --name plan-deposits
        --resource-group rg-depositsApplication
    
  2. Zwróć uwagę na sekcję sku danych wyjściowych. Plan usługi App Service znajduje się teraz w jednostce SKU S1. Powinny być podobne do następujących danych wyjściowych:

    "sku": {
        "capacity": 1,
        "family": "S",
        "name": "S1",
        "size": "S1",
        "tier": "Standard"
    },
    
  3. Aby wyświetlić konfigurację stosu wdrażania, uruchom następujące polecenie w terminalu w programie Visual Studio Code.

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  4. Zwróć uwagę na sekcję zasobów danych wyjściowych. Teraz widzimy istniejący obszar roboczy usługi Log Analytics i nowe wystąpienie usługi Application Insights wymienione jako zasoby zarządzane. Wynik powinien wyglądać podobnie do następujących danych wyjściowych:

    "resources": [
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      }
    ],
    
  1. Aby wyświetlić konfigurację planu usługi App Service, uruchom następujące polecenie w terminalu w programie Visual Studio Code.

    $plan = Get-AzAppServicePlan `
        -ResourceGroupName rg-depositsApplication `
        -Name plan-deposits
    $sku = $plan.Sku
    $sku
    
  2. Zwróć uwagę na dane wyjściowe. Plan usługi App Service znajduje się teraz w jednostce SKU S1. Powinna być podobna do następującej:

    Name         : S1
    Tier         : Standard
    Size         : S1
    Family       : S
    Capacity     : 1
    
  3. Aby wyświetlić konfigurację stosu wdrażania, uruchom następujące polecenie w terminalu w programie Visual Studio Code.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  4. Zwróć uwagę na sekcję zasobów danych wyjściowych. Teraz widzimy istniejący obszar roboczy usługi Log Analytics i nowe wystąpienie usługi Application Insights wymienione jako zasoby zarządzane. Wynik powinien wyglądać podobnie do następujących danych wyjściowych:

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/                        sql-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits