Udostępnij za pośrednictwem


Wprowadzenie do platformy SAP Deployment Automation Framework

Szybko rozpocznij pracę z platformą SAP Deployment Automation Framework.

Wymagania wstępne

Aby rozpocząć pracę z platformą SAP Deployment Automation Framework, potrzebne są następujące elementy:

  • Subskrypcja Azure. Jeśli nie masz subskrypcji Azure, możesz utworzyć bezpłatne konto Azure.
  • Konto użytkownika sap z uprawnieniami do pobierania oprogramowania SAP w środowisku platformy Azure. Aby uzyskać więcej informacji na temat użytkownika S-User, zobacz SAP S-User.
  • Instalacja interfejsu wiersza polecenia platformy Azure.
  • Tożsamość przypisana przez użytkownika (MS) lub jednostka usługi do użycia na potrzeby wdrożenia płaszczyzny sterowania.
  • Tożsamość przypisana przez użytkownika (MS) lub jednostka usługi do użycia na potrzeby wdrożenia strefy obciążenia.
  • Możliwość utworzenia projektu usługi Azure DevOps, jeśli chcesz użyć usługi Azure DevOps do wdrożenia.

Niektóre wymagania wstępne mogą być już zainstalowane w środowisku wdrażania. Zarówno usługa Azure Cloud Shell, jak i narzędzie do wdrażania są dostarczane z zainstalowanym programem Terraform i interfejsem wiersza polecenia platformy Azure.

Tworzenie tożsamości przypisanej przez użytkownika

Platforma wdrażania automatyzacji sap może również używać tożsamości przypisanej przez użytkownika (MSI) do wdrożenia. Upewnij się, że używasz konta z uprawnieniami do tworzenia tożsamości zarządzanych podczas uruchamiania skryptu, który tworzy tożsamość.

  1. Utwórz tożsamość zarządzaną.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az identity create --name ${control_plane_env_code}-Deployment-Identity --resource-group <ExistingResourceGroup>
    

    Przejrzyj dane wyjściowe. Na przykład:

       {
         "clientId": "<appId>",
         "id": "<armId>",
         "location": "<location>",
         "name": "${control_plane_env_code}-Deployment-Identity",
         "principalId": "<objectId>",
         "resourceGroup": "<ExistingResourceGroup>",
         "systemData": null,
         "tags": {},
         "tenantId": "<TenantId>",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
       }
    
  2. Skopiuj szczegóły danych wyjściowych.

    Dane wyjściowe są mapowe na następujące parametry. Te parametry są używane w kolejnych krokach z poleceniami automatyzacji.

    Nazwa danych wejściowych parametrów Nazwa danych wyjściowych
    app_id appId
    msi_id armId
    msi_objectid objectId
  3. Przypisz rolę Współautor do tożsamości.

    export appId="<appId>"
    
    az role assignment create --assignee $msi_objectid  --role "Contributor"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    
  4. Opcjonalnie przypisz rolę administratora dostępu użytkowników do tożsamości.

    export appId="<appId>"
    
    az role assignment create --assignee $msi_objectid --role "User Access Administrator"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    

Ważne

Jeśli nie przypiszesz roli Administrator dostępu użytkowników do tożsamości zarządzanej, nie możesz przypisać uprawnień przy użyciu struktury automatyzacji.

Tworzenie rejestracji aplikacji dla aplikacji internetowej

Struktura wdrażania automatyzacji sap może korzystać z usługi aplikacja systemu Azure service do konfigurowania plików parametrów tfvars.

  1. Utwórz rejestrację aplikacji.

       $ApplicationName="<App Registration Name>"
       $MSI_objectId="<msi_objectid>"
    
        Write-Host "Creating an App Registration for" $ApplicationName -ForegroundColor Green
    
        if (Test-Path $manifestPath) { Write-Host "Removing manifest.json" ; Remove-Item $manifestPath }
        Add-Content -Path manifest.json -Value '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]'
    
        $APP_REGISTRATION_ID = $(az ad app create --display-name $ApplicationName --enable-id-token-issuance true --sign-in-audience AzureADMyOrg --required-resource-access $manifestPath --query "appId" --output tsv)
    
        Write-Host "App Registration created with App ID: $APP_REGISTRATION_ID"
    
        Write-Host "Waiting for the App Registration to be created" -ForegroundColor Green
        Start-Sleep -s 20
    
        $ExistingData = $(az ad app list --all --filter "startswith(displayName, '$ApplicationName')" --query  "[?displayName=='$ApplicationName']| [0]" --only-show-errors) | ConvertFrom-Json
    
        $APP_REGISTRATION_OBJECTID = $ExistingData.id
    
        if (Test-Path $manifestPath) { Write-Host "Removing manifest.json" ; Remove-Item $manifestPath }
    
        Write-Host "Configuring authentication for the App Registration" -ForegroundColor Green
        az rest --method POST --uri "https://graph.microsoft.com/beta/applications/$APP_REGISTRATION_OBJECTID/federatedIdentityCredentials\" --body "{'name': 'ManagedIdentityFederation', 'issuer': 'https://login.microsoftonline.com/$ARM_TENANT_ID/v2.0', 'subject': '$MSI_objectId', 'audiences': [ 'api://AzureADTokenExchange' ]}"
    
        $API_URL="https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/ProtectAnAPI/appId/$APP_REGISTRATION_ID/isMSAApp~/false"
    
        Write-Host "The browser will now open, Please Add a new scope, by clicking the '+ Add a new scope link', accept the default name and click 'Save and Continue'"
        Write-Host "In the Add a scope page enter the scope name 'user_impersonation'. Choose 'Admins and Users' in the who can consent section, next provide the Admin consent display name 'Access the SDAF web application' and 'Use SDAF' as the Admin consent description, accept the changes by clicking the 'Add scope' button"
    
        Start-Process $API_URL
        Read-Host -Prompt "Once you have created and validated the scope, Press any key to continue"
    
    
    

Tworzenie jednostki usługi

Platforma wdrażania automatyzacji sap może używać jednostek usługi do wdrożenia.

Po wybraniu nazwy jednostki usługi upewnij się, że nazwa jest unikatowa w dzierżawie platformy Azure. Pamiętaj, aby używać konta z uprawnieniami tworzenia jednostek usługi podczas uruchamiania skryptu.

  1. Utwórz jednostkę usługi z uprawnieniami współautora.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az ad sp create-for-rbac --role="Contributor"  --scopes="/subscriptions/$ARM_SUBSCRIPTION_ID"   --name="$control_plane_env_code-Deployment-Account"
    

    Przejrzyj dane wyjściowe. Na przykład:

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. Skopiuj szczegóły danych wyjściowych. Pamiętaj, aby zapisać wartości dla appId, passwordi Tenant.

    Dane wyjściowe są mapowe na następujące parametry. Te parametry są używane w kolejnych krokach z poleceniami automatyzacji.

    Nazwa danych wejściowych parametrów Nazwa danych wyjściowych
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. Opcjonalnie przypisz rolę Administratora dostępu użytkowników do jednostki usługi.

    export appId="<appId>"
    
    az role assignment create --assignee $appId --role "User Access Administrator"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    

Ważne

Jeśli nie przypiszesz roli Administrator dostępu użytkowników do jednostki usługi, nie możesz przypisać uprawnień przy użyciu platformy automatyzacji.

Kontrole przed lotem

Do przeprowadzania kontroli przed lotem można użyć następującego skryptu. Skrypt wykonuje następujące testy i testy:

  • Sprawdza, czy jednostka usługi ma odpowiednie uprawnienia do tworzenia zasobów w subskrypcji.
  • Sprawdza, czy jednostka usługi ma uprawnienia administratora dostępu użytkownika.
  • Tworzenie sieci wirtualnej platformy Azure.
  • Utwórz usługę Azure Virtual Key Vault z prywatnym punktem końcowym.
  • Utwórz udział NSF usługi Azure Files.
  • Utwórz maszynę wirtualną platformy Azure z dyskiem danych przy użyciu usługi Premium Storage w wersji 2.
  • Sprawdź dostęp do wymaganych adresów URL przy użyciu wdrożonej maszyny wirtualnej.

$sdaf_path = Get-Location
if ( $PSVersionTable.Platform -eq "Unix") {
    if ( -Not (Test-Path "SDAF") ) {
      $sdaf_path = New-Item -Path "SDAF" -Type Directory
    }
}
else {
    $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
    if ( -not (Test-Path $sdaf_path)) {
        New-Item -Path $sdaf_path -Type Directory
    }
}

Set-Location -Path $sdaf_path

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

cd sap-automation
cd deploy
cd scripts

if ( $PSVersionTable.Platform -eq "Unix") {
./Test-SDAFReadiness.ps1
}
else {
.\Test-SDAFReadiness.ps1
}

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

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

Usługi Azure Repos można używać do przechowywania plików konfiguracji. Usługa Azure Pipelines udostępnia potoki, których można używać 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.

Tworzenie środowiska sap Deployment Automation Framework za pomocą usługi Azure DevOps

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_WORKLOAD_ZONE_CODE = "DEV"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $UniqueIdentifier = Read-Host "Please provide an identifier that makes the service principal names unique, for instance a project code"

    $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 = $UniqueIdentifier + " SDAF Control Plane"
    }

    else {
      $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
    }

    $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 = $UniqueIdentifier + " SDAF " + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
    }
        else {
      $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
    }

    $confirmation = Read-Host "Do you want to create a new Service Principal for the Workload zone y/n?"
    if ($confirmation -eq 'y') {
        $Env:SDAF_WorkloadZone_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_WORKLOAD_ZONE_CODE + " SPN"
    }
        else {
      $Env:SDAF_WorkloadZone_SPN_NAME = Read-Host "Please provide the Workload Zone 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") {
        remove-item .\New-SDAFDevopsProject.ps1
    }

    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile .\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 .

Aby uzyskać więcej informacji na temat konfigurowania usługi Azure DevOps dla platformy SAP Deployment Automation Framework, zobacz Konfigurowanie usługi Azure DevOps dla platformy SAP Deployment Automation Framework.

Tworzenie środowiska sap Deployment Automation Framework bez usługi Azure DevOps

Możesz uruchomić platformę SAP Deployment Automation Framework z maszyny wirtualnej na platformie Azure. W poniższych krokach opisano sposób tworzenia środowiska.

Ważne

Upewnij się, że maszyna wirtualna używa tożsamości przypisanej przez system lub przypisanej przez użytkownika z uprawnieniami do subskrypcji w celu utworzenia zasobów.

Upewnij się, że maszyna wirtualna ma zainstalowane następujące wymagania wstępne:

  • git
  • jq
  • rozpiąć
  • virtualenv (jeśli działa w systemie Ubuntu)

Wymagania wstępne można zainstalować na maszynie wirtualnej z systemem Ubuntu przy użyciu następującego polecenia:

sudo apt-get install -y git jq unzip virtualenv

Następnie można zainstalować składniki modułu wdrażania przy użyciu następujących poleceń:


wget https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/configure_deployer.sh -O configure_deployer.sh
chmod +x ./configure_deployer.sh
./configure_deployer.sh

# Source the new variables

. /etc/profile.d/deploy_server.sh

Przykłady

Folder ~/Azure_SAP_Automated_Deployment/samples zawiera zestaw przykładowych plików konfiguracji do rozpoczęcia testowania struktury automatyzacji wdrażania. Można je skopiować przy użyciu następujących poleceń:

cd ~/Azure_SAP_Automated_Deployment

cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment

Następny krok