Condividi tramite


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.

  1. Creare una cartella a livello radice nell'ambiente Terraform. Un esempio è Azure_SAP_Automated_Deployment.
  2. Passare alla nuova cartella a livello di radice.
  3. Clonare il repository del framework di automazione. Questo passaggio crea una nuova cartella sap-automation.
  4. Creare una cartella all'interno della cartella a livello radice denominata Contoso_naming.
  5. Passare alla cartella sap-automation.
  6. Vedere il ramo appropriato in Git.
  7. Passare alla \deploy\terraform\terraform-units\modulessap-automation cartella .
  8. Copiare la cartella sap_namegenerator nella Contoso_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