Korzystanie z programu SAP Deployment Automation Framework z usług Azure DevOps Services

Usługa Azure DevOps usprawnia proces wdrażania, udostępniając potoki, które można uruchomić w celu przeprowadzenia wdrożenia infrastruktury oraz działań konfiguracyjnych i instalacji sap.

Za pomocą usługi Azure Repos można przechowywać pliki konfiguracji i używać usługi Azure Pipelines do wdrażania i konfigurowania infrastruktury oraz aplikacji SAP.

Tworzenie konta w usłudze Azure DevOps Services

Do korzystania z usług Azure DevOps Services potrzebna jest organizacja usługi Azure DevOps. Organizacja służy do łączenia grup powiązanych projektów. Użyj konta służbowego, aby automatycznie połączyć organizację z identyfikatorem Entra firmy Microsoft. Aby utworzyć konto, otwórz usługę Azure DevOps i zaloguj się lub utwórz nowe konto.

Konfigurowanie usług Azure DevOps Services dla platformy SAP Deployment Automation Framework

Poniższy skrypt umożliwia wykonanie podstawowej instalacji usług Azure DevOps Services dla platformy SAP Deployment Automation Framework.

Otwórz program PowerShell ISE i skopiuj następujący skrypt i zaktualizuj parametry, aby odpowiadały twojemu środowisku.

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_CONTROL_PLANE_CODE = "MGMT"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $Env:MSI_OBJECT_ID = $null

    $branchName = "main"
        
    $UniqueIdentifier = "SDAF" + $ShortCode
    
    if ($Env:ARM_TENANT_ID.Length -eq 0) {
      az login --output none --only-show-errors --scope https://graph.microsoft.com//.default
    }
    else {
      az login --output none --tenant $ARM_TENANT_ID --only-show-errors --scope https://graph.microsoft.com//.default
    }

    az config set extension.use_dynamic_install=yes_without_prompt --only-show-errors

    az extension add --name azure-devops --only-show-errors

    $differentTenant = Read-Host "Is your Azure DevOps organization hosted in a different tenant than the one you are currently logged in to? y/n"
    if ($differentTenant -eq 'y') {
        $env:AZURE_DEVOPS_EXT_PAT = Read-Host "Please enter your Personal Access Token (PAT) with permissions to add new projects, manage agent pools to the Azure DevOps organization $Env:ADO_Organization"
        try {
            az devops login --organization $Env:ADO_Organization
        }
        catch {
            $_
        }
    }
    
    $confirmationWebAppDeployment = Read-Host "Do you want to use the Web Application for editing the configuration files (recommended) y/n?"
    if ($confirmationWebAppDeployment -eq 'y') {
        $Env:SDAF_WEBAPP = "true"
        $confirmation = Read-Host "Do you want to create a new Application registration (needed for the Web Application) y/n?"
        if ($confirmation -eq 'y') {
            $Env:SDAF_APP_NAME = "SDAF " + $UniqueIdentifier + " SDAF Control Plane"
        }
        else {
            $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
        }
    }
    else {
        $Env:SDAF_WEBAPP = "false"
    }
    
    $Env:SDAF_AuthenticationMethod = 'Managed Identity'
    
    $confirmationDeployment = Read-Host "Do you want to use Managed Identities for the deployment (recommended) y/n?"
    
    if ($confirmationDeployment -eq 'n') {
        $Env:SDAF_AuthenticationMethod = 'Service Principal'
         
        $confirmation = Read-Host "Do you want to create a new Service Principal for the Control plane y/n?"
        if ($confirmation -eq 'y') {
            $Env:SDAF_MGMT_SPN_NAME = "SDAF " + $UniqueIdentifier + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
        }
        else {
            $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
        }
        
    }
        
    if ( $PSVersionTable.Platform -eq "Unix") {
        if ( Test-Path "SDAF") {
        }
        else {
            $sdaf_path = New-Item -Path "SDAF" -Type Directory
        }
    }
    else {
        $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
        if ( Test-Path $sdaf_path) {
        }
        else {
            New-Item -Path $sdaf_path -Type Directory
        }
    }
        
    Set-Location -Path $sdaf_path
        
    if ( Test-Path "New-SDAFDevopsProject.ps1") {
        if ( $PSVersionTable.Platform -eq "Unix") {
            Remove-Item "New-SDAFDevopsProject.ps1"
        }
        else {
            Remove-Item ".\New-SDAFDevopsProject.ps1"
        }
    }
        
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/$branchName/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile New-SDAFDevopsProject.ps1 
    
    
    if ( $PSVersionTable.Platform -eq "Unix") {
        Unblock-File ./New-SDAFDevopsProject.ps1
        ./New-SDAFDevopsProject.ps1
    }
    else {
        Unblock-File .\New-SDAFDevopsProject.ps1
        .\New-SDAFDevopsProject.ps1
    }
    

Uruchom skrypt i postępuj zgodnie z instrukcjami. Skrypt otwiera okna przeglądarki na potrzeby uwierzytelniania i wykonywania zadań w projekcie usługi Azure DevOps.

Możesz uruchomić kod bezpośrednio z usługi GitHub lub zaimportować kopię kodu do projektu usługi Azure DevOps.

Aby potwierdzić, że projekt został utworzony, przejdź do portalu usługi Azure DevOps i wybierz projekt. Upewnij się, że repozytorium zostało wypełnione i że potoki zostały utworzone.

Ważne

Uruchom następujące kroki na lokalnej stacji roboczej. Upewnij się również, że masz zainstalowany najnowszy interfejs wiersza polecenia platformy Azure, uruchamiając az upgrade polecenie .

Konfigurowanie artefaktów usługi Azure DevOps Services dla nowej strefy obciążenia

Użyj następującego skryptu, aby wdrożyć artefakty potrzebne do obsługi nowej strefy obciążenia. Ten proces tworzy grupę zmiennych i połączenie usługi w usłudze Azure DevOps oraz opcjonalnie jednostkę usługi wdrażania.

Otwórz program PowerShell ISE i skopiuj następujący skrypt i zaktualizuj parametry, aby odpowiadały twojemu środowisku.

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
    
    if ( $PSVersionTable.Platform -eq "Unix") {
        if ( Test-Path "SDAF") {
        }
        else {
            $sdaf_path = New-Item -Path "SDAF" -Type Directory
        }
    }
    else {
        $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
        if ( Test-Path $sdaf_path) {
        }
        else {
            New-Item -Path $sdaf_path -Type Directory
        }
    }
    
    Set-Location -Path $sdaf_path
    
    if ( Test-Path "New-SDAFDevopsWorkloadZone.ps1") {
        remove-item .\New-SDAFDevopsWorkloadZone.ps1
    }
    
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsWorkloadZone.ps1 -OutFile .\New-SDAFDevopsWorkloadZone.ps1 ; .\New-SDAFDevopsWorkloadZone.ps1
    

Tworzenie przykładowej konfiguracji płaszczyzny sterowania

Potok można uruchomić, Create Sample Deployer Configuration aby utworzyć przykładową konfigurację płaszczyzny sterowania. Po uruchomieniu wybierz odpowiedni region świadczenia usługi Azure. Możesz również kontrolować, czy chcesz wdrożyć usługę Azure Firewall i usługę Azure Bastion.

Ręczna konfiguracja usług Azure DevOps Services dla platformy SAP Deployment Automation Framework

Usługę Azure DevOps Services dla platformy SAP Deployment Automation Framework można skonfigurować ręcznie.

Tworzenie nowego projektu

Usługa Azure Repos umożliwia przechowywanie kodu z repozytorium GitHub sap-automation i plików konfiguracji środowiska.

Otwórz usługę Azure DevOps i utwórz nowy projekt, wybierając pozycję Nowy projekt i wprowadzając szczegóły projektu. Projekt zawiera repozytorium kontroli źródła usługi Azure Repos i usługę Azure Pipelines na potrzeby wykonywania działań wdrażania.

Jeśli nie widzisz nowego projektu, upewnij się, że masz uprawnienia do tworzenia nowych projektów w organizacji.

Zarejestruj adres URL projektu.

Importowanie repozytorium

Zacznij od zaimportowania repozytorium GitHub bootstrap platformy SAP Deployment Automation Framework do usługi Azure Repos.

Przejdź do sekcji Repozytoria i wybierz pozycję Importuj repozytorium. Zaimportuj https://github.com/Azure/sap-automation-bootstrap.git repozytorium do usługi Azure DevOps. Aby uzyskać więcej informacji, zobacz Importowanie repozytorium.

Jeśli nie możesz zaimportować repozytorium, możesz utworzyć repozytorium ręcznie. Następnie możesz zaimportować zawartość z repozytorium GitHub Bootstrap platformy SAP Deployment Automation Framework do niego.

Tworzenie repozytorium na potrzeby ręcznego importowania

Wykonaj ten krok tylko wtedy, gdy nie możesz bezpośrednio zaimportować repozytorium.

Aby utworzyć repozytorium obszarów roboczych, w sekcji Repozytoria w obszarze Ustawienia projektu wybierz pozycję Utwórz.

Wybierz repozytorium, wprowadź ciąg Git i podaj nazwę repozytorium. Na przykład użyj repozytorium SAP Configuration Repository.

Klonowanie repozytorium

Aby zapewnić bardziej kompleksową możliwość edytowania zawartości, możesz sklonować repozytorium do folderu lokalnego i edytować zawartość lokalnie.

Aby sklonować repozytorium do folderu lokalnego, w sekcji Repozytoria portalu w obszarze Pliki wybierz pozycję Klonuj. Aby uzyskać więcej informacji, zobacz Klonowanie repozytorium.

Screenshot that shows how to clone the repository.

Ręczne importowanie zawartości repozytorium przy użyciu klonu lokalnego

Możesz również ręcznie pobrać zawartość z repozytorium SAP Deployment Automation Framework i dodać ją do lokalnego klonu repozytorium Usługi Azure DevOps.

Przejdź do https://github.com/Azure/SAP-automation-samples repozytorium i pobierz zawartość repozytorium jako plik zip. Wybierz pozycję Kod i wybierz pozycję Pobierz plik ZIP.

Skopiuj zawartość z pliku zip do folderu głównego klonu lokalnego.

Otwórz folder lokalny w programie Visual Studio Code. Powinny zostać wyświetlone zmiany, które muszą zostać zsynchronizowane przez wskaźnik za pomocą ikony kontroli źródła pokazanej tutaj.

Screenshot that shows that source code is changed.

Wybierz ikonę kontroli źródła i podaj komunikat o zmianie. Na przykład wprowadź ciąg Import from GitHub (Importuj z usługi GitHub ) i naciśnij klawisze Ctrl+Enter, aby zatwierdzić zmiany. Następnie wybierz pozycję Synchronizuj zmiany , aby zsynchronizować zmiany z powrotem do repozytorium.

Wybieranie źródła kodu terraform i rozwiązania Ansible

Możesz uruchomić kod platformy SAP Deployment Automation Framework bezpośrednio z usługi GitHub lub zaimportować go lokalnie.

Uruchamianie kodu z repozytorium lokalnego

Jeśli chcesz uruchomić kod platformy SAP Deployment Automation Framework z lokalnego projektu usługi Azure DevOps, musisz utworzyć oddzielne repozytorium kodu i repozytorium konfiguracji w projekcie usługi Azure DevOps:

  • Nazwa repozytorium konfiguracji: Same as the DevOps Project name. Źródło to https://github.com/Azure/sap-automation-bootstrap.git.
  • Nazwa repozytorium kodu: sap-automation. Źródło to https://github.com/Azure/sap-automation.git.
  • Nazwa przykładowego i repozytorium szablonu: sap-samples. Źródło to https://github.com/Azure/sap-automation-samples.git.

Uruchamianie kodu bezpośrednio z usługi GitHub

Jeśli chcesz uruchomić kod bezpośrednio z usługi GitHub, musisz podać poświadczenia dla usługi Azure DevOps, aby móc ściągać zawartość z usługi GitHub.

Tworzenie połączenia usługi GitHub

Aby ściągnąć kod z usługi GitHub, potrzebujesz połączenia z usługą GitHub. Aby uzyskać więcej informacji, zobacz Zarządzanie połączeniami usług.

Aby utworzyć połączenie z usługą, przejdź do pozycji Project Ustawienia i w sekcji Pipelines (Potoki) przejdź do pozycji Połączenia z usługą.

Screenshot that shows how to create a service connection for GitHub.

Wybierz pozycję GitHub jako typ połączenia z usługą. Wybierz pozycję Azure Pipelines na liście rozwijanej Konfiguracja protokołu OAuth.

Wybierz pozycję Autoryzuj , aby zalogować się do usługi GitHub.

Wprowadź nazwę połączenia z usługą, na przykład Połączenie SDAF w usłudze GitHub. Upewnij się, że pole wyboru Udziel uprawnień dostępu do wszystkich potoków jest zaznaczone. Wybierz pozycję Zapisz , aby zapisać połączenie z usługą.

Konfigurowanie aplikacji internetowej

Platforma automatyzacji opcjonalnie aprowizuje aplikację internetową jako część płaszczyzny sterowania, aby ułatwić obsługę stref obciążeń SAP i plików konfiguracji systemu. Jeśli chcesz użyć aplikacji internetowej, musisz najpierw utworzyć rejestrację aplikacji na potrzeby uwierzytelniania. Otwórz usługę Azure Cloud Shell i uruchom następujące polecenia.

W razie potrzeby zastąp MGMT element swoim środowiskiem.

echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json

TF_VAR_app_registration_app_id=$(az ad app create --display-name MGMT-webapp-registration --enable-id-token-issuance true --sign-in-audience AzureADMyOrg --required-resource-access @manifest.json --query "appId" | tr -d '"')

echo $TF_VAR_app_registration_app_id

az ad app credential reset --id $TF_VAR_app_registration_app_id --append --query "password"

rm manifest.json

Zapisz identyfikator rejestracji aplikacji i wartości hasła do późniejszego użycia.

Tworzenie usługi Azure Pipelines

Usługa Azure Pipelines jest implementowana jako pliki YAML. Są one przechowywane w folderze deploy/pipelines w repozytorium.

Potok wdrażania płaszczyzny sterowania

Utwórz potok wdrażania płaszczyzny sterowania. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/01-deploy-control-plane.yml
Nazwisko Wdrażanie płaszczyzny sterowania

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na Wdrożenie płaszczyzny sterowania.

Potok wdrażania strefy obciążenia SAP

Utwórz potok strefy obciążenia SAP. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/02-sap-workload-zone.yml
Nazwisko Wdrażanie strefy obciążenia SAP

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na wdrożenie strefy obciążenia SAP.

Potok wdrażania systemu SAP

Utwórz potok wdrażania systemu SAP. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/03-sap-system-deployment.yml
Nazwisko Wdrażanie systemu SAP (infrastruktura)

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na wdrożenie systemu SAP (infrastruktura).

Potok pozyskiwania oprogramowania SAP

Utwórz potok pozyskiwania oprogramowania SAP. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka deploy/pipelines/04-sap-software-download.yml
Nazwisko Pozyskiwanie oprogramowania SAP

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na pozyskiwanie oprogramowania SAP.

Potok konfiguracji i instalacji oprogramowania SAP

Utwórz potok konfiguracji sap i instalacji oprogramowania. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/05-DB-and-SAP-installation.yml
Nazwisko Konfiguracja i instalacja sap

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na konfiguracja sap i instalacja oprogramowania.

Potok usuwania wdrożenia

Utwórz potok usuwania wdrożenia. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/10-remover-terraform.yml
Nazwisko Usuwanie wdrożenia

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na Usuwanie wdrożenia.

Potok usuwania płaszczyzny sterowania

Utwórz potok usuwania wdrożenia płaszczyzny sterowania. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/12-remove-control-plane.yml
Nazwisko Usuwanie płaszczyzny sterowania

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na Usuwanie płaszczyzny sterowania.

Potok usuwania wdrożenia przy użyciu usługi Azure Resource Manager

Utwórz potok usuwania wdrożenia usługi Azure Resource Manager. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/11-remover-arm-fallback.yml
Nazwisko Usuwanie wdrożenia przy użyciu usługi Azure Resource Manager

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na Usuwanie wdrożenia przy użyciu procesora ARM.

Uwaga

Użyj tego potoku tylko w ostateczności. Usunięcie tylko grup zasobów pozostawia resztki, które mogą komplikować ponowne wdrażanie.

Potok aktualizatora repozytorium

Utwórz potok aktualizatora repozytorium. W sekcji Potoki wybierz pozycję Nowy potok. Wybierz pozycję Azure Repos Git jako źródło kodu. Skonfiguruj potok tak, aby używał istniejącego pliku YAML usługi Azure Pipelines. Określ potok przy użyciu następujących ustawień:

Ustawienie Wartość
Repozytorium "Repozytorium główne" (takie samo jak nazwa projektu)
Oddział main
Ścieżka pipelines/20-update-ado-repository.yml
Nazwisko Aktualizator repozytorium

Zapisz potok. Aby wyświetlić polecenie Zapisz, wybierz cudzysłów obok pozycji Uruchom. Przejdź do sekcji Potoki i wybierz potok. Wybierz pozycję Zmień nazwę/Przenieś z menu wielokropka po prawej stronie i zmień nazwę potoku na aktualizator repozytorium.

Ten potok powinien być używany w przypadku aktualizacji w repozytorium sap-automation, którego chcesz użyć.

Importowanie zadania oczyszczania z witryny Visual Studio Marketplace

Potoki używają niestandardowego zadania do wykonywania działań oczyszczania po wdrożeniu. Zadanie niestandardowe można zainstalować za pomocą funkcji Oczyszczania po kompilacji. Zainstaluj ją w organizacji usługi Azure DevOps przed uruchomieniem potoków.

Przygotowania do własnego agenta

  1. Utwórz pulę agentów, przechodząc do Ustawienia organizacyjnej. W sekcji Potoki wybierz pozycję Pule>agentów Dodaj pulę. Wybierz pozycję Self-hosted jako typ puli. Nadaj puli nazwę w celu dopasowania do środowiska płaszczyzny sterowania. Użyj na przykład nazwy MGMT-WEEU-POOL. Upewnij się, że wybrano opcję Udziel uprawnień dostępu do wszystkich potoków , a następnie wybierz pozycję Utwórz , aby utworzyć pulę.

  2. Zaloguj się przy użyciu konta użytkownika, którego planujesz używać w organizacji usługi Azure DevOps .

  3. Na stronie głównej otwórz ustawienia użytkownika i wybierz pozycję Osobiste tokeny dostępu.

    Diagram that shows the creation of a personal access token.

  4. Utwórz osobisty token dostępu przy użyciu następujących ustawień:

    • Pule agentów: wybierz pozycję Odczyt i zarządzaj.

    • Kompilacja: wybierz pozycję Odczyt i wykonaj.

    • Kod: wybierz pozycję Odczyt i zapis.

    • Grupy zmiennych: wybierz pozycję Odczyt, utwórz i zarządzaj.

      Zapisz utworzoną wartość tokenu.

    Diagram that shows the attributes of the personal access token.

Definicje zmiennych

Potoki wdrażania są skonfigurowane do używania zestawu wstępnie zdefiniowanych wartości parametrów zdefiniowanych przy użyciu grup zmiennych.

Typowe zmienne

Typowe zmienne są używane przez wszystkie potoki wdrażania. Są one przechowywane w grupie zmiennych o nazwie SDAF-General.

Utwórz nową grupę zmiennych o nazwie SDAF-General przy użyciu strony Biblioteka w sekcji Potoki . Dodaj następujące zmienne:

Zmienna Wartość Uwagi
Deployment_Configuration_Path OBSZARY ROBOCZE Aby przetestować przykładową konfigurację, użyj polecenia samples/WORKSPACES zamiast obszarów roboczych.
Oddział main
Nazwa użytkownika S <SAP Support user account name>
Hasło S <SAP Support user password> Zmień typ zmiennej na wpis tajny, wybierając ikonę blokady.
tf_version 1.6.0 Wersja programu Terraform do użycia. Zobacz Pobieranie programu Terraform.

Zapisz zmienne.

Alternatywnie możesz użyć interfejsu wiersza polecenia usługi Azure DevOps do skonfigurowania grup.

s-user="<SAP Support user account name>"
s-password="<SAP Support user password>"

az devops login

az pipelines variable-group create --name SDAF-General --variables ANSIBLE_HOST_KEY_CHECKING=false Deployment_Configuration_Path=WORKSPACES Branch=main S-Username=$s-user S-Password=$s-password tf_varsion=1.3.0 --output yaml

Pamiętaj, aby przypisać uprawnienia dla wszystkich potoków przy użyciu uprawnień potoku.

Zmienne specyficzne dla środowiska

Ponieważ każde środowisko może mieć różne poświadczenia wdrożenia, należy utworzyć grupę zmiennych dla każdego środowiska. Na przykład użyj wartości SDAF-MGMT,SDAF-DEV i SDAF-QA.

Utwórz nową grupę zmiennych o nazwie SDAF-MGMT dla środowiska płaszczyzny sterowania przy użyciu strony Biblioteka w sekcji Potoki . Dodaj następujące zmienne:

Zmienna Wartość Uwagi
Agent Azure Pipelines lub nazwa puli agentów Ta pula zostanie utworzona w późniejszym kroku.
CP_ARM_CLIENT_ID Service principal application ID
CP_ARM_OBJECT_ID Service principal object ID
CP_ARM_CLIENT_SECRET Service principal password Zmień typ zmiennej na wpis tajny, wybierając ikonę blokady.
CP_ARM_SUBSCRIPTION_ID Target subscription ID
CP_ARM_TENANT_ID Tenant ID dla jednostki usługi
AZURE_CONNECTION_NAME Wcześniej utworzona nazwa połączenia
sap_fqdn Na przykład w pełni kwalifikowana nazwa domeny SAP sap.contoso.net Wymagane tylko w przypadku, gdy Prywatna strefa DNS nie jest używana.
FENCING_SPN_ID Service principal application ID dla środka ogrodzeniowego Wymagane w przypadku wdrożeń o wysokiej dostępności, które używają jednostki usługi dla agenta ogrodzenia.
FENCING_SPN_PWD Service principal password dla środka ogrodzeniowego Wymagane w przypadku wdrożeń o wysokiej dostępności, które używają jednostki usługi dla agenta ogrodzenia.
FENCING_SPN_TENANT Service principal tenant ID dla środka ogrodzeniowego Wymagane w przypadku wdrożeń o wysokiej dostępności, które używają jednostki usługi dla agenta ogrodzenia.
Osobisty token dostępu <Personal Access Token> Użyj osobistego tokenu zdefiniowanego w poprzednim kroku.
BASEN <Agent Pool name> Pula agentów do użycia w tym środowisku.
APP_REGISTRATION_APP_ID App registration application ID Wymagane w przypadku wdrażania aplikacji internetowej.
WEB_APP_CLIENT_SECRET App registration password Wymagane w przypadku wdrażania aplikacji internetowej.
SDAF_GENERAL_GROUP_ID Identyfikator grupy dla grupy SDAF-General Identyfikator można pobrać z parametru variableGroupId adresu URL podczas uzyskiwania dostępu do grupy zmiennych przy użyciu przeglądarki. Na przykład: variableGroupId=8.
WORKLOADZONE_PIPELINE_ID Identyfikator potoku SAP workload zone deployment Identyfikator można pobrać z parametru definitionId ADRESU URL ze strony potoku w usłudze Azure DevOps. Na przykład: definitionId=31.
SYSTEM_PIPELINE_ID Identyfikator potoku SAP system deployment (infrastructure) Identyfikator można pobrać z parametru definitionId ADRESU URL ze strony potoku w usłudze Azure DevOps. Na przykład: definitionId=32.

Zapisz zmienne.

Pamiętaj, aby przypisać uprawnienia dla wszystkich potoków przy użyciu uprawnień potoku.

W przypadku korzystania z aplikacji internetowej upewnij się, że usługa kompilacji ma co najmniej uprawnienia Współtworzenie.

Możesz użyć funkcji klonowania, aby utworzyć następną grupę zmiennych środowiskowych. APP_REGISTRATION_APP_ID, WEB_APP_CLIENT_SECRET, SDAF_GENERAL_GROUP_ID, WORKLOADZONE_PIPELINE_ID i SYSTEM_PIPELINE_ID są potrzebne tylko dla grupy SDAF-MGMT.

Tworzenie połączenia z usługą

Aby usunąć zasoby platformy Azure, potrzebne jest połączenie usługi Azure Resource Manager. Aby uzyskać więcej informacji, zobacz Zarządzanie połączeniami usług.

Aby utworzyć połączenie z usługą, przejdź do pozycji Projekt Ustawienia. W sekcji Potoki wybierz pozycję Połączenia usługi.

Screenshot that shows how to create a service connection.

Wybierz usługę Azure Resource Manager jako typ połączenia z usługą i jednostkę usługi (ręcznie) jako metodę uwierzytelniania. Wprowadź subskrypcję docelową, która jest zazwyczaj subskrypcją płaszczyzny sterowania. Wprowadź szczegóły jednostki usługi. Wybierz pozycję Weryfikuj , aby zweryfikować poświadczenia. Aby uzyskać więcej informacji na temat tworzenia jednostki usługi, zobacz Tworzenie jednostki usługi.

Wprowadź nazwę połączenia z usługą, na przykład użyj .Connection to MGMT subscription Upewnij się, że pole wyboru Udziel uprawnień dostępu do wszystkich potoków jest zaznaczone. Wybierz pozycję Weryfikuj i zapisz , aby zapisać połączenie z usługą.

Uprawnienia

Większość potoków dodaje pliki do usługi Azure Repos i dlatego wymaga uprawnień ściągnięcia. W obszarze Project Ustawienia w sekcji Repozytoria wybierz kartę Zabezpieczenia repozytorium kodu źródłowego i przypisz uprawnienia Współtworzenie do .Build Service

Screenshot that shows repository permissions.

Wdrażanie płaszczyzny sterowania

Nowo utworzone potoki mogą nie być widoczne w widoku domyślnym. Wybierz kartę Ostatnie i wróć do pozycji Wszystkie karty, aby wyświetlić nowe potoki .

Wybierz potok wdrażania płaszczyzny sterowania i wprowadź nazwy konfiguracji dla narzędzia wdrażania i biblioteki SAP. Wybierz pozycję Uruchom , aby wdrożyć płaszczyznę sterowania. Pamiętaj, aby zaznaczyć pole wyboru Wdróż aplikację internetową konfiguracji, jeśli chcesz skonfigurować aplikację internetową konfiguracji.

Ręczne konfigurowanie własnego agenta usługi Azure DevOps Services

Konfiguracja ręczna jest wymagana tylko wtedy, gdy agent usługi Azure DevOps Services nie jest konfigurowany automatycznie. Przed kontynuowaniem sprawdź, czy pula agentów jest pusta.

Aby nawiązać połączenie z modułem wdrażania:

  1. Zaloguj się w witrynie Azure Portal.

  2. Przejdź do grupy zasobów zawierającej maszynę wirtualną programu wdrażającego.

  3. Połączenie do maszyny wirtualnej przy użyciu usługi Azure Bastion.

  4. Domyślna nazwa użytkownika to azureadm.

  5. Wybierz pozycję Klucz prywatny SSH z usługi Azure Key Vault.

  6. Wybierz subskrypcję zawierającą płaszczyznę sterowania.

  7. Wybierz magazyn kluczy wdrażania.

  8. Z listy wpisów tajnych wybierz wpis tajny kończący się ciągiem -sshkey.

  9. Połącz się z maszyną wirtualną.

Uruchom następujący skrypt, aby skonfigurować narzędzie do wdrażania:

mkdir -p ~/Azure_SAP_Automated_Deployment

cd ~/Azure_SAP_Automated_Deployment

git clone https://github.com/Azure/sap-automation.git

cd sap-automation/deploy/scripts

./configure_deployer.sh

Uruchom ponownie narzędzie wdrażania, ponownie połącz się i uruchom następujący skrypt, aby skonfigurować agenta usługi Azure DevOps:

cd ~/Azure_SAP_Automated_Deployment/

$DEPLOYMENT_REPO_PATH/deploy/scripts/setup_ado.sh

Zaakceptuj licencję i po wyświetleniu monitu o adres URL serwera wprowadź adres URL przechwycony podczas tworzenia projektu usługi Azure DevOps. W przypadku uwierzytelniania wybierz pozycję PAT i wprowadź wartość tokenu z poprzedniego kroku.

Po wyświetleniu monitu wprowadź nazwę puli aplikacji utworzoną w poprzednim kroku. Zaakceptuj domyślną nazwę agenta i domyślną nazwę folderu roboczego. Agent jest teraz skonfigurowany i uruchamiany.

Wdrażanie aplikacji internetowej płaszczyzny sterowania

Wybranie parametru podczas uruchamiania deploy the web app infrastructure potoku wdrażania płaszczyzny sterowania aprowizuje infrastrukturę niezbędną do hostowania aplikacji internetowej. Potok Wdrażanie aplikacji internetowej publikuje oprogramowanie aplikacji w tej infrastrukturze.

Poczekaj na zakończenie wdrożenia. Wybierz kartę Rozszerzenia i postępuj zgodnie z instrukcjami, aby sfinalizować konfigurację. reply-url Zaktualizuj wartości rejestracji aplikacji.

W wyniku uruchomienia potoku płaszczyzny sterowania część wymaganego adresu URL aplikacji internetowej jest przechowywana w zmiennej o nazwie WEBAPP_URL_BASE w grupie zmiennych specyficznych dla środowiska. W dowolnym momencie można zaktualizować adresy URL zarejestrowanej aplikacji internetowej przy użyciu następującego polecenia.

webapp_url_base=<WEBAPP_URL_BASE>
az ad app update --id $TF_VAR_app_registration_app_id --web-home-page-url https://${webapp_url_base}.azurewebsites.net --web-redirect-uris https://${webapp_url_base}.azurewebsites.net/ https://${webapp_url_base}.azurewebsites.net/.auth/login/aad/callback

Musisz również udzielić uprawnień czytelnika do przypisanej przez system tożsamości zarządzanej usługi App Service. Przejdź do zasobu usługi App Service. Po lewej stronie wybierz pozycję Tożsamość. Na karcie Przypisane przez system wybierz pozycję Przypisania ról platformy>Azure Dodaj przypisanie roli. Wybierz pozycję Subskrypcja jako zakres i rolę Czytelnik . Następnie wybierz opcję Zapisz. Bez tego kroku funkcja listy rozwijanej aplikacji internetowej nie będzie działać.

Teraz powinno być możliwe odwiedzanie aplikacji internetowej i używanie jej do wdrażania stref obciążeń SAP i infrastruktury systemu SAP.

Następny krok