توزيع وحدة التحكم

يتكون نشر وحدة التحكم ل SAP Deployment Automation Framework من:

  • الموزع Deployer
  • مكتبة SAP

Diagram that shows the control plane.

تحضير أوراق اعتماد التوزيع

يستخدم SAP Deployment Automation Framework أساسيات الخدمة للتوزيع. لإنشاء كيان خدمة لنشر وحدة التحكم، استخدم حسابا لديه أذونات لإنشاء كيانات الخدمة:

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"
  

هام

يجب أن يكون اسم كيان الخدمة فريدا.

سجل قيم الإخراج من الأمر :

  • appId
  • كلمة المرور
  • tenant

اختياريا، قم بتعيين الأذونات التالية إلى كيان الخدمة:

az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>

إذا كنت تريد توفير دور المستخدم Access مسؤول istrator المحدد لمجموعة الموارد فقط، فاستخدم الأمر التالي:


az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>

توزيع وحدة التحكم

توجد جميع البيانات الاصطناعية المطلوبة لنشر وحدة التحكم في مستودعات GitHub.

استعد لنشر وحدة التحكم عن طريق استنساخ المستودعات باستخدام الأوامر التالية:

mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_

git clone https://github.com/Azure/sap-automation.git sap-automation

git clone https://github.com/Azure/sap-automation-samples.git samples

يوجد نموذج ملف MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars تكوين التوزيع في ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE المجلد .

يوجد نموذج ملف MGMT-WEEU-SAP_LIBRARY.tfvars تكوين مكتبة SAP في ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY المجلد .

يمكنك نسخ نماذج ملفات التكوين لبدء اختبار إطار عمل أتمتة التوزيع.

قد يبدو الحد الأدنى من ملف Terraform ل DEPLOYER مثل هذا المثال:

# The environment value is a mandatory field, it is used for partitioning the environments.
environment = "MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"

# management_network_address_space is the address space for management virtual network
management_network_address_space = "10.10.20.0/25"
# management_subnet_address_prefix is the address prefix for the management subnet
management_subnet_address_prefix = "10.10.20.64/28"

# management_firewall_subnet_address_prefix is the address prefix for the firewall subnet
management_firewall_subnet_address_prefix = "10.10.20.0/26"
firewall_deployment = false

# management_bastion_subnet_address_prefix is the address prefix for the bastion subnet
management_bastion_subnet_address_prefix = "10.10.20.128/26"
bastion_deployment = true

# deployer_enable_public_ip controls if the deployer Virtual machines will have Public IPs
deployer_enable_public_ip = false

# deployer_count defines how many deployer VMs will be deployed
deployer_count = 1

# use_service_endpoint defines that the management subnets have service endpoints enabled
use_service_endpoint = true

# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = false

# enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
enable_firewall_for_keyvaults_and_storage = false

# public_network_access_enabled controls if storage account and key vaults have public network access enabled
public_network_access_enabled = true

لاحظ مواقع الملفات المتغيرة Terraform لعمليات التحرير المستقبلية أثناء التوزيع.

قد يبدو الحد الأدنى من ملف Terraform ل LIBRARY مثل هذا المثال:

# The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
environment = "MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"

#Defines the DNS suffix for the resources
dns_label = "azure.contoso.net"

# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = false

لاحظ مواقع الملفات المتغيرة Terraform لعمليات التحرير المستقبلية أثناء التوزيع.

قم بتشغيل الأمر التالي لإنشاء الموزع ومكتبة SAP. يضيف الأمر تفاصيل كيان الخدمة إلى مخزن مفاتيح النشر.

تعيين متغيرات البيئة لمدير الخدمة:


export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export       ARM_CLIENT_ID="<appId>"
export   ARM_CLIENT_SECRET="<password>"
export       ARM_TENANT_ID="<tenantId>"

تشغيل الأمر التالي لتوزيع وحدة التحكم:


export            env_code="MGMT"
export         region_code="WEEU"
export           vnet_code="DEP00"

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

az logout
az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"

cd ~/Azure_SAP_Automated_Deployment/WORKSPACES


deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"

${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
    --deployer_parameter_file "${deployer_parameter_file}"         \
    --library_parameter_file "${library_parameter_file}"            \
    --subscription "${ARM_SUBSCRIPTION_ID}"                        \
    --spn_id "${ARM_CLIENT_ID}"                                    \
    --spn_secret "${ARM_CLIENT_SECRET}"                            \
    --tenant_id "${ARM_TENANT_ID}"

تكوين جهاز ظاهري يدويا كموزع SDAF باستخدام Azure Bastion

للاتصال بالموزع:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى مجموعة الموارد التي تحتوي على الجهاز الظاهري للموزع (VM).

  3. الاتصال إلى الجهاز الظاهري باستخدام Azure Bastion.

  4. اسم المستخدم الافتراضي هو azureadm.

  5. حدد SSH Private Key من Azure Key Vault.

  6. حدد الاشتراك الذي يحتوي على مستوى التحكم.

  7. حدد مخزن مفاتيح التوزيع.

  8. من قائمة الأسرار، اختر السر الذي ينتهي ب -sshkey.

  9. الاتصال بالجهاز الظاهري.

قم بتشغيل البرنامج النصي التالي لتكوين الموزع:


mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_

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

يقوم البرنامج النصي بتثبيت Terraform و Ansible وتكوين الموزع.

تكوين جهاز ظاهري يدويا كموزع SDAF

الاتصال إلى الجهاز الظاهري للموزع من كمبيوتر يمكنه الوصول إلى شبكة Azure الظاهرية.

للاتصال بالموزع:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. حدد أو ابحث عن خزانات المفاتيح.

  3. في صفحة خزنة المفاتيح، ابحث عن خزنة مفاتيح التوزيع. يبدأ الاسم بـ MGMT[REGION]DEP00user. قم بالتصفية حسب مجموعة الموارد أو الموقع، إذا لزم الأمر.

  4. في قسم الإعدادات في الجزء الأيمن، حدد Secrets.

  5. ابحث عن السر الذي يحتوي على مفتاح sshkey وحدده. قد يبدو مثل MGMT-[REGION]-DEP00-sshkey.

  6. في صفحة البيانات السرية، حدد الإصدار الحالي. ثم انسخ القيمة Secret.

  7. افتح محرر نص عادي. انسخ القيمة السرية.

  8. احفظ الملف حيث تحتفظ بمفاتيح SSH. مثال على ذلك C:\Users\<your-username>\.ssh .

  9. احفظ الملف. إذا طُلب منك حفظ كنوع، فحدد All files إذا لم يكن SSH خياراً. على سبيل المثال، استخدم deployer.ssh.

  10. الاتصال إلى الجهاز الظاهري للموزع من خلال أي عميل SSH، مثل Visual Studio Code. استخدم عنوان IP الخاص للموزع ومفتاح SSH الذي قمت بتنزيله. للحصول على إرشادات حول كيفية الاتصال بالموزع باستخدام Visual Studio Code، راجع الاتصال إلى الموزع باستخدام Visual Studio Code. إذا كنت تستخدم PuTTY، فحول ملف مفتاح SSH أولا باستخدام PuTTYGen.

إشعار

اسم المستخدم الافتراضي هو azureadm.

تكوين الموزع باستخدام البرنامج النصي التالي:

mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_

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

يقوم البرنامج النصي بتثبيت Terraform و Ansible وتكوين الموزع.

تأمين وحدة التحكم

وحدة التحكم هي الجزء الأكثر أهمية من إطار عمل أتمتة SAP. من المهم تأمين وحدة التحكم. تساعدك الخطوات التالية على تأمين وحدة التحكم. إذا قمت بإنشاء وحدة التحكم الخاصة بك باستخدام جهاز ظاهري خارجي أو باستخدام cloud shell، يجب عليك تأمين مستوى التحكم عن طريق تنفيذ نقاط النهاية الخاصة لحسابات التخزين وخزائن المفاتيح.

يمكنك استخدام sync_deployer.sh البرنامج النصي لنسخ ملفات تكوين وحدة التحكم إلى الجهاز الظاهري للموزع. سجل الدخول إلى الجهاز الظاهري للموزع وقم بتشغيل الأوامر التالية:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

تأكد من use_private_endpoint تعيين المتغير إلى true في DEPLOYER ملفات التكوين و LIBRARY . تأكد أيضا من public_network_access_enabled تعيين إلى false في DEPLOYER ملفات التكوين.


# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = true

# public_network_access_enabled controls if storage account and key vaults have public network access enabled
public_network_access_enabled = false

أعد تشغيل نشر وحدة التحكم لتمكين نقاط النهاية الخاصة لحسابات التخزين وخزائن المفاتيح.



export            env_code="MGMT"
export         region_code="WEEU"
export           vnet_code="DEP00"
export  storageaccountname=<storageaccountname>

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

az logout
az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"

cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"

${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
    --deployer_parameter_file "${deployer_parameter_file}"         \
    --library_parameter_file "${library_parameter_file}"            \
    --subscription "${ARM_SUBSCRIPTION_ID}"                        \
    --spn_id "${ARM_CLIENT_ID}"                                    \
    --spn_secret "${ARM_CLIENT_SECRET}"                            \
    --tenant_id "${ARM_TENANT_ID}"                                 \
    --storageaccountname "${storageaccountname}"                   \
    --recover

إعداد تطبيق الويب

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

echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json

region_code=WEEU

export TF_VAR_app_registration_app_id=$(az ad app create \
    --display-name ${region_code}-webapp-registration \
    --enable-id-token-issuance true \
    --sign-in-audience AzureADMyOrg \
    --required-resource-access @manifest.json \
    --query "appId" | tr -d '"')

export TF_VAR_webapp_client_secret=$(az ad app credential reset \
    --id $TF_VAR_app_registration_app_id --append               \
    --query "password" | tr -d '"')

export TF_VAR_use_webapp=true
rm manifest.json

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