Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
SAP Deployment Automation Framework usa una convenzione di denominazione standard per le risorse di Azure distribuite. Se i nomi predefiniti non corrispondono agli standard di denominazione dell'organizzazione o se è necessario evitare conflitti di denominazione tra sottoscrizioni di Azure, è possibile eseguirne l'override con i propri nomi.
Questo articolo illustra come fornire nomi di risorse personalizzati usando un file di override JSON o modificando direttamente il modulo di denominazione Terraform.
Prerequisiti
- Una sottoscrizione di Azure. Se non si ha una sottoscrizione, creare un account gratuito.
- Terraform installato nel computer locale.
- Git installato nel computer locale.
- Accesso al repository del SAP Deployment Automation Framework.
- Familiarità con la sintassi JSON e Terraform HCL.
Fornire ridefinizioni dei nomi utilizzando un file JSON
Il modulo sap_namegenerator Terraform definisce i nomi di tutte le risorse distribuite dal framework. 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:
resource prefix + resource_group_prefix + separator + resource name + resource suffix.
È 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)
Definire i nomi dei set di disponibilità
I nomi dei set di disponibilità sono definiti nella availabilityset_names struttura. Nell'esempio seguente vengono illustrati i nomi dei set di disponibilità per una distribuzione.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Definire i nomi del key vault
I nomi dell'insieme di chiavi sono definiti nella keyvault_names struttura. L'esempio seguente mostra i nomi del Key Vault 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 chiavi devono essere univoci in tutto Azure. SAP Deployment Automation Framework aggiunge tre caratteri casuali (ABC nell'esempio) alla fine del nome del key vault per ridurre la probabilità di conflitti di denominazione.
I private_access nomi non vengono usati.
Definire i nomi degli account di archiviazione
I nomi degli account di archiviazione sono definiti nella storageaccount_names struttura. L'esempio seguente mostra 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 degli account di archiviazione devono essere univoci in Azure. SAP Deployment Automation Framework aggiunge tre caratteri casuali (abc nell'esempio) alla fine del nome dell'account di archiviazione per ridurre la probabilità di conflitti di nomi.
Definire i nomi delle macchine virtuali
I nomi delle macchine virtuali sono definiti nella virtualmachine_names struttura. È possibile specificare sia il nome del computer che il nome della macchina virtuale.
L'esempio seguente mostra 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
Il modulo contiene più file 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 prefissi seguenti nel codice Terraform identificano i nomi delle risorse:
- 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
È possibile modificare alcuni nomi di risorse specificando i parametri nel file di tfvars parametri.
| Conto risorse | 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 |
Modificare il modulo di denominazione
Per preparare l'ambiente Terraform per la denominazione personalizzata, 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. Ad esempio:
Azure_SAP_Automated_Deployment. - Passare alla nuova cartella a livello di radice.
- Clona 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.
- Vai a
\deploy\terraform\terraform-units\modulesnella cartellasap-automation. - Copiare la cartella
sap_namegeneratornellaContoso_namingcartella .
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
}
Indirizzare quindi gli altri file di moduli Terraform al vostro modulo di denominazione personalizzato. Questi file di modulo includono:
deploy\terraform\run\sap_system\module.tfdeploy\terraform\bootstrap\sap_deployer\module.tfdeploy\terraform\bootstrap\sap_library\module.tfdeploy\terraform\run\sap_library\module.tfdeploy\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 gestione dei nomi. Per 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:
- Vai alla cartella del modulo di denominazione personalizzata (ad esempio
Workspaces\Contoso_naming). - Apri 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:
- Vai alla cartella del modulo di denominazione personalizzata, ad esempio
Workspaces\Contoso_naming. - Apri il file
variables_local.tf. - Modificare la mappa seguente con i suffissi di risorse personalizzati.
Annotazioni
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"
}
}