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.
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" }
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
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
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.
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ů.
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>" }
Zkopírujte podrobnosti výstupu. Nezapomeňte uložit hodnoty pro
appId
,password
aTenant
.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
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