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ść.
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" }
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
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
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.
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.
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>" }
Skopiuj szczegóły danych wyjściowych. Pamiętaj, aby zapisać wartości dla
appId
,password
iTenant
.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
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