Kom igång med SAP Deployment Automation Framework
Kom igång snabbt med SAP Deployment Automation Framework.
Förutsättningar
För att komma igång med SAP Deployment Automation Framework behöver du:
- En Azure-prenumeration Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
- Ett SAP-användarkonto med behörighet att ladda ned SAP-programvaran i din Azure-miljö. Mer information om S-User finns i SAP S-User.
- En Azure CLI-installation .
- En användartilldelad identitet (MS) eller ett huvudnamn för tjänsten som ska användas för distributionen av kontrollplanet.
- En användartilldelad identitet (MS) eller ett huvudnamn för tjänsten som ska användas för distributionen av arbetsbelastningszonen.
- En möjlighet att skapa ett Azure DevOps-projekt om du vill använda Azure DevOps för distribution.
Vissa av förhandskraven kanske redan är installerade i distributionsmiljön. Både Azure Cloud Shell och distribueraren levereras med Terraform och Azure CLI installerat.
Skapa en användartilldelad identitet
Sap Automation-distributionsramverket kan också använda en användartilldelad identitet (MSI) för distributionen. Se till att använda ett konto med behörighet att skapa hanterade identiteter när du kör skriptet som skapar identiteten.
Skapa den hanterade identiteten.
export ARM_SUBSCRIPTION_ID="<subscriptionId>" export control_plane_env_code="LAB" az identity create --name ${control_plane_env_code}-Deployment-Identity --resource-group <ExistingResourceGroup>
Granska utdata. Till exempel:
{ "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" }
Kopiera utdatainformationen.
Utdata mappar till följande parametrar. Du använder dessa parametrar i senare steg med automationskommandon.
Parameterindatanamn Utdatanamn app_id
appId
msi_id
armId
msi_objectid
objectId
Tilldela rollen Deltagare till identiteten.
export appId="<appId>" az role assignment create --assignee $msi_objectid --role "Contributor" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Du kan också tilldela rollen Administratör för användaråtkomst till identiteten.
export appId="<appId>" az role assignment create --assignee $msi_objectid --role "User Access Administrator" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Viktigt!
Om du inte tilldelar rollen Administratör för användaråtkomst till den hanterade identiteten kan du inte tilldela behörigheter med hjälp av automationsramverket.
Skapa en programregistrering för webbprogrammet
Sap Automation-distributionsramverket kan använda en Azure App Service för att konfigurera tfvars-parameterfilerna.
Skapa programregistreringen.
$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"
Skapa ett huvudnamn för tjänsten
Sap Automation-distributionsramverket kan använda tjänstens huvudnamn för distribution.
När du väljer ett namn för tjänstens huvudnamn kontrollerar du att namnet är unikt i din Azure-klientorganisation. Se till att använda ett konto med behörigheter för att skapa tjänstens huvudnamn när du kör skriptet.
Skapa tjänstens huvudnamn med deltagarbehörigheter.
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"
Granska utdata. Till exempel:
{ "appId": "<AppId>", "displayName": "<environment>-Deployment-Account ", "name": "<AppId>", "password": "<AppSecret>", "tenant": "<TenantId>" }
Kopiera utdatainformationen. Spara värdena för
appId
,password
ochTenant
.Utdata mappar till följande parametrar. Du använder dessa parametrar i senare steg med automationskommandon.
Parameterindatanamn Utdatanamn spn_id
appId
spn_secret
password
tenant_id
tenant
Du kan också tilldela rollen Administratör för användaråtkomst till tjänstens huvudnamn.
export appId="<appId>" az role assignment create --assignee $appId --role "User Access Administrator" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Viktigt!
Om du inte tilldelar rollen Administratör för användaråtkomst till tjänstens huvudnamn kan du inte tilldela behörigheter med hjälp av automationsramverket.
Förhandskontroller
Du kan använda följande skript för att utföra kontroller före flygning. Skriptet utför följande kontroller och tester:
- Kontrollerar om tjänstens huvudnamn har rätt behörighet att skapa resurser i prenumerationen.
- Kontrollerar om tjänstens huvudnamn har behörighet som administratör för användaråtkomst.
- Skapa ett virtuellt Azure-nätverk.
- Skapa ett virtuellt Azure-nyckelvalv med en privat slutpunkt.
- Skapa en Azure Files NSF-resurs.
- Skapa en virtuell Azure-dator med datadisk med Premium Storage v2.
- Kontrollera åtkomsten till de url:er som krävs med hjälp av den distribuerade virtuella datorn.
$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
}
Använda SAP Deployment Automation Framework från Azure DevOps Services
Användning av Azure DevOps effektiviserar distributionsprocessen. Azure DevOps tillhandahåller pipelines som du kan köra för att utföra infrastrukturdistributionen och konfigurations- och SAP-installationsaktiviteterna.
Du kan använda Azure Repos för att lagra dina konfigurationsfiler. Azure Pipelines tillhandahåller pipelines som kan användas för att distribuera och konfigurera infrastrukturen och SAP-programmet.
Registrera dig för Azure DevOps Services
Om du vill använda Azure DevOps Services behöver du en Azure DevOps-organisation. En organisation används för att ansluta grupper av relaterade projekt. Använd ditt arbets- eller skolkonto för att automatiskt ansluta din organisation till ditt Microsoft Entra-ID. Om du vill skapa ett konto öppnar du Azure DevOps och loggar in eller skapar ett nytt konto.
Skapa SAP Deployment Automation Framework-miljön med Azure DevOps
Du kan använda följande skript för att utföra en grundläggande installation av Azure DevOps Services för SAP Deployment Automation Framework.
Öppna PowerShell ISE och kopiera följande skript och uppdatera parametrarna så att de matchar din miljö.
$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
Kör skriptet och följ anvisningarna. Skriptet öppnar webbläsarfönster för autentisering och för att utföra uppgifter i Azure DevOps-projektet.
Du kan välja att antingen köra koden direkt från GitHub eller importera en kopia av koden till ditt Azure DevOps-projekt.
Bekräfta att projektet har skapats genom att gå till Azure DevOps-portalen och välja projektet. Kontrollera att lagringsplatsen har fyllts i och att pipelines har skapats.
Viktigt!
Kör följande steg på din lokala arbetsstation. Se också till att du har den senaste Azure CLI installerad genom att az upgrade
köra kommandot.
Mer information om hur du konfigurerar Azure DevOps för SAP Deployment Automation Framework finns i Konfigurera Azure DevOps för SAP Deployment Automation Framework.
Skapa SAP Deployment Automation Framework-miljön utan Azure DevOps
Du kan köra SAP Deployment Automation Framework från en virtuell dator i Azure. Följande steg beskriver hur du skapar miljön.
Viktigt!
Kontrollera att den virtuella datorn använder antingen en systemtilldelad eller användartilldelad identitet med behörighet för prenumerationen för att skapa resurser.
Kontrollera att den virtuella datorn har följande förutsättningar installerade:
- git
- jq
- Packa upp
- virtualenv (om det körs på Ubuntu)
Du kan installera kraven på en virtuell Ubuntu-dator med hjälp av följande kommando:
sudo apt-get install -y git jq unzip virtualenv
Du kan sedan installera distributionskomponenterna med hjälp av följande kommandon:
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
Exempel
Mappen ~/Azure_SAP_Automated_Deployment/samples
innehåller en uppsättning exempelkonfigurationsfiler för att börja testa ramverket för distributionsautomatisering. Du kan kopiera dem med hjälp av följande kommandon:
cd ~/Azure_SAP_Automated_Deployment
cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment