تكوين التسمية المخصصة لإطار عمل التشغيل التلقائي
يستخدم SAP Deployment Automation Framework اصطلاح تسمية قياسي لتسمية موارد Azure.
وحدة Terraform تحدد أسماء sap_namegenerator
جميع الموارد التي ينشرها إطار عمل الأتمتة. توجد الوحدة في /deploy/terraform/terraform-units/modules/sap_namegenerator/
بالمستودع. يدعم إطار العمل أيضا توفير الأسماء الخاصة بك لبعض الموارد باستخدام ملفات المعلمات.
تسمية الموارد تستخدم التنسيق التالي:
بادئة المورد + resource_group_prefix + فاصل + اسم مورد + لاحقة مورد.
إذا لم تكن هذه الإمكانات كافية، يمكنك أيضا استخدام منطق تسمية مخصص إما عن طريق توفير ملف JSON مخصص يحتوي على أسماء الموارد أو عن طريق تعديل وحدة التسمية المستخدمة من قبل التنفيذ التلقائي.
توفير تجاوزات الاسم باستخدام ملف JSON
يمكنك تحديد ملف JSON مخصص للتسمية في tfvars
ملف المعلمة باستخدام المعلمة name_override_file
.
يحتوي ملف JSON على أقسام أنواع الموارد المختلفة.
أنواع النشر كما يلي:
- DEPLOYER (وحدة التحكم)
- SDU (البنية الأساسية لنظام SAP)
- WORKLOAD_ZONE (منطقة حمل العمل)
أسماء مجموعة التوفر
يتم تعريف أسماء مجموعات التوفر في availabilityset_names
البنية. يسرد المثال التالي أسماء مجموعة التوفر للنشر.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
أسماء خزنة المفاتيح
يتم تعريف أسماء خزائن المفاتيح في keyvault_names
البنية. يسرد المثال التالي أسماء خزنة المفاتيح للنشر في DEV
البيئة في غرب أوروبا.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
يجب أن تكون أسماء خزنة المفاتيح فريدة عبر Azure. إلحاق SAP Deployment Automation Framework بثلاثة أحرف عشوائية (ABC في المثال) في نهاية اسم مخزن المفاتيح لتقليل احتمال تعارضات الأسماء.
private_access
الأسماء غير مستخدمة حاليا.
أسماء حسابات التخزين
يتم تعريف أسماء حسابات التخزين في storageaccount_names
البنية. يسرد المثال التالي أسماء حسابات التخزين للنشر في DEV
البيئة في غرب أوروبا.
"storageaccount_names": {
"DEPLOYER": "devweeudiagabc",
"LIBRARY": {
"library_storageaccount_name": "devweeusaplibabc",
"terraformstate_storageaccount_name": "devweeutfstateabc"
},
"SDU": "devweeusap01diagabc",
"WORKLOAD_ZONE": {
"landscape_shared_transport_storage_account_name": "devweeusap01sharedabc",
"landscape_storageaccount_name": "devweeusap01diagabc",
"witness_storageaccount_name": "devweeusap01witnessabc"
}
}
يجب أن تكون أسماء خزنة المفاتيح فريدة عبر Azure. إلحاق SAP Deployment Automation Framework بثلاثة أحرف عشوائية (abc في المثال) في نهاية اسم مخزن المفاتيح لتقليل احتمال تعارضات الاسم.
أسماء الأجهزة الظاهرية
يتم تعريف أسماء الأجهزة الظاهرية في virtualmachine_names
البنية. كل من الكمبيوتر وأسماء الأجهزة الظاهرية يمكن توفيرهما.
يسرد المثال التالي أسماء الأجهزة الظاهرية للنشر في DEV
البيئة في غرب أوروبا. يحتوي التوزيع على خادم قاعدة بيانات، وخادمين للتطبيق، وخادم خدمات مركزية، ومرسل ويب.
"virtualmachine_names": {
"ANCHOR_COMPUTERNAME": [],
"ANCHOR_SECONDARY_DNSNAME": [],
"ANCHOR_VMNAME": [],
"ANYDB_COMPUTERNAME": [
"x00db00l0abc"
],
"ANYDB_SECONDARY_DNSNAME": [
"x00dhdb00l0abc",
"x00dhdb00l1abc"
],
"ANYDB_VMNAME": [
"x00db00l0abc"
],
"APP_COMPUTERNAME": [
"x00app00labc",
"x00app01labc"
],
"APP_SECONDARY_DNSNAME": [
"x00app00labc",
"x00app01labc"
],
"APP_VMNAME": [
"x00app00labc",
"x00app01labc"
],
"DEPLOYER": [
"devweeudeploy00"
],
"HANA_COMPUTERNAME": [
"x00dhdb00l0af"
],
"HANA_SECONDARY_DNSNAME": [
"x00dhdb00l0abc"
],
"HANA_VMNAME": [
"x00dhdb00l0abc"
],
"ISCSI_COMPUTERNAME": [
"devsap01weeuiscsi00"
],
"OBSERVER_COMPUTERNAME": [
"x00observer00labc"
],
"OBSERVER_VMNAME": [
"x00observer00labc"
],
"SCS_COMPUTERNAME": [
"x00scs00labc"
],
"SCS_SECONDARY_DNSNAME": [
"x00scs00labc"
],
"SCS_VMNAME": [
"x00scs00labc"
],
"WEB_COMPUTERNAME": [
"x00web00labc"
],
"WEB_SECONDARY_DNSNAME": [
"x00web00labc"
],
"WEB_VMNAME": [
"x00web00labc"
]
}
تكوين وحدة التسمية المخصصة
توجد ملفات متعددة داخل الوحدة لتسمية الموارد:
- يتم تعريف أسماء الأجهزة الظاهرية والكمبيوتر في (
vm.tf
). - يتم تعريف تسمية مجموعة الموارد في (
resourcegroup.tf
). - يتم تعريف خزائن المفاتيح في (
keyvault.tf
). - يتم تعريف لاحقات الموارد في (
variables_local.tf
).
يتم تحديد أسماء الموارد المختلفة بواسطة البادئات في التعليمات البرمجية Terraform:
- تستخدم عمليات توزيع SAP أسماء الموارد مع البادئة
deployer_
. - تستخدم عمليات توزيع مكتبة SAP أسماء الموارد مع البادئة
library
. - تستخدم عمليات نشر SAP الأفقية أسماء الموارد مع البادئة
vnet_
. - تستخدم عمليات نشر نظام SAP أسماء الموارد مع البادئة
sdu_
.
يتم إرجاع الأسماء المحسوبة في قاموس بيانات، والذي تستخدمه جميع وحدات Terraform النمطية.
استخدام أسماء مخصصة
يمكن تغيير بعض أسماء الموارد عن طريق توفير معلمات في ملف المعلمة tfvars
.
مورد | المعلمة | الملاحظات |
---|---|---|
Prefix |
custom_prefix |
يستخدم كبادئة لكافة الموارد في مجموعة الموارد |
Resource group |
resourcegroup_name |
|
admin subnet name |
admin_subnet_name |
|
admin nsg name |
admin_subnet_nsg_name |
|
db subnet name |
db_subnet_name |
|
db nsg name |
db_subnet_nsg_name |
|
app subnet name |
app_subnet_name |
|
app nsg name |
app_subnet_nsg_name |
|
web subnet name |
web_subnet_name |
|
web nsg name |
web_subnet_nsg_name |
|
admin nsg name |
admin_subnet_nsg_name |
تغيير وحدة التسمية
لإعداد بيئة Terraform للتسمية المخصصة، تحتاج أولا إلى إنشاء وحدة تسمية مخصصة. أسهل طريقة هي نسخ الوحدة الحالية وإجراء التغييرات المطلوبة في الوحدة المنسوخة.
- أنشئ مجلد على مستوى الجذر في بيئة Terraform. مثال على ذلك
Azure_SAP_Automated_Deployment
. - انتقل إلى مجلد مستوى الجذر الجديد.
- استنسخ مستودع إطار عمل التشغيل التلقائي. تقوم هذه الخطوة بإنشاء مجلد
sap-automation
جديد. - أنشء مجلد داخل المجلد على مستوى الجذر يسمى
Contoso_naming
. - انتقل إلى المجلد
sap-automation
. - تحقق من الفرع المناسب في Git.
- انتقل إلى
\deploy\terraform\terraform-units\modules
داخلsap-automation
المجلد. - انسخ المجلد
sap_namegenerator
إلى المجلدContoso_naming
.
يتم استدعاء وحدة التسمية من المجلدات الجذر terraform
:
module "sap_namegenerator" {
source = "../../terraform-units/modules/sap_namegenerator"
environment = local.infrastructure.environment
location = local.infrastructure.region
codename = lower(try(local.infrastructure.codename, ""))
random_id = module.common_infrastructure.random_id
sap_vnet_name = local.vnet_logical_name
sap_sid = local.sap_sid
db_sid = local.db_sid
app_ostype = try(local.application.os.os_type, "LINUX")
anchor_ostype = upper(try(local.anchor_vms.os.os_type, "LINUX"))
db_ostype = try(local.databases[0].os.os_type, "LINUX")
db_server_count = var.database_server_count
app_server_count = try(local.application.application_server_count, 0)
web_server_count = try(local.application.webdispatcher_count, 0)
scs_server_count = local.application.scs_high_availability ? 2 * local.application.scs_server_count : local.application.scs_server_count
app_zones = local.app_zones
scs_zones = local.scs_zones
web_zones = local.web_zones
db_zones = local.db_zones
resource_offset = try(var.options.resource_offset, 0)
custom_prefix = var.custom_prefix
}
بعد ذلك، تحتاج إلى توجيه ملفات وحدة Terraform الأخرى إلى وحدة التسمية المخصصة الخاصة بك. ملفات الوحدات هذه تتضمن ما يلي:
deploy\terraform\run\sap_system\module.tf
deploy\terraform\bootstrap\sap_deployer\module.tf
deploy\terraform\bootstrap\sap_library\module.tf
deploy\terraform\run\sap_library\module.tf
deploy\terraform\run\sap_deployer\module.tf
لكل ملف، قم بتغيير مصدر الوحدة sap_namegenerator
للإشارة إلى موقع وحدة التسمية الجديدة. على سبيل المثال:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
يصبح module "sap_namegenerator" { source = "../../../../Contoso_naming"
.
تغيير منطق تسمية مجموعة الموارد
لتغيير منطق تسمية مجموعة الموارد، انتقل إلى مجلد وحدة التسمية المخصصة (على سبيل المثال، Workspaces\Contoso_naming
). ثم حرر الملف resourcegroup.tf
. عدّل التعليمة البرمجية التالية باستخدام منطق التسمية الخاص بك.
locals {
// Resource group naming
sdu_name = length(var.codename) > 0 ? (
upper(format("%s-%s-%s_%s-%s", local.env_verified, local.location_short, local.sap_vnet_verified, var.codename, var.sap_sid))) : (
upper(format("%s-%s-%s-%s", local.env_verified, local.location_short, local.sap_vnet_verified, var.sap_sid))
)
deployer_name = upper(format("%s-%s-%s", local.deployer_env_verified, local.deployer_location_short, local.dep_vnet_verified))
landscape_name = upper(format("%s-%s-%s", local.landscape_env_verified, local.location_short, local.sap_vnet_verified))
library_name = upper(format("%s-%s", local.library_env_verified, local.location_short))
// Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only. The name must be unique.
deployer_storageaccount_name = substr(replace(lower(format("%s%s%sdiag%s", local.deployer_env_verified, local.deployer_location_short, local.dep_vnet_verified, local.random_id_verified)), "/[^a-z0-9]/", ""), 0, var.azlimits.stgaccnt)
landscape_storageaccount_name = substr(replace(lower(format("%s%s%sdiag%s", local.landscape_env_verified, local.location_short, local.sap_vnet_verified, local.random_id_verified)), "/[^a-z0-9]/", ""), 0, var.azlimits.stgaccnt)
library_storageaccount_name = substr(replace(lower(format("%s%ssaplib%s", local.library_env_verified, local.location_short, local.random_id_verified)), "/[^a-z0-9]/", ""), 0, var.azlimits.stgaccnt)
sdu_storageaccount_name = substr(replace(lower(format("%s%s%sdiag%s", local.env_verified, local.location_short, local.sap_vnet_verified, local.random_id_verified)), "/[^a-z0-9]/", ""), 0, var.azlimits.stgaccnt)
terraformstate_storageaccount_name = substr(replace(lower(format("%s%stfstate%s", local.library_env_verified, local.location_short, local.random_id_verified)), "/[^a-z0-9]/", ""), 0, var.azlimits.stgaccnt)
}
تغيير لواحق الموارد
لتغيير لاحقات الموارد، انتقل إلى مجلد وحدة التسمية المخصصة (على سبيل المثال، Workspaces\Contoso_naming
). ثم حرر الملف variables_local.tf
. عدّل الخريطة التالية باستخدام لواحق الموارد الخاصة بك.
إشعار
غيّر قيم الخريطة فقط. لا تغير مفتاح الخريطة، الذي يستخدمه رمز Terraform.
على سبيل المثال، إذا كنت تريد إعادة تسمية مكون واجهة شبكة المسؤول، غير "admin-nic" = "-admin-nic"
إلى "admin-nic" = "yourNICname"
.
variable resource_suffixes {
type = map(string)
description = "Extension of resource name"
default = {
"admin_nic" = "-admin-nic"
"admin_subnet" = "admin-subnet"
"admin_subnet_nsg" = "adminSubnet-nsg"
"app_alb" = "app-alb"
"app_avset" = "app-avset"
"app_subnet" = "app-subnet"
"app_subnet_nsg" = "appSubnet-nsg"
"db_alb" = "db-alb"
"db_alb_bepool" = "dbAlb-bePool"
"db_alb_feip" = "dbAlb-feip"
"db_alb_hp" = "dbAlb-hp"
"db_alb_rule" = "dbAlb-rule_"
"db_avset" = "db-avset"
"db_nic" = "-db-nic"
"db_subnet" = "db-subnet"
"db_subnet_nsg" = "dbSubnet-nsg"
"deployer_rg" = "-INFRASTRUCTURE"
"deployer_state" = "_DEPLOYER.terraform.tfstate"
"deployer_subnet" = "_deployment-subnet"
"deployer_subnet_nsg" = "_deployment-nsg"
"iscsi_subnet" = "iscsi-subnet"
"iscsi_subnet_nsg" = "iscsiSubnet-nsg"
"library_rg" = "-SAP_LIBRARY"
"library_state" = "_SAP-LIBRARY.terraform.tfstate"
"kv" = ""
"msi" = "-msi"
"nic" = "-nic"
"osdisk" = "-OsDisk"
"pip" = "-pip"
"ppg" = "-ppg"
"sapbits" = "sapbits"
"storage_nic" = "-storage-nic"
"storage_subnet" = "_storage-subnet"
"storage_subnet_nsg" = "_storageSubnet-nsg"
"scs_alb" = "scs-alb"
"scs_alb_bepool" = "scsAlb-bePool"
"scs_alb_feip" = "scsAlb-feip"
"scs_alb_hp" = "scsAlb-hp"
"scs_alb_rule" = "scsAlb-rule_"
"scs_avset" = "scs-avset"
"scs_ers_feip" = "scsErs-feip"
"scs_ers_hp" = "scsErs-hp"
"scs_ers_rule" = "scsErs-rule_"
"scs_scs_rule" = "scsScs-rule_"
"sdu_rg" = ""
"tfstate" = "tfstate"
"vm" = ""
"vnet" = "-vnet"
"vnet_rg" = "-INFRASTRUCTURE"
"web_alb" = "web-alb"
"web_alb_bepool" = "webAlb-bePool"
"web_alb_feip" = "webAlb-feip"
"web_alb_hp" = "webAlb-hp"
"web_alb_inrule" = "webAlb-inRule"
"web_avset" = "web-avset"
"web_subnet" = "web-subnet"
"web_subnet_nsg" = "webSubnet-nsg"
}
}