Konfigurace vlastního pojmenování pro architekturu automatizace
Rozhraní SAP Deployment Automation Framework používá pro pojmenování prostředků Azure standardní zásady vytváření názvů.
Modul sap_namegenerator
Terraform definuje názvy všech prostředků, které nasadí architektura automatizace. Modul se nachází v /deploy/terraform/terraform-units/modules/sap_namegenerator/
úložišti. Architektura také podporuje poskytování vlastních názvů některých prostředků pomocí souborů parametrů.
Pojmenování prostředků používá následující formát:
předpona prostředku + resource_group_prefix + oddělovač + název prostředku + přípona prostředku.
Pokud tyto funkce nestačí, můžete také použít vlastní logiku pojmenování tak, že zadáte vlastní soubor JSON, který obsahuje názvy prostředků, nebo upravíte modul pojmenování používaný automatizací.
Zadání přepsání názvů pomocí souboru JSON
Pomocí parametru name_override_file
můžete zadat vlastní název souboru JSON v tfvars
souboru parametrů.
Soubor JSON obsahuje oddíly pro různé typy prostředků.
Typy nasazení:
- DEPLOYER (řídicí rovina)
- SDU (systémová infrastruktura SAP)
- WORKLOAD_ZONE (zóna úloh)
Názvy skupin dostupnosti
Názvy skupin dostupnosti jsou definovány ve struktuře availabilityset_names
. Následující příklad uvádí názvy skupin dostupnosti pro nasazení.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Názvy trezorů klíčů
Názvy trezorů klíčů jsou definovány ve struktuře keyvault_names
. Následující příklad uvádí názvy trezorů klíčů pro nasazení v DEV
prostředí v oblasti Západní Evropa.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
Názvy trezorů klíčů musí být v Rámci Azure jedinečné. Sap Deployment Automation Framework připojí na konec názvu trezoru klíčů tři náhodné znaky (v příkladu ABC), aby se snížila pravděpodobnost konfliktů názvů.
Názvy private_access
se v současné době nepoužívají.
Názvy účtů úložiště
Názvy účtů úložiště jsou definovány ve struktuře storageaccount_names
. Následující příklad uvádí názvy účtů úložiště pro nasazení v DEV
prostředí v oblasti Západní Evropa.
"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"
}
}
Názvy trezorů klíčů musí být v Rámci Azure jedinečné. Sap Deployment Automation Framework připojí na konec názvu trezoru klíčů tři náhodné znaky (v příkladu abc), aby se snížila pravděpodobnost konfliktů názvů.
Názvy virtuálních počítačů
Názvy virtuálních počítačů jsou definovány ve struktuře virtualmachine_names
. Je možné zadat názvy počítačů i virtuálních počítačů.
Následující příklad uvádí názvy virtuálních počítačů pro nasazení v DEV
prostředí v oblasti Západní Evropa. Nasazení má databázový server, dva aplikační servery, centrální server služeb a webový dispečer.
"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"
]
}
Konfigurace vlastního modulu pojmenování
Pro pojmenování prostředků v rámci modulu je k dispozici více souborů:
- Názvy virtuálních počítačů apočítačůch
vm.tf
- Pojmenování skupin prostředků je definováno v (
resourcegroup.tf
). - Trezory klíčů jsou definovány v (
keyvault.tf
). - Přípony prostředků jsou definovány v (
variables_local.tf
).
Různé názvy prostředků jsou identifikovány předponami v kódu Terraformu:
- Nasazení nasazovače SAP používají názvy prostředků s předponou
deployer_
. - Nasazení knihovny SAP používají názvy prostředků s předponou
library
. - Nasazení na šířku SAP používají názvy prostředků s předponou
vnet_
. - Nasazení systému SAP používají názvy prostředků s předponou
sdu_
.
Počítané názvy se vrátí ve slovníku dat, který používají všechny moduly Terraformu.
Použití vlastních názvů
Některé názvy prostředků je možné změnit zadáním parametrů v tfvars
souboru parametrů.
Prostředek | Parametr | Notes |
---|---|---|
Prefix |
custom_prefix |
Používá se jako předpona pro všechny prostředky ve skupině prostředků. |
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 |
Změna modulu pojmenování
Pokud chcete připravit prostředí Terraformu na vlastní pojmenování, musíte nejprve vytvořit vlastní modul pojmenování. Nejjednodušším způsobem je zkopírovat existující modul a provést požadované změny v zkopírovaných modulech.
- Vytvořte v prostředí Terraformu kořenovou složku. Příklad:
Azure_SAP_Automated_Deployment
. - Přejděte do nové kořenové složky.
- Naklonujte úložiště architektury automation. Tento krok vytvoří novou složku
sap-automation
. - Vytvořte složku v kořenové složce s názvem
Contoso_naming
. - Přejděte do složky
sap-automation
. - Podívejte se na příslušnou větev v Gitu.
- Přejděte do
\deploy\terraform\terraform-units\modules
složkysap-automation
. - Zkopírujte složku
sap_namegenerator
doContoso_naming
složky.
Modul pojmenování se volá z kořenových terraform
složek:
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
}
Dále musíte nasměrovat ostatní soubory modulu Terraformu na vlastní modul pojmenování. Mezi tyto soubory modulů patří:
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
U každého souboru změňte zdroj modulu sap_namegenerator
tak, aby odkazovat na umístění nového modulu pojmenování. Příklad:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
se stane module "sap_namegenerator" { source = "../../../../Contoso_naming"
.
Změna logiky pojmenování skupin prostředků
Pokud chcete změnit logiku pojmenování skupiny prostředků, přejděte do vlastní složky modulu pojmenování (například Workspaces\Contoso_naming
). Pak upravte soubor resourcegroup.tf
. Upravte následující kód vlastní logikou pojmenování.
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)
}
Změna přípon prostředků
Pokud chcete změnit přípony prostředků, přejděte do vlastní složky modulu pojmenování (například Workspaces\Contoso_naming
). Pak upravte soubor variables_local.tf
. Upravte následující mapu s vlastními příponami prostředků.
Poznámka:
Změňte pouze hodnoty mapy. Neměňte klíč mapy, který používá kód Terraformu.
Pokud například chcete přejmenovat součást síťového rozhraní správce, změňte "admin-nic" = "-admin-nic"
na "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"
}
}