بدء استخدام SAP Deployment Automation Framework

ابدأ بسرعة باستخدام SAP Deployment Automation Framework.

المتطلبات الأساسية

لبدء استخدام SAP Deployment Automation Framework، تحتاج إلى:

  • اشتراك Azure. إذا لم يكن لديك اشتراك Azure، يمكنك إنشاء حساب مجاني.
  • حساب مستخدم SAP مع أذونات لتنزيل برنامج SAP في بيئة Azure. لمزيد من المعلومات حول S-User، راجع SAP S-User.
  • تثبيت Azure CLI.
  • هوية معينة من قبل المستخدم (MS) أو كيان خدمة لاستخدامها لنشر وحدة التحكم.
  • هوية معينة من قبل المستخدم (MS) أو كيان خدمة لاستخدامها لنشر منطقة حمل العمل.
  • القدرة على إنشاء مشروع Azure DevOps إذا كنت تريد استخدام Azure DevOps للنشر.

قد تكون بعض المتطلبات الأساسية مثبتة بالفعل في بيئة النشر الخاصة بك. يأتي كل من Azure Cloud Shell والموزع مع تثبيت Terraform وAzure CLI.

إنشاء هوية معينة من قبل المستخدم

يمكن أيضا لإطار عمل توزيع أتمتة SAP استخدام هوية معينة من قبل المستخدم (MSI) للنشر. تأكد من استخدام حساب مع أذونات لإنشاء هويات مدارة عند تشغيل البرنامج النصي الذي ينشئ الهوية.

  1. إنشاء الهوية المدارة.

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

    راجع الإخراج. على سبيل المثال:

       {
         "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. انسخ تفاصيل الإخراج.

    يتم تعيين الإخراج إلى المعلمات التالية. يمكنك استخدام هذه المعلمات في خطوات لاحقة، مع أوامر التشغيل الآلي.

    اسم إدخال المعلمة اسم الإخراج
    app_id appId
    msi_id armId
    msi_objectid objectId
  3. تعيين دور المساهم إلى الهوية.

    export appId="<appId>"
    
    az role assignment create --assignee $msi_objectid  --role "Contributor"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    
  4. اختياريا، قم بتعيين دور مسؤول وصول المستخدم إلى الهوية.

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

هام

إذا لم تقم بتعيين دور مسؤول وصول المستخدم إلى الهوية المدارة، فلا يمكنك تعيين أذونات باستخدام إطار عمل التنفيذ التلقائي.

إنشاء تسجيل تطبيق لتطبيق الويب

يمكن لإطار عمل توزيع أتمتة SAP الاستفادة من Azure App Service لتكوين ملفات معلمات tfvars.

  1. إنشاء تسجيل التطبيق.

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

إنشاء كيان خدمة

يمكن لإطار عمل توزيع أتمتة SAP استخدام أساسيات الخدمة للتوزيع.

عند اختيار اسم لكيان الخدمة، تأكد من أن الاسم فريد داخل مستأجر Azure. تأكد من استخدام حساب مع أذونات إنشاء كيانات الخدمة عند تشغيل البرنامج النصي.

  1. إنشاء كيان الخدمة مع أذونات المساهم.

    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"
    

    راجع الإخراج. على سبيل المثال:

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. انسخ تفاصيل الإخراج. تأكد من حفظ قيم و appIdpasswordو.Tenant

    يتم تعيين الإخراج إلى المعلمات التالية. يمكنك استخدام هذه المعلمات في خطوات لاحقة، مع أوامر التشغيل الآلي.

    اسم إدخال المعلمة اسم الإخراج
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. اختياريا، قم بتعيين دور مسؤول وصول المستخدم إلى كيان الخدمة.

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

هام

إذا لم تقم بتعيين دور مسؤول وصول المستخدم إلى كيان الخدمة، فلا يمكنك تعيين أذونات باستخدام إطار عمل التنفيذ التلقائي.

فحوصات ما قبل الرحلة

يمكنك استخدام البرنامج النصي التالي لإجراء فحوصات ما قبل الرحلة. يقوم البرنامج النصي بإجراء الفحوصات والاختبارات التالية:

  • التحقق من أن كيان الخدمة لديه الأذونات الصحيحة لإنشاء موارد في الاشتراك.
  • التحقق من أن كيان الخدمة لديه أذونات مسؤول الوصول للمستخدم.
  • إنشاء شبكة Azure الظاهرية.
  • إنشاء Azure Virtual Key Vault مع نقطة نهاية خاصة.
  • إنشاء مشاركة Azure Files NSF.
  • إنشاء جهاز Azure ظاهري مع قرص بيانات باستخدام Premium Storage v2.
  • تحقق من الوصول إلى عناوين 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
}

استخدام إطار تنفيذ تلقائي لنشر SAP من خدمات Azure DevOps

يؤدي استخدام Azure DevOps إلى تبسيط عملية النشر. يوفر Azure DevOps البنية الأساسية لبرنامج ربط العمليات التجارية التي يمكنك تشغيلها لتنفيذ نشر البنية الأساسية وأنشطة تثبيت التكوين وSAP.

يمكنك استخدام Azure Repos لتخزين ملفات التكوين الخاصة بك. توفر البنية الأساسية لبرنامج ربط العمليات التجارية Azure البنية الأساسية لبرنامج ربط العمليات التجارية، والتي يمكن استخدامها لنشر وتكوين البنية الأساسية وتطبيق SAP.

الاشتراك في خدمات Azure DevOps

لاستخدام خدمات Azure DevOps، تحتاج إلى مؤسسة Azure DevOps. وتُستخدم المنظمة لربط مجموعات من المشاريع ذات الصلة. استخدم حساب العمل أو المؤسسة التعليمية لتوصيل مؤسستك تلقائيا بمعرف Microsoft Entra. لإنشاء حساب، افتح Azure DevOps وقم إما بتسجيل الدخول أو إنشاء حساب جديد.

إنشاء بيئة إطار عمل أتمتة توزيع SAP باستخدام Azure DevOps

يمكنك استخدام البرنامج النصي التالي لإجراء تثبيت أساسي لخدمات Azure DevOps لإطار عمل أتمتة توزيع SAP.

افتح PowerShell ISE وانسخ البرنامج النصي التالي وقم بتحديث المعلمات لمطابقة بيئتك.

    $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

قم بتشغيل البرنامج النصي واتبع الإرشادات. يفتح البرنامج النصي نوافذ المستعرض للمصادقة وتنفيذ المهام في مشروع Azure DevOps.

يمكنك اختيار إما تشغيل التعليمات البرمجية مباشرة من GitHub أو يمكنك استيراد نسخة من التعليمات البرمجية إلى مشروع Azure DevOps الخاص بك.

للتأكد من إنشاء المشروع، انتقل إلى مدخل Azure DevOps وحدد المشروع. تأكد من ملء المستودع وإنشاء التدفقات.

هام

قم بتشغيل الخطوات التالية على محطة العمل المحلية. تأكد أيضا من تثبيت أحدث Azure CLI عن طريق تشغيل az upgrade الأمر .

لمزيد من المعلومات حول كيفية تكوين Azure DevOps لإطار عمل أتمتة نشر SAP، راجع تكوين Azure DevOps لإطار عمل أتمتة نشر SAP.

إنشاء بيئة إطار عمل أتمتة توزيع SAP دون Azure DevOps

يمكنك تشغيل SAP Deployment Automation Framework من جهاز ظاهري في Azure. تصف الخطوات التالية كيفية إنشاء البيئة.

هام

تأكد من أن الجهاز الظاهري يستخدم هوية معينة من قبل النظام أو معينة من قبل المستخدم مع أذونات على الاشتراك لإنشاء الموارد.

تأكد من تثبيت المتطلبات الأساسية التالية للجهاز الظاهري:

  • git
  • jq
  • فك
  • virtualenv (إذا كان يعمل على Ubuntu)

يمكنك تثبيت المتطلبات الأساسية على جهاز Ubuntu الظاهري باستخدام الأمر التالي:

sudo apt-get install -y git jq unzip virtualenv

يمكنك بعد ذلك تثبيت مكونات التوزيع باستخدام الأوامر التالية:


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

العينات

~/Azure_SAP_Automated_Deployment/samples يحتوي المجلد على مجموعة من ملفات التكوين النموذجية لبدء اختبار إطار عمل أتمتة التوزيع. يمكنك نسخها باستخدام الأوامر التالية:

cd ~/Azure_SAP_Automated_Deployment

cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment

الخطوة التالية