Sdílet prostřednictvím


Začínáme s architekturou SAP Deployment Automation Framework

Začněte rychle s architekturou SAP Deployment Automation Framework.

Požadavky

Pokud chcete začít s architekturou SAP Deployment Automation Framework, potřebujete:

  • Předplatné Azure. Pokud ještě nemáte předplatné Azure, můžete si vytvořit bezplatný účet.
  • Uživatelský účet SAP s oprávněními ke stažení softwaru SAP ve vašem prostředí Azure. Další informace o uživateli S-User najdete v tématu SAP S-User.
  • Instalace Azure CLI.
  • Identita přiřazená uživatelem (MS) nebo instanční objekt, který se má použít pro nasazení řídicí roviny.
  • Identita přiřazená uživatelem (MS) nebo instanční objekt, který se má použít pro nasazení zóny úloh.
  • Možnost vytvořit projekt Azure DevOps, pokud chcete k nasazení použít Azure DevOps.

Některé požadavky už můžou být ve vašem prostředí nasazení nainstalované. Azure Cloud Shell i nasazovač jsou součástí Terraformu a nainstalovaného Azure CLI.

Vytvoření identity přiřazené uživatelem

Architektura nasazení automatizace SAP může také pro nasazení použít identitu přiřazenou uživatelem (MSI). Při spuštění skriptu, který vytvoří identitu, nezapomeňte použít účet s oprávněními k vytváření spravovaných identit.

  1. Vytvořte spravovanou identitu.

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

    Zkontrolujte výstup. Příklad:

       {
         "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. Zkopírujte podrobnosti výstupu.

    Výstup se mapuje na následující parametry. Tyto parametry použijete v pozdějších krocích s příkazy automatizace.

    Název vstupu parametru Název výstupu
    app_id appId
    msi_id armId
    msi_objectid objectId
  3. Přiřaďte k identitě roli Přispěvatel.

    export appId="<appId>"
    
    az role assignment create --assignee $msi_objectid  --role "Contributor"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    
  4. Volitelně můžete identitě přiřadit roli Správce uživatelských přístupů.

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

Důležité

Pokud spravované identitě nepřiřazujete roli Správce uživatelských přístupů, nemůžete přiřadit oprávnění pomocí architektury automation.

Vytvoření registrace aplikace pro webovou aplikaci

Architektura nasazení automatizace SAP může využít službu Aplikace Azure Service ke konfiguraci souborů parametrů tfvars.

  1. Vytvořte registraci aplikace.

       $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"
    
    
    

Vytvoření instančního objektu služby

Architektura nasazení automatizace SAP může pro nasazení používat instanční objekty.

Když zvolíte název instančního objektu, ujistěte se, že je název v rámci vašeho tenanta Azure jedinečný. Při spuštění skriptu nezapomeňte použít účet s oprávněními k vytvoření instančních objektů.

  1. Vytvořte instanční objekt s oprávněními přispěvatele.

    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"
    

    Zkontrolujte výstup. Příklad:

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. Zkopírujte podrobnosti výstupu. Nezapomeňte uložit hodnoty pro appId, passworda Tenant.

    Výstup se mapuje na následující parametry. Tyto parametry použijete v pozdějších krocích s příkazy automatizace.

    Název vstupu parametru Název výstupu
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. Volitelně můžete instančnímu objektu přiřadit roli Správce uživatelských přístupů.

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

Důležité

Pokud k instančnímu objektu nepřiřazujete roli Správce uživatelských přístupů, nemůžete přiřadit oprávnění pomocí architektury automation.

Kontroly před testovacími verzemi

K provedení předběžných kontrol můžete použít následující skript. Skript provede následující kontroly a testy:

  • Zkontroluje, jestli má instanční objekt správná oprávnění k vytváření prostředků v předplatném.
  • Zkontroluje, jestli má instanční objekt oprávnění správce přístupu uživatele.
  • Vytvořte virtuální síť Azure.
  • Vytvořte službu Azure Virtual Key Vault s privátním koncovým bodem.
  • Vytvořte sdílenou složku Azure Files NSF.
  • Vytvořte virtuální počítač Azure s datovým diskem pomocí Premium Storage v2.
  • Pomocí nasazeného virtuálního počítače zkontrolujte přístup k požadovaným adresám URL.

$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
}

Použití architektury SAP Deployment Automation Framework z Azure DevOps Services

Použití Azure DevOps zjednodušuje proces nasazení. Azure DevOps poskytuje kanály, které můžete spustit pro nasazení infrastruktury a aktivity konfigurace a instalace SAP.

Azure Repos můžete použít k ukládání konfiguračních souborů. Azure Pipelines poskytuje kanály, které je možné použít k nasazení a konfiguraci infrastruktury a aplikace SAP.

Registrace ke službě Azure DevOps Services

Pokud chcete používat Azure DevOps Services, potřebujete organizaci Azure DevOps. Organizace se používá k propojení skupin souvisejících projektů. Pomocí pracovního nebo školního účtu můžete automaticky připojit vaši organizaci k vašemu ID Microsoft Entra. Pokud chcete vytvořit účet, otevřete Azure DevOps a přihlaste se nebo vytvořte nový účet.

Vytvoření prostředí SAP Deployment Automation Framework pomocí Azure DevOps

Pomocí následujícího skriptu můžete provést základní instalaci služby Azure DevOps Services pro architekturu SAP Deployment Automation Framework.

Otevřete prostředí PowerShell ISE a zkopírujte následující skript a aktualizujte parametry tak, aby odpovídaly vašemu prostředí.

    $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

Spusťte skript a postupujte podle pokynů. Skript otevře okna prohlížeče pro ověřování a pro provádění úkolů v projektu Azure DevOps.

Můžete zvolit, jestli chcete kód spustit přímo z GitHubu, nebo můžete importovat kopii kódu do projektu Azure DevOps.

Pokud chcete ověřit, že byl projekt vytvořen, přejděte na portál Azure DevOps a vyberte projekt. Ujistěte se, že se úložiště naplnilo a že se kanály vytvořily.

Důležité

Na místní pracovní stanici spusťte následující kroky. Spuštěním příkazu se také ujistěte, že máte nainstalované nejnovější Rozhraní příkazového az upgrade řádku Azure.

Další informace o konfiguraci Azure DevOps pro architekturu SAP Deployment Automation Framework najdete v tématu Konfigurace Azure DevOps pro architekturu SAP Deployment Automation Framework.

Vytvoření prostředí SAP Deployment Automation Framework bez Azure DevOps

Rozhraní SAP Deployment Automation Framework můžete spustit z virtuálního počítače v Azure. Následující kroky popisují, jak vytvořit prostředí.

Důležité

Ujistěte se, že virtuální počítač k vytváření prostředků používá identitu přiřazenou systémem nebo přiřazenou uživatelem s oprávněními k předplatnému.

Ujistěte se, že má virtuální počítač nainstalované následující požadavky:

  • git
  • jq
  • rozepnout
  • virtualenv (pokud běží na Ubuntu)

Požadavky můžete nainstalovat na virtuální počítač s Ubuntu pomocí následujícího příkazu:

sudo apt-get install -y git jq unzip virtualenv

Komponenty nasazovacího modulu pak můžete nainstalovat pomocí následujících příkazů:


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

Ukázky

Složka ~/Azure_SAP_Automated_Deployment/samples obsahuje sadu ukázkových konfiguračních souborů pro zahájení testování architektury automatizace nasazení. Můžete je zkopírovat pomocí následujících příkazů:

cd ~/Azure_SAP_Automated_Deployment

cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment

Další krok