بدء استخدام النشر اليدوي
جنبا إلى جنب مع النشر التلقائي، يمكنك أيضا القيام بالنشر اليدوي ل SAP على Azure Deployment Automation Framework. استخدم هذا المثال التكوين ونماذج ملفات المعلمات للبدء.
تلميح
يغطي هذا الدليل فقط كيفية إجراء نشر يدوي. إذا كنت تريد البدء بسرعة، فراجع دليل النشر التلقائي بدلاً من ذلك.
تشير هذه الخطوات إلى اصطلاح التسمية الافتراضي لإطار التشغيل التلقائي وتستخدمه. تستخدم قيم الأمثلة أيضاً للتسمية في جميع أنحاء التعليمات البرمجية. على سبيل المثال، اسم الموزع هو DEMO-EUS2-DEP00-INFRASTRUCTURE
. في هذا المثال، تكون البيئة عبارة عن عرض توضيحي (DEMO
)، والمنطقة هي East US 2 (EUS2
)، والشبكة الظاهرية للنشر هي DEP00
.
المتطلبات الأساسية
- اشتراك Azure. إذا لم يكن لديك اشتراك في Azure، يمكن إنشاء حساب مجاني.
- حساب Azure يتمتع بامتيازات لإنشاء كيان الخدمة.
- تنزيل برنامج SAP في بيئة Azure لديك.
إعداد الموزع
قبل البدء، تحقق من اشتراكك الصحيح في Azure. بعد ذلك، قم بإعداد الموزع:
- تنزيل Terraform وتثبيته.
- استنساخ وتكوين مستودع إطار عمل الأتمتة على الموزع.
- تهيئة Terraform
- احصل على مفاتيح SSH لاستخدامها في بقية عملية النشر.
تحقق من اشتراك Azure
تحقق من أنك تستخدم اشتراك Azure المناسب:
سجل الدخول إلى مدخل Azure.
تحقق من أنك في الاشتراك الذي تريد استخدامه:
az account list --output=table | grep -i true
إذا لزم الأمر، فقم بتغيير الاشتراك النشط إلى الاشتراك الذي تريد استخدامه.
تنزيل Terraform
قم بتنزيل Terraform على بيئتك:
إنشاء دليل جديد والانتقال إليه،
bin
.mkdir -p ~/bin; cd $_
استرجع ملف Terraform الثنائي المناسب. على سبيل المثال:
wget https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
قم بفك ضغط ملف Terraform الثنائي. على سبيل المثال:
unzip terraform_0.14.7_linux_amd64.zip
تحقق من تنزيل Terraform:
hash terraform
أنشئ دليلاً لنشر SAP التلقائي الخاص بك.
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
إعداد المستودع
استنساخ وتكوين مستودع إطار عمل الأتمتة.
استنساخ المستودع من GitHub:
git clone https://github.com/Azure/sap-automation.git
انتقل إلى مجلد
sap-automation
.cd ~/Azure_SAP_Automated_Deployment/sap-automation
اختيارياً، تحقق من فرع مختلف عن الفرع الرئيسي. الفرع الرئيسي للمستودع هو الافتراضي.
استبدل
<branch>
باسم الفرع أو نفذ التجزئة التي تريد استخدامها.git checkout <branch>
تأكد من أن الفرع الخاص بك في المراجعة المتوقعة.
git rev-parse HEAD
تهيئة Terraform
إنشاء دليل عمل. يجب أن يراعي اسم الدليل اصطلاح التسمية الافتراضي. على سبيل المثال:
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
إنشاء ملف معلمة JSON.
cat <<EOF > DEMO-EUS2-DEP00-INFRASTRUCTURE.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "management": { "name" : "DEP00", "address_space" : "10.0.0.0/25", "subnet_mgmt": { "prefix" : "10.0.0.64/28" }, "subnet_fw": { "prefix" : "10.0.0.0/26" } } } }, "options": { "enable_deployer_public_ip" : true }, "firewall_deployment" : true } EOF
تهيئة Terraform.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
قم بإنشاء خطة تنفيذ Terraform التي تتبع اصطلاح التسمية الافتراضي.
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
قم بتطبيق خطة تنفيذ Terraform لنشر الموارد.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
لاحظ الإخراج.
الحصول على مفاتيح SSH
باستخدام الإخراج من نشر Terraform، لاحظ قيم الحقول التالية.
عنوان IP العام:
deployer_public_ip_address
.اسم مستخدم المخزن الرئيسي:
deployer_kv_user_name
.اسم المخزن الرئيسي الخاص:
deployer_kv_prvt_name
.اسم المفتاح العام:
deployer_public_key_secret_name
.اسم المفتاح الخاص:
deployer_private_key_secret_name
.
تشغيل البرنامج النصي بعد المعالجة.
./post_deployment.sh
استخراج مفتاح SSH الخاص:
az keyvault secret show \ --vault-name DEMOEUS2DEP00userE27 \ --name DEMO-EUS2-DEP00-sshkey | \ jq -r .value > sshkey
استخراج مفتاح SSH العام:
az keyvault secret show \ --vault-name DEMOEUS2DEP00userF6A \ --name DEMO-EUS2-DEP00-sshkey-pub | \ jq -r .value > sshkey.pub
تنزيل زوج المفاتيح الخاصة والعامة. في قائمة Cloud Shell، حدد تحميل/تنزيل الملفات>تنزيل.
تكوين الخدمة الأساسية
يستخدم الموزع مبدأ الخدمة لنشر الموارد في اشتراك.
تسجيل الدخول إلى Azure CLI.
az login
إنشاء كيان الخدمة. تأكد من استبدال
<subscription-id>
بمعرف اشتراك Azure الخاص بك. استبدل<sp-name>
أيضاً باسم كيان الخدمة.az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
لاحظ الإخراج الذي يحتوي على معلومات حول كيان الخدمة. انسخ القيم من الحقول التالية:
معرف التطبيق:
appId
.كلمة المرور:
password
.معرف المستأجر:
tenant
.
إنشاء تعيين دور لكيان الخدمة. تأكد من استبدال
<appId>
بمعرف التطبيق الذي لاحظته في الخطوة السابقة.az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
أضف مفاتيح كيا الخدمة إلى المخزن الرئيسي على النحو التالي. تأكد من استبدال قيم العناصر النائبة بالمعلومات التي لاحظتها في الخطوات السابقة. استبدل
<environment>
باسم بيئتك، مثلDEMO
.az keyvault secret set --name "<environment>-subscription-id" --vault-name "<deployer_kv_user_name>" --value "<subscription-id>"; az keyvault secret set --name "<environment>-tenant-id" --vault-name "<deployer_kv_user_name>" --value "<tenant>"; az keyvault secret set --name "<environment>-client-id" --vault-name "<deployer_kv_user_name>" --value "<appId>"; az keyvault secret set --name "<environment>-client-secret" --vault-name "<deployer_kv_user_name>" --value "<password>";
تكوين المكتبة
سجل الدخول إلى الموزع باستخدام عميل SSH ومفاتيح SSH التي قمت باستردادها أثناء إعداد الموزع. إذا كنت تستخدم PuTTY كعميل SSH، فحول مفاتيح SSH إلى تنسيق
.ppk
قبل استخدام.انتقل إلى المكان الذي استنسخت فيه مستودع إطار عمل الأتمتة.
cd ~/Azure_SAP_Automated_Deployment/sap-automation
اختيارياً، تحقق من فرع مختلف عن الفرع الرئيسي. الفرع الرئيسي للمستودع هو الافتراضي.
استبدل
<branch>
باسم الفرع أو نفذ التجزئة التي تريد استخدامها.git checkout <branch>
تأكد من أن الفرع الخاص بك في المراجعة المتوقعة.
git rev-parse HEAD
إنشاء دليل عمل.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
إنشاء ملف تكوين JSON.
cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2" }, "deployer": { "environment" : "DEMO", "region" : "eastus2", "vnet" : "DEP00" } } EOF
تهيئة Terraform.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
قم بإنشاء خطة تنفيذ Terraform التي تتبع اصطلاح التسمية الافتراضي.
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library
قم بتطبيق خطة تنفيذ Terraform لنشر الموارد.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
إعادة تهيئة النشر
أعد تهيئة كل من الموزع ومكتبة SAP.
إعادة تهيئة الناشر
استمر في تسجيل الدخول إلى الموزع الخاص بك في عميل SSH. أو قم بتسجيل الدخول مرة أخرى.
انتقل إلى دليل العمل الذي قمت بإنشائه.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
قم بإنشاء ملف معلمة آخر يسمى
backend
. مرة أخرى، اتبع اصطلاحات التسمية الافتراضية. بالنسبة لـresource_group_name
، استخدم اسم مجموعة الموارد حيث يوجد حساب التخزين مع ملفات حالة Terraform (.tfstate
) الخاصة بك. بالنسبة لـstorage_account_name
، استبدل<tfstate_storage_account_name>
باسم حساب التخزين من نشر مكتبة SAP للملفات.tfstate
. بالنسبة لـkey
، قم بدمج اسم مجموعة موارد الناشر مع الملحق.terraform.tfstate
. على سبيل المثال:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate" EOF
قم بتهيئة Terraform مجدداً.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
عندما يُطرح عليك سؤال هل تريد نسخ الحالة الموجودة إلى الخلفية الجديدة؟، أدخل
yes
.إزالة ملف الحالة المحلي.
rm terraform.tfstate*
قم بإنشاء خطة تنفيذ Terraform. مرة أخرى، اتبع اصطلاحات التسمية الافتراضية. على سبيل المثال:
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
تطبيق خطة تنفيذ Terraform. على سبيل المثال:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
أعد تهيئة مكتبة SAP
استمر في تسجيل الدخول إلى الموزع الخاص بك في عميل SSH. أو قم بتسجيل الدخول مرة أخرى.
انتقل إلى دليل العمل الذي قمت بإنشائه.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
قم بإنشاء ملف معلمة آخر يسمى
backend
. مرة أخرى، اتبع اصطلاحات التسمية الافتراضية. بالنسبة لـresource_group_name
، استخدم اسم مجموعة الموارد حيث يوجد حساب التخزين مع ملفات حالة Terraform (.tfstate
) الخاصة بك. بالنسبة لـstorage_account_name
، استبدل<tfstate_storage_account_name>
باسم حساب التخزين من نشر مكتبة SAP للملفات.tfstate
. بالنسبة لـkey
، قم بدمج اسم مجموعة موارد الناشر مع الملحق.terraform.tfstate
. على سبيل المثال:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP_LIBRARY.terraform.tfstate" EOF
أضف زوجاً جديداً من المفاتيح والقيمة مباشرةً بعد قوس الفتح (
{
) لملف المعلمةbackend
. بالنسبة لـtfstate_resource_id
، استخدم معرف المورد لحساب تخزين ملفات حالة Terraform. بالنسبة لـdeployer_tfstate_key
، استخدم اسم المفتاح لملف حالة النشر. على سبيل المثال:{ "tfstate_resource_id" : "<identifier>", "deployer_tfstate_key" : "<key>", "infrastructure": { ... }
قم بتهيئة Terraform مجدداً.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_library/
عندما يُطرح عليك سؤال هل تريد نسخ الحالة الموجودة إلى الخلفية الجديدة؟، أدخل
yes
.إزالة ملف الحالة المحلي.
rm terraform.tfstate*
قم بإنشاء خطة تنفيذ Terraform. مرة أخرى، اتبع اصطلاحات التسمية الافتراضية. على سبيل المثال:
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
تطبيق خطة تنفيذ Terraform. على سبيل المثال:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
نشر الشبكة الظاهرية لحمل العمل
بعد ذلك، قم بنشر الشبكة الظاهرية لحمل عمل SAP.
استمر في تسجيل الدخول إلى الموزع الخاص بك في عميل SSH. أو قم بتسجيل الدخول مرة أخرى.
إنشاء دليل عمل. اتبع اصطلاحات التسمية الافتراضية.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
قم بإنشاء ملف معلمة يسمى
backend
. بالنسبة لـresource_group_name
، استخدم اسم مجموعة الموارد حيث يوجد حساب التخزين مع ملفات حالة Terraform (.tfstate
) الخاصة بك. بالنسبة لـstorage_account_name
، استبدل<tfstate_storage_account_name>
باسم حساب التخزين من نشر مكتبة SAP للملفات.tfstate
. بالنسبة لـkey
، قم بدمج اسم مجموعة موارد الناشر مع الملحق.terraform.tfstate
. على سبيل المثال:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate" EOF
قم بتهيئة Terraform مجدداً.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
قم بإنشاء خطة تنفيذ Terraform. مرة أخرى، اتبع اصطلاحات التسمية الافتراضية. على سبيل المثال:
terraform plan \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
تطبيق خطة تنفيذ Terraform. على سبيل المثال:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
وحدة نشر SAP
بعد ذلك، قم بإعداد وحدة نشر SAP.
استمر في تسجيل الدخول إلى الموزع الخاص بك في عميل SSH. أو قم بتسجيل الدخول مرة أخرى
إنشاء دليل عمل. اتبع اصطلاحات التسمية الافتراضية.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
قم بإنشاء ملف معلمة آخر يسمى
backend
. بالنسبة لـresource_group_name
، استخدم اسم مجموعة الموارد حيث يوجد حساب التخزين مع ملفات حالة Terraform (.tfstate
) الخاصة بك. بالنسبة لـstorage_account_name
، استبدل<tfstate_storage_account_name>
باسم حساب التخزين من نشر مكتبة SAP للملفات.tfstate
. بالنسبة لـkey
، قم بدمج اسم مجموعة موارد الناشر مع الملحق.terraform.tfstate
. على سبيل المثال:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-X00.terraform.tfstate" EOF
قم بإنشاء ملف معلمة JSON مع معلمات الإدخال على النحو التالي. تأكد من استبدال قيم العينة بقيمك الخاصة.
cat <<EOF > DEMO-EUS2-SAP00-X00.json { "tfstate_resource_id" : "<resource-id>", "deployer_tfstate_key" : "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate", "landscape_tfstate_key" : "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate", "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "sap": { "name" : "SAP00", "subnet_db": { "prefix" : "0.0.0.0/28" }, "subnet_web": { "prefix" : "0.0.0.0/28" }, "subnet_app": { "prefix" : "0.0.0.0/27" }, "subnet_admin": { "prefix" : "0.0.0.0/27" } } } }, "databases": [ { "platform" : "HANA", "high_availability" : false, "size" : "S4Demo", "os": { "publisher" : "SUSE", "offer" : "sles-sap-12-sp5", "sku" : "gen2", "version" : "latest" } } ], "application": { "enable_deployment" : true, "sid" : "X00", "scs_instance_number" : "00", "ers_instance_number" : "10", "scs_high_availability" : false, "application_server_count" : 3, "webdispatcher_count" : 1, "authentication": { "type" : "key", "username" : "azureadm" } } } EOF
قم بتهيئة Terraform مجدداً.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_system/
قم بإنشاء خطة تنفيذ Terraform. مرة أخرى، اتبع اصطلاحات التسمية الافتراضية. على سبيل المثال:
terraform plan \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
تطبيق خطة تنفيذ Terraform. على سبيل المثال:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
تكوين Ansible
قم بتكوين الإعداد الخاص بك عن طريق تنفيذ أدلة مبادئ Ansible. توجد أدلة المبادئ هذه في مستودع إطار الأتمتة في /sap-automation/deploy/ansible
.
Filename | الوصف |
---|---|
playbook_01_os_base_config.yaml |
تكوين نظام التشغيل الأساسي |
playbook_02_os_sap_specific_config.yaml |
تكوين نظام التشغيل الخاص بـ SAP |
playbook_03_bom_processing.yaml |
تنزيل برنامج معالجة قائمة مكونات الصنف (BOM) لـ SAP |
playbook_04a_sap_scs_install.yaml |
تثبيت خدمات SAP المركزية (SCS) |
playbook_05a_hana_db_install.yaml |
تثبيت قاعدة بيانات SAP HANA |
playbook_06a_sap_dbload.yaml |
محمل قاعدة البيانات |
playbook_06b_sap_pas_install.yaml |
تثبيت خادم تطبيق SAP الأساسي (PAS) |
playbook_06c_sap_app_install.yaml |
تثبيت خادم تطبيق SAP |
playbook_06d_sap_web_install.yaml |
تثبيت مرسل ويب SAP |
playbook_06_00_00_pacemaker.yaml |
تكوين مجموعة أجهزة تنظيم ضربات القلب |
playbook_06_00_01_pacemaker_scs.yaml |
تكوين جهاز تنظيم ضربات القلب لـ SCS |
playbook_06_00_03_pacemaker_hana.yaml |
تكوين جهاز تنظيم ضربات القلب لقاعدة بيانات SAP Hana |
لتنفيذ دليل تشغيل أو أدلة تشغيل متعددة، استخدم الأمر ansible-playbook
كما يلي. تأكد من تغيير جميع قيم العناصر النائبة إلى معلوماتك الخاصة:
- غيّر
<your-sapbits-path>
إلى المسار إلى حساب التخزينsapbits
الخاص بك لمكتبة SAP. - غيّر
<azure-admin>
إلى اسم مستخدم مسؤول Azure. - غيّر
<ssh-key
> إلى مفتاح SSH الخاص الذي تريد استخدامه. - غيّر القيم الأخرى ضمن
--extra-vars
حسب الحاجة لإعداداتك.
إذا كنت تواجه مشكلات، فتأكد من تنزيل برنامج SAP إلى بيئة Azure الخاصة بك.
export ANSIBLE_HOST_KEY_CHECKING=False
# export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=Yes
# export ANSIBLE_KEEP_REMOTE_FILES=1
ansible-playbook \
--inventory new-hosts.yaml \
--user <azure-admin> \
--private-key <ssh-key> \
--extra-vars="{ \
\"bom_base_name\": \"HANA_2_00_053_v001\", \
\"download_templates\": \"false\", \
\"sapbits_location_base_path\": \"<your-sapbits-path>", \
\"target_media_location\": \"/usr/sap/install\", \
\"sap_sid\": \"X00\", \
\"hdb_sid\": \"HDB\" \
}" \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_00_transition_start_for_sap_install_refactor.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_01_os_base_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04a_sap_scs_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05a_hana_db_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06a_sap_dbload.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06b_sap_pas_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06c_sap_app_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06d_sap_web_install.yaml