Otomasyon çerçevesi için özel adlandırma yapılandırma
SAP Deployment Automation Framework , Azure kaynak adlandırması için standart bir adlandırma kuralı kullanır.
Terraform modülü sap_namegenerator
, otomasyon çerçevesinin dağıttığı tüm kaynakların adlarını tanımlar. Modül, deposunda bulunur /deploy/terraform/terraform-units/modules/sap_namegenerator/
. Çerçeve ayrıca parametre dosyalarını kullanarak bazı kaynaklar için kendi adlarınızı sağlamayı da destekler.
Kaynakların adlandırması aşağıdaki biçimi kullanır:
kaynak ön eki + resource_group_prefix + ayırıcı + kaynak adı + kaynak son eki.
Bu özellikler yeterli değilse, kaynak adlarını içeren özel bir JSON dosyası sağlayarak veya otomasyon tarafından kullanılan adlandırma modülünü değiştirerek de özel adlandırma mantığını kullanabilirsiniz.
JSON dosyası kullanarak ad geçersiz kılmaları sağlama
parametresini kullanarak name_override_file
parametre dosyanızda tfvars
özel bir adlandırma JSON dosyası belirtebilirsiniz.
JSON dosyasında farklı kaynak türleri için bölümler bulunur.
Dağıtım türleri şunlardır:
- DEPLOYER (kontrol düzlemi)
- SDU (SAP sistem altyapısı)
- WORKLOAD_ZONE (iş yükü bölgesi)
Kullanılabilirlik kümesi adları
Kullanılabilirlik kümelerinin adları yapıda availabilityset_names
tanımlanır. Aşağıdaki örnekte, bir dağıtımın kullanılabilirlik kümesi adları liste gösterilmektedir.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Anahtar kasası adları
Anahtar kasalarının adları yapıda keyvault_names
tanımlanır. Aşağıdaki örnek, Batı Avrupa ortamındaki bir dağıtımın DEV
anahtar kasası adlarını listeler.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
Anahtar kasası adlarının Azure genelinde benzersiz olması gerekir. SAP Deployment Automation Framework, ad çakışması olasılığını azaltmak için anahtar kasası adının sonuna üç rastgele karakter (örnekte ABC) ekler.
Adlar private_access
şu anda kullanılmıyor.
Hesap adlarını Depolama
Depolama hesaplarının adları yapıda storageaccount_names
tanımlanır. Aşağıdaki örnek, Batı Avrupa ortamındaki bir dağıtımın DEV
depolama hesabı adlarını listeler.
"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"
}
}
Anahtar kasası adlarının Azure genelinde benzersiz olması gerekir. SAP Deployment Automation Framework, ad çakışması olasılığını azaltmak için anahtar kasası adının sonuna üç rastgele karakter (örnekte abc) ekler.
Sanal makine adları
Sanal makinelerin adları yapıda virtualmachine_names
tanımlanır. Hem bilgisayar hem de sanal makine adları sağlanabilir.
Aşağıdaki örnek, Batı Avrupa ortamındaki bir dağıtımın DEV
sanal makine adlarını listeler. Dağıtımda veritabanı sunucusu, iki uygulama sunucusu, merkezi hizmetler sunucusu ve bir web dağıtıcısı vardır.
"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"
]
}
Özel adlandırma modülünü yapılandırma
Modülde kaynakları adlandırmak için birden çok dosya vardır:
- Sanal makine ve bilgisayar adları (
vm.tf
içinde tanımlanır. - Kaynak grubu adlandırması ()
resourcegroup.tf
içinde tanımlanır. - Anahtar kasaları (
keyvault.tf
içinde tanımlanır). - Kaynak son ekleri ()
variables_local.tf
içinde tanımlanır.
Farklı kaynak adları Terraform kodundaki ön eklerle tanımlanır:
- SAP dağıtıcı dağıtımları, ön ekine
deployer_
sahip kaynak adlarını kullanır. - SAP kitaplığı dağıtımları, ön ekine
library
sahip kaynak adlarını kullanır. - SAP yatay dağıtımları, ön ekine
vnet_
sahip kaynak adlarını kullanır. - SAP sistem dağıtımları, ön ekine
sdu_
sahip kaynak adlarını kullanır.
Hesaplanan adlar, tüm Terraform modülleri tarafından kullanılan bir veri sözlüğünde döndürülür.
Özel adlar kullanma
Kaynak adlarından bazıları, parametre dosyasında parametreler tfvars
sağlanarak değiştirilebilir.
Kaynak | Parametre | Notlar |
---|---|---|
Prefix |
custom_prefix |
Kaynak grubundaki tüm kaynaklar için ön ek olarak kullanılır |
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 |
Adlandırma modülünü değiştirme
Terraform ortamınızı özel adlandırmaya hazırlamak için önce özel bir adlandırma modülü oluşturmanız gerekir. Bunun en kolay yolu, mevcut modülü kopyalamak ve kopyalanan modülde gerekli değişiklikleri yapmaktır.
- Terraform ortamınızda kök düzeyinde bir klasör oluşturun.
Azure_SAP_Automated_Deployment
bunun bir örneğidir. - Yeni kök düzeyi klasörünüze gidin.
- Otomasyon çerçevesi deposunu kopyalayın. Bu adım yeni bir klasör
sap-automation
oluşturur. - kök düzeyinde adlı
Contoso_naming
bir klasör oluşturun. sap-automation
klasörüne gidin.- Git'te uygun dala göz atın.
\deploy\terraform\terraform-units\modules
Klasörün içinesap-automation
gidin.- klasörü klasörüne
sap_namegenerator
Contoso_naming
kopyalayın.
Adlandırma modülü kök terraform
klasörlerden çağrılır:
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
}
Ardından, diğer Terraform modül dosyalarınızı özel adlandırma modülünüze işaret etmeniz gerekir. Bu modül dosyaları şunlardır:
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
Her dosya için modülün sap_namegenerator
kaynağını yeni adlandırma modülünüzün konumuna işaret eden şekilde değiştirin. Örnek:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
olur module "sap_namegenerator" { source = "../../../../Contoso_naming"
.
Kaynak grubu adlandırma mantığını değiştirme
Kaynak grubunuzun adlandırma mantığını değiştirmek için özel adlandırma modülü klasörünüze gidin (örneğin, Workspaces\Contoso_naming
). Ardından dosyasını resourcegroup.tf
düzenleyin. Aşağıdaki kodu kendi adlandırma mantığınızla değiştirin.
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)
}
Kaynak soneklerini değiştirme
Kaynak son eklerinizi değiştirmek için özel adlandırma modülü klasörünüze gidin (örneğin, Workspaces\Contoso_naming
). Ardından dosyasını variables_local.tf
düzenleyin. Aşağıdaki eşlemeyi kendi kaynak soneklerinizle değiştirin.
Dekont
Yalnızca eşleme değerlerini değiştirin. Terraform kodunun kullandığı harita anahtarını değiştirmeyin.
Örneğin, yönetici ağ arabirimi bileşenini yeniden adlandırmak istiyorsanız olarak değiştirin "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"
}
}