Configurare la denominazione personalizzata per il framework di automazione
SAP Deployment Automation Framework usa una convenzione di denominazione standard per la denominazione delle risorse di Azure.
Il modulo sap_namegenerator
Terraform definisce i nomi di tutte le risorse distribuite dal framework di automazione. Il modulo si trova /deploy/terraform/terraform-units/modules/sap_namegenerator/
nel repository. Il framework supporta anche la fornitura di nomi personalizzati per alcune delle risorse usando i file di parametri.
La denominazione delle risorse usa il formato seguente:
prefisso della risorsa + resource_group_prefix + separatore + nome risorsa + suffisso della risorsa.
Se queste funzionalità non sono sufficienti, è anche possibile usare la logica di denominazione personalizzata fornendo un file JSON personalizzato contenente i nomi delle risorse o modificando il modulo di denominazione usato dall'automazione.
Specificare gli override dei nomi usando un file JSON
È possibile specificare un file JSON di denominazione personalizzato nel tfvars
file di parametri usando il name_override_file
parametro .
Il file JSON include sezioni per i diversi tipi di risorse.
I tipi di distribuzione sono:
- DEPLOYER (piano di controllo)
- SDU (infrastruttura di sistema SAP)
- WORKLOAD_ZONE (zona del carico di lavoro)
Nomi dei set di disponibilità
I nomi dei set di disponibilità vengono definiti nella availabilityset_names
struttura . Nell'esempio seguente vengono elencati i nomi dei set di disponibilità per una distribuzione.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Nomi dell'insieme di credenziali delle chiavi
I nomi degli insiemi di credenziali delle chiavi vengono definiti nella keyvault_names
struttura . L'esempio seguente elenca i nomi dell'insieme di credenziali delle chiavi per una distribuzione nell'ambiente DEV
in Europa occidentale.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
I nomi dell'insieme di credenziali delle chiavi devono essere univoci in Azure. SAP Deployment Automation Framework aggiunge tre caratteri casuali (ABC nell'esempio) alla fine del nome dell'insieme di credenziali delle chiavi per ridurre la probabilità di conflitti di nomi.
I private_access
nomi non sono attualmente utilizzati.
Nomi account di archiviazione
I nomi degli account di archiviazione vengono definiti nella storageaccount_names
struttura. L'esempio seguente elenca i nomi degli account di archiviazione per una distribuzione nell'ambiente DEV
in Europa occidentale.
"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"
}
}
I nomi dell'insieme di credenziali delle chiavi devono essere univoci in Azure. SAP Deployment Automation Framework aggiunge tre caratteri casuali (abc nell'esempio) alla fine del nome dell'insieme di credenziali delle chiavi per ridurre la probabilità di conflitti di nomi.
Nomi delle macchine virtuali
I nomi delle macchine virtuali sono definiti nella virtualmachine_names
struttura . È possibile specificare sia il computer che i nomi delle macchine virtuali.
L'esempio seguente elenca i nomi delle macchine virtuali per una distribuzione nell'ambiente DEV
in Europa occidentale. La distribuzione include un server di database, due server applicazioni, un server servizi centrali e un dispatcher Web.
"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"
]
}
Configurare il modulo di denominazione personalizzato
Sono presenti più file all'interno del modulo per la denominazione delle risorse:
- I nomi delle macchine virtuali e dei computer sono definiti in (
vm.tf
). - La denominazione dei gruppi di risorse è definita in (
resourcegroup.tf
). - Gli insiemi di credenziali delle chiavi sono definiti in (
keyvault.tf
). - I suffissi delle risorse sono definiti in (
variables_local.tf
).
I diversi nomi di risorse sono identificati dai prefissi nel codice Terraform:
- Le distribuzioni del deployer SAP usano nomi di risorse con il prefisso
deployer_
. - Le distribuzioni di librerie SAP usano nomi di risorse con il prefisso
library
. - Le distribuzioni orizzontale di SAP usano nomi di risorse con il prefisso
vnet_
. - Le distribuzioni di sistema SAP usano nomi di risorse con il prefisso
sdu_
.
I nomi calcolati vengono restituiti in un dizionario dati, che viene usato da tutti i moduli Terraform.
Usare nomi personalizzati
Alcuni nomi di risorse possono essere modificati fornendo parametri nel tfvars
file di parametri.
Risorsa | Parametro | Note |
---|---|---|
Prefix |
custom_prefix |
Usato come prefisso per tutte le risorse nel gruppo di risorse |
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 |
Modificare il modulo di denominazione
Per preparare l'ambiente Terraform per la denominazione personalizzata, è prima necessario creare un modulo di denominazione personalizzato. Il modo più semplice consiste nel copiare il modulo esistente e apportare le modifiche necessarie nel modulo copiato.
- Creare una cartella a livello radice nell'ambiente Terraform. Un esempio è
Azure_SAP_Automated_Deployment
. - Passare alla nuova cartella a livello di radice.
- Clonare il repository del framework di automazione. Questo passaggio crea una nuova cartella
sap-automation
. - Creare una cartella all'interno della cartella a livello radice denominata
Contoso_naming
. - Passare alla cartella
sap-automation
. - Vedere il ramo appropriato in Git.
- Passare alla
\deploy\terraform\terraform-units\modules
sap-automation
cartella . - Copiare la cartella
sap_namegenerator
nellaContoso_naming
cartella .
Il modulo di denominazione viene chiamato dalle cartelle radice 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
}
Successivamente, è necessario puntare gli altri file di modulo Terraform al modulo di denominazione personalizzato. Questi file di modulo includono:
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
Per ogni file, modificare l'origine del modulo sap_namegenerator
in modo che punti al percorso del nuovo modulo di denominazione. Ad esempio:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
diventa module "sap_namegenerator" { source = "../../../../Contoso_naming"
.
Modificare la logica di denominazione del gruppo di risorse
Per modificare la logica di denominazione del gruppo di risorse, passare alla cartella del modulo di denominazione personalizzata , ad esempio Workspaces\Contoso_naming
. Modificare quindi il file resourcegroup.tf
. Modificare il codice seguente con la logica di denominazione personalizzata.
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)
}
Modificare i suffissi delle risorse
Per modificare i suffissi delle risorse, passare alla cartella del modulo di denominazione personalizzata , ad esempio Workspaces\Contoso_naming
. Modificare quindi il file variables_local.tf
. Modificare la mappa seguente con i suffissi di risorse personalizzati.
Nota
Modificare solo i valori della mappa. Non modificare la chiave della mappa usata dal codice Terraform.
Ad esempio, se si vuole rinominare il componente dell'interfaccia di rete dell'amministratore, passare "admin-nic" = "-admin-nic"
a "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"
}
}
Passaggio successivo
Informazioni sulle convenzioni di denominazione