SAP Deployment Automation Framework ile çalışmaya başlama
SAP Deployment Automation Framework ile hızlı bir şekilde çalışmaya başlayın.
Önkoşullar
SAP Deployment Automation Framework ile çalışmaya başlamak için şunları yapmanız gerekir:
- Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturabilirsiniz.
- Sap yazılımını Azure ortamınıza indirme izinlerine sahip bir SAP Kullanıcı hesabı. S-User hakkında daha fazla bilgi için bkz . SAP S-User.
- Azure CLI yüklemesi.
- Denetim düzlemi dağıtımı için kullanılacak kullanıcı Tarafından Atanan Kimlik (MS) veya hizmet sorumlusu.
- İş yükü bölgesi dağıtımı için kullanılacak kullanıcı Tarafından Atanan Kimlik (MS) veya hizmet sorumlusu.
- Dağıtım için Azure DevOps kullanmak istiyorsanız Azure DevOps projesi oluşturma olanağı.
Önkoşullardan bazıları dağıtım ortamınıza zaten yüklenmiş olabilir. Hem Azure Cloud Shell hem de dağıtıcı Terraform ve Azure CLI yüklü olarak gelir.
Kullanıcı tarafından atanan kimlik oluşturma
SAP otomasyonu dağıtım çerçevesi, dağıtım için kullanıcı tarafından atanan kimliği (MSI) de kullanabilir. Kimliği oluşturan betiği çalıştırırken yönetilen kimlikler oluşturmak için izinlere sahip bir hesap kullandığınızdan emin olun.
Yönetilen kimliği oluşturun.
export ARM_SUBSCRIPTION_ID="<subscriptionId>" export control_plane_env_code="LAB" az identity create --name ${control_plane_env_code}-Deployment-Identity --resource-group <ExistingResourceGroup>
Çıktıyı gözden geçirin. Örneğin:
{ "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" }
Çıkış ayrıntılarını kopyalayın.
Çıkış aşağıdaki parametrelerle eşler. Bu parametreleri otomasyon komutlarıyla sonraki adımlarda kullanacaksınız.
Parametre giriş adı Çıkış adı app_id
appId
msi_id
armId
msi_objectid
objectId
Kimliğe Katkıda Bulunan rolünü atayın.
export appId="<appId>" az role assignment create --assignee $msi_objectid --role "Contributor" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
İsteğe bağlı olarak, kimliğe Kullanıcı Erişimi Yöneticisi rolünü atayın.
export appId="<appId>" az role assignment create --assignee $msi_objectid --role "User Access Administrator" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Önemli
Yönetilen kimliğe Kullanıcı Erişim Yöneticisi rolünü atamazsanız, otomasyon çerçevesini kullanarak izin atayamazsınız.
Web uygulaması için uygulama kaydı oluşturma
SAP otomasyonu dağıtım çerçevesi, tfvars parametre dosyalarını yapılandırmak için bir Azure Uygulaması Hizmetinden yararlanabilir.
Uygulama kaydını oluşturun.
$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"
Hizmet sorumlusu oluşturma
SAP otomasyonu dağıtım çerçevesi, dağıtım için hizmet sorumlularını kullanabilir.
Hizmet sorumlunuz için bir ad seçtiğinizde, adın Azure kiracınızda benzersiz olduğundan emin olun. Betiği çalıştırırken hizmet sorumluları oluşturma izinlerine sahip bir hesap kullandığınızdan emin olun.
Katkıda Bulunan izinleriyle hizmet sorumlusunu oluşturun.
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"
Çıktıyı gözden geçirin. Örneğin:
{ "appId": "<AppId>", "displayName": "<environment>-Deployment-Account ", "name": "<AppId>", "password": "<AppSecret>", "tenant": "<TenantId>" }
Çıkış ayrıntılarını kopyalayın. ,
password
veTenant
değerleriniappId
kaydettiğinizden emin olun.Çıkış aşağıdaki parametrelerle eşler. Bu parametreleri otomasyon komutlarıyla sonraki adımlarda kullanacaksınız.
Parametre giriş adı Çıkış adı spn_id
appId
spn_secret
password
tenant_id
tenant
İsteğe bağlı olarak, Hizmet sorumlusuna Kullanıcı Erişimi Yöneticisi rolünü atayın.
export appId="<appId>" az role assignment create --assignee $appId --role "User Access Administrator" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Önemli
Hizmet sorumlusuna Kullanıcı Erişim Yöneticisi rolünü atamazsanız, otomasyon çerçevesini kullanarak izin atayamazsınız.
Uçuş öncesi denetimler
Uçuş öncesi denetimleri gerçekleştirmek için aşağıdaki betiği kullanabilirsiniz. Betik aşağıdaki denetimleri ve testleri gerçekleştirir:
- Hizmet sorumlusunun abonelikte kaynak oluşturmak için doğru izinlere sahip olup olmadığını denetler.
- Hizmet sorumlusunun kullanıcı Erişim Yöneticisi izinlerine sahip olup olmadığını denetler.
- Azure Sanal Ağ oluşturma.
- Özel uç noktası olan bir Azure Sanal Anahtar Kasası oluşturun.
- Azure Dosyalar NSF paylaşımı oluşturun.
- Premium Depolama v2 kullanarak veri diski ile bir Azure Sanal Makinesi oluşturun.
- Dağıtılan sanal makineyi kullanarak gerekli URL'lere erişimi denetleyin.
$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
}
Azure DevOps Services'dan SAP Deployment Automation Framework kullanma
Azure DevOps'un kullanılması dağıtım işlemini kolaylaştırır. Azure DevOps, altyapı dağıtımını ve yapılandırma ile SAP yükleme etkinliklerini gerçekleştirmek için çalıştırabileceğiniz işlem hatları sağlar.
Yapılandırma dosyalarınızı depolamak için Azure Repos'ı kullanabilirsiniz. Azure Pipelines, altyapıyı ve SAP uygulamasını dağıtmak ve yapılandırmak için kullanılabilen işlem hatları sağlar.
Azure DevOps Services'a kaydolma
Azure DevOps Services'i kullanmak için bir Azure DevOps kuruluşuna ihtiyacınız vardır. Bir kuruluş, ilgili proje gruplarını bağlamak için kullanılır. Kuruluşunuzu Microsoft Entra Id'nize otomatik olarak bağlamak için iş veya okul hesabınızı kullanın. Hesap oluşturmak için Azure DevOps'u açın ve oturum açın veya yeni bir hesap oluşturun.
Azure DevOps ile SAP Deployment Automation Framework ortamı oluşturma
SAP Deployment Automation Framework için Azure DevOps Services'ın temel yüklemesini yapmak için aşağıdaki betiği kullanabilirsiniz.
PowerShell ISE'yi açın ve aşağıdaki betiği kopyalayın ve parametreleri ortamınızla eşleşecek şekilde güncelleştirin.
$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
Betiği çalıştırın ve yönergeleri izleyin. Betik, kimlik doğrulaması ve Azure DevOps projesinde görevleri gerçekleştirmek için tarayıcı pencerelerini açar.
Kodu doğrudan GitHub'dan çalıştırmayı seçebilir veya kodun bir kopyasını Azure DevOps projenize aktarabilirsiniz.
Projenin oluşturulduğunu onaylamak için Azure DevOps portalına gidin ve projeyi seçin. Deponun dolduruldığından ve işlem hatlarının oluşturulduğundan emin olun.
Önemli
Yerel iş istasyonunuzda aşağıdaki adımları çalıştırın. Ayrıca komutunu çalıştırarak en son Azure CLI'yi yüklediğinizden az upgrade
emin olun.
SAP Deployment Automation Framework için Azure DevOps yapılandırma hakkında daha fazla bilgi için bkz . SAP Deployment Automation Framework için Azure DevOps'yi yapılandırma.
Azure DevOps olmadan SAP Deployment Automation Framework ortamı oluşturma
SAP Deployment Automation Framework'u Azure'daki bir sanal makineden çalıştırabilirsiniz. Aşağıdaki adımlarda ortamın nasıl oluşturulacağı açıklanmaktadır.
Önemli
Sanal makinenin kaynak oluşturmak için abonelikte izinleri olan sistem tarafından atanan veya kullanıcı tarafından atanan bir kimlik kullandığından emin olun.
Sanal makinede aşağıdaki önkoşulların yüklü olduğundan emin olun:
- git
- jq
- Unzip
- virtualenv (Ubuntu üzerinde çalışıyorsa)
Aşağıdaki komutu kullanarak bir Ubuntu sanal makinesine önkoşulları yükleyebilirsiniz:
sudo apt-get install -y git jq unzip virtualenv
Ardından aşağıdaki komutları kullanarak dağıtıcı bileşenlerini yükleyebilirsiniz:
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
Örnekler
klasör, ~/Azure_SAP_Automated_Deployment/samples
dağıtım otomasyonu çerçevesini test etmeye başlamak için bir dizi örnek yapılandırma dosyası içerir. Aşağıdaki komutları kullanarak bunları kopyalayabilirsiniz:
cd ~/Azure_SAP_Automated_Deployment
cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment