Ćwiczenie — Utworzenie i wdrożenie stacku wdrożeniowego za pomocą Bicep

Ukończone

Jesteś na sprincie 1 nowej aplikacji do depozytów. Chcesz przetestować proces tworzenia stosu wdrożenia z zasobami zarządzanymi w subskrypcji programistycznej. W tym ćwiczeniu utworzysz stos wdrożeniowy w zakresie grupy zasobów, który odwołuje się do pliku Bicep. Plik definiuje plan usługi Azure App Service i usługę Azure App Service.

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

  • Tworzenie pliku Bicep definiującego początkową architekturę
  • Utwórz stos wdrożenia w zakresie grupy zasobów, korzystając z pliku Bicep.
  • Przeglądanie konfiguracji stosu wdrożenia i zasobów zarządzanych

W tym ćwiczeniu używane jest 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, który definiuje nasze zasoby do użycia w stosie wdrożeniowym.

  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). Upewnij się, aby pamiętać, gdzie zapisałeś 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. Wkrótce wdrażasz szablon. Dobrym pomysłem jest samodzielne wpisanie kodu zamiast kopiowania i wklejania, dzięki czemu możesz zobaczyć, jak narzędzie pomaga w pisaniu plików Bicep.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @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
      }
    }
    

    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 planu usługi Azure App Service, ale używasz parametrów dla pozostałych nazw. Konta przechowywania i aplikacje usługi App Service muszą mieć globalnie unikatowe nazwy, ale nazwy planów usługi App Service muszą być unikatowe tylko w swojej grupie 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 masz zainstalowane narzędzia Azure CLI.

  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 po prawej stronie jest wyświetlana bash, oznacza to, że właściwa powłoka jest już otwarta. Alternatywnie, jeśli po prawej stronie wyświetli się ikona powłoki bash, możesz ją wybrać, aby uruchomić powłokę.

    Zrzut ekranu przedstawiający okno terminala programu Visual Studio Code z opcją 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

Zaloguj się do Azure przy użyciu Azure CLI

  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ń Azure CLI uruchamianych w tej sesji.

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

Tworzenie grupy zasobów

Musimy utworzyć grupę zasobów dla naszej platformy wdrożeniowej oraz zasobów, którymi zarządzamy. 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 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 okna terminalu programu Visual Studio Code, z wyświetloną listą rozwijaną powłoki terminalu i wybraną opcją 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 naszej platformy wdrożeniowej oraz zasobów, którymi zarządzamy. 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

Utwórz stos wdrożeniowy

Następnie musimy utworzyć nasz stos wdrożenia dla naszej niedawno utworzonej grupy zasobów. 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
New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Zweryfikuj tworzenie stosu wdrożeniowego i zarządzanych zasobów

Podczas tworzenia stosu wdrożenia i zarządzanych zasobów można wyświetlić jego konfigurację przy użyciu wiersza polecenia lub witryny Azure Portal. W tym ćwiczeniu użyjemy interfejsu wiersza polecenia platformy Azure. 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

Wyniki obejmują właściwości stosu wdrożeń i stan zarządzanych zasobów. Dane wyjściowe JSON powinny wyglądać znajomo na poniższej ilustracji:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "bypassStackOutOfSyncError": null,
  "correlationId": ".",
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deployments/stack-deposits",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT2M53.2734284S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deploymentStacks/stack-deposits",
  "location": null,
  "name": "stack-deposits",
  "outputs": null,
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-01-01T00:00:01.000000+00:00",
    "createdBy": "depositsapplication@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-01T00:00:01.000000+00:00",
    "lastModifiedBy": "depositsapplication@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Zwróć uwagę na sekcję zasobów w wynikach. Dla każdego zasobu jego stan jest wyświetlany jako "zarządzany", jego grupa zasobów, identyfikator zasobu i ustawienia odmowy.

Podczas tworzenia stosu wdrożenia i zarządzanych zasobów można wyświetlić jego konfigurację przy użyciu wiersza polecenia lub witryny Azure Portal. W tym ćwiczeniu użyjemy programu Azure PowerShell. 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

Wyniki obejmują właściwości stosu wdrożeń i stan zarządzanych zasobów. Dane wyjściowe programu PowerShell powinny wyglądać znajomo na poniższej ilustracji:

Id                            : /subscriptions/././rg-depositsApplication/././deploymentStacks/stack-deposits
Name                          : stack-deposits
ProvisioningState             : succeeded
resourcesCleanupAction        : detach
resourceGroupsCleanupAction   : detach
managementGroupsCleanupAction : detach
CorrelationId                 : .
DenySettingsMode              : none
CreationTime(UTC)             : 1/01/2024 0:00:01 AM
DeploymentId                  : /subscriptions/././rg-depositsApplication/././deployments/stack-deposits
Resources                     : /subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits
                                /subscriptions/././rg-depositsApplication/././sites/webapp-eque2jlrboltq

Zwróć uwagę na sekcję zasobów w wynikach. Definiuje zasoby zarządzane przez stos wdrożenia. Widzisz pełny identyfikator każdego zasobu.