Ćwiczenie — autoryzowanie jednostki usługi na potrzeby wdrożeń

Ukończone

W poprzednim ćwiczeniu utworzono jednostkę usługi dla potoku wdrażania witryny internetowej i przetestowano, że można się zalogować przy użyciu jego klucza. Teraz możesz udzielić jednostce usługi dostępu do środowiska platformy Azure. W tym ćwiczeniu utworzysz przypisanie roli dla jednostki usługi, a następnie wdrożysz plik Bicep przy użyciu jednostki usługi.

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

  • Zaloguj się jako własne konto użytkownika.
  • Utwórz grupę zasobów dla firmowej witryny internetowej.
  • Utwórz przypisanie roli, aby umożliwić jednostce usługi wdrażanie zasobów w grupie zasobów.
  • Zaloguj się jako jednostka usługi i wdróż plik Bicep, który tworzy zasoby witryny internetowej firmy.
  • Zweryfikuj wdrożenie.
  • Wyczyść grupę zasobów i jednostkę usługi.

Zaloguj się jako konto użytkownika

W poprzednim ćwiczeniu zalogowaliśmy się przy użyciu jednostki usługi, a następnie wylogowaliśmy się. Musisz ponownie zalogować się jako własne konto użytkownika, aby móc wykonać kolejne kroki opisane w tym ćwiczeniu.

  1. W terminalu usługi Azure Cloud Shell (bash) programu Visual Studio Code zaloguj się na platformie Azure, uruchamiając następujące polecenie:

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

  1. W terminalu usługi Azure Cloud Shell (PowerShell) 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.

Tworzenie grupy zasobów

Teraz utworzysz grupę zasobów zawierającą zasoby witryny sieci Web firmy z toy.

  1. Uruchom to polecenie interfejsu wiersza polecenia platformy Azure w terminalu programu Visual Studio Code, aby utworzyć grupę zasobów:

    az group create --name ToyWebsite --location eastus
    
  2. Spójrz na dane wyjściowe JSON z poprzedniego polecenia. Zawiera właściwość o nazwie id, która jest identyfikatorem grupy zasobów. Skopiuj to gdzieś bezpiecznie. Wkrótce go użyjesz.

  1. Uruchom to polecenie programu Azure PowerShell w terminalu programu Visual Studio Code, aby utworzyć grupę zasobów:

    New-AzResourceGroup -Name ToyWebsite -Location eastus
    
  2. Przyjrzyj się danych wyjściowych z poprzedniego polecenia. Zawiera właściwość o nazwie ResourceId, która jest identyfikatorem grupy zasobów. Skopiuj to gdzieś bezpiecznie. Wkrótce go użyjesz.

Tworzenie przypisania roli

W przypadku potoku wdrażania witryny internetowej decydujesz się utworzyć przypisanie roli z następującymi szczegółami:

  • Assignee: jednostka usługi utworzona w poprzednim ćwiczeniu.
  • Rola: wbudowana rola Współautor.
  • Zakres: grupa zasobów utworzona w poprzednim kroku.

Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure w terminalu programu Visual Studio Code, aby utworzyć przypisanie roli. Zastąp symbole zastępcze wartościami skopiowanymi wcześniej.

az role assignment create \
  --assignee APPLICATION_ID \
  --role Contributor \
  --scope RESOURCE_GROUP_ID \
  --description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."

Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure w terminalu programu Visual Studio Code, aby utworzyć przypisanie roli. Zastąp symbole zastępcze wartościami skopiowanymi wcześniej.

New-AzRoleAssignment `
  -ApplicationId APPLICATION_ID `
  -RoleDefinitionName Contributor `
  -Scope RESOURCE_GROUP_ID `
  -Description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."

Tworzenie pliku Bicep

Wcześniej utworzono plik Bicep, który wdraża zasoby witryny internetowej. W tym miejscu zapiszesz ten plik, aby można go było przetestować przy użyciu jednostki usługi.

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

  2. Dodaj następującą zawartość do pliku main.bicep . Szablon zostanie wdrożony wkrótce.

    @description('The Azure region into which the resources should be deployed.')
    param location string = resourceGroup().location
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toywebsite${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-website-plan'
    var applicationInsightsInstanceName = 'toy-website-insights'
    
    resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource applicationInsightsInstance 'Microsoft.Insights/components@2018-05-01-preview' = {
      name: applicationInsightsInstanceName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsightsInstance.properties.InstrumentationKey
            }
            {
              name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
              value: applicationInsightsInstance.properties.ConnectionString
            }
          ]
        }
      }
    }
    
  3. Zapisz zmiany w pliku. Możesz wybrać pozycję Plik>Zapisz jako lub wybrać klawisze Ctrl+S w systemie Windows (⌘+S w systemie macOS). Pamiętaj, gdzie został zapisany plik. Na przykład możesz utworzyć folder scripts , aby go zapisać.

Wdrażanie pliku Bicep przy użyciu jednostki usługi

Obecnie nie masz potoku wdrażania, więc zasymulujesz działanie potoku w celu wdrożenia pliku Bicep.

  1. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure w terminalu programu Visual Studio Code, aby zalogować się przy użyciu poświadczeń jednostki usługi. Zastąp symbole zastępcze wartościami skopiowanymi w poprzednim ćwiczeniu.

    az login --service-principal \
      --username APPLICATION_ID \
      --password SERVICE_PRINCIPAL_KEY \
      --tenant TENANT_ID
    
  2. Wdróż plik Bicep, uruchamiając następujące polecenie interfejsu wiersza polecenia platformy Azure:

    az deployment group create \
      --resource-group ToyWebsite \
      --template-file main.bicep
    

    Wdrożenie może potrwać minutę lub dwie, a następnie zobaczysz pomyślne wdrożenie.

  1. Uruchom następujące polecenie programu Azure PowerShell w terminalu programu Visual Studio Code, aby bezpiecznie wyświetlić monit o poświadczenia jednostki usługi. Użyj identyfikatora aplikacji i klucza jednostki usługi z poprzedniego ćwiczenia, odpowiednio dla nazwy użytkownika i hasła.

    $credential = Get-Credential
    
  2. Uruchom następujące polecenie programu Azure PowerShell w terminalu programu Visual Studio Code, aby zalogować się przy użyciu poświadczeń jednostki usługi. Zastąp TENANT_ID symbol zastępczy wartością skopiowaną wcześniej.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Wdróż plik Bicep, uruchamiając następujące polecenie programu Azure PowerShell:

    New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
    

    Wdrożenie może potrwać minutę lub dwie, a następnie zobaczysz pomyślne wdrożenie.

Weryfikowanie wdrożenia

Użyj witryny Azure Portal, aby sprawdzić wdrożone zasoby i sprawdzić wyniki wdrożenia.

  1. Przejdź do portalu Azure Portal.

  2. W okienku po lewej stronie wybierz pozycję Grupy zasobów.

  3. Wybierz pozycję ToyWebsite.

  4. Wybierz pozycję Wdrożenia, aby wyświetlić pomyślne wdrożenie.

    Screenshot of the Azure portal resource group Deployments pane, displaying the successful deployment.

    Może również zostać wyświetlone wdrożenie o nazwie Failure-Anomalies-Alert-Rule-Deployment. Szczegółowe informacje aplikacji automatycznie tworzy to wdrożenie.

  5. Wybierz główne wdrożenie, aby zobaczyć, jakie zasoby zostały wdrożone, a następnie rozwiń węzeł Szczegóły wdrożenia.

    W tym przypadku zostanie wyświetlony plan usługi App Service, aplikacja i wystąpienie Szczegółowe informacje aplikacji.

    Screenshot of the Azure portal deployments overview pane for the main deployment, with an App Service plan and app, and an Application Insights instance listed.

    Zwróć uwagę, że nie ma nic niezwykłego w tym wdrożeniu. Mimo że jednostka usługi zainicjowała ją, jest ona tak samo jak w przypadku każdego innego wdrożenia Bicep.

Czyszczenie grupy zasobów i jednostki usługi

Pomyślnie utworzono jednostkę usługi i przypisanie roli, a zasoby witryny internetowej zostały wdrożone przy użyciu pliku Bicep. Teraz możesz usunąć utworzone zasoby.

  1. Wyloguj się z konta jednostki usługi przy użyciu następującego polecenia:

    az logout
    
  2. Zaloguj się ponownie na platformie Azure przy użyciu własnego konta użytkownika, uruchamiając następujące polecenie:

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

  4. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby usunąć grupę zasobów, jej zawartość i przypisanie roli:

    az group delete --name ToyWebsite
    

    Po wyświetleniu monitu o potwierdzenie wprowadź .y

  5. Uruchom następujące polecenie, aby usunąć jednostkę usługi. APPLICATION_ID Zastąp symbol zastępczy identyfikatorem aplikacji skopiowanymi w poprzednim ćwiczeniu:

    az ad sp delete --id APPLICATION_ID
    
  1. Wyloguj się z konta jednostki usługi przy użyciu następującego polecenia:

    Logout-AzAccount
    
  2. Zaloguj się ponownie na platformie Azure przy użyciu własnego konta użytkownika, uruchamiając następujące polecenie:

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

  4. Uruchom następujące polecenie programu Azure PowerShell, aby usunąć grupę zasobów, jej zawartość i przypisanie roli:

    Remove-AzResourceGroup -Name ToyWebsite
    

    Po wyświetleniu monitu o potwierdzenie wprowadź .y

  5. Uruchom następujące polecenie, aby usunąć jednostkę usługi. APPLICATION_ID Zastąp symbol zastępczy identyfikatorem aplikacji skopiowanymi w poprzednim ćwiczeniu:

    Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
    

    Po wyświetleniu monitu o potwierdzenie wprowadź .y