Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SAP Deployment Automation Framework usa una convención de nomenclatura estándar para la nomenclatura de recursos de Azure.
El módulo sap_namegenerator
terraform define los nombres de todos los recursos que implementa el marco de automatización. El módulo se encuentra en /deploy/terraform/terraform-units/modules/sap_namegenerator/
el repositorio. El marco también admite proporcionar sus propios nombres para algunos de los recursos mediante el uso de los archivos de parámetros.
La nomenclatura de los recursos usa el formato siguiente:
prefijo de recurso + prefijo de grupo de recursos + separador + nombre de recurso + sufijo de recurso.
Si estas funcionalidades no son suficientes, también puede usar la lógica de nomenclatura personalizada proporcionando un archivo JSON personalizado que contenga los nombres de recursos o modificando el módulo de nomenclatura usado por la automatización.
Proporcionar invalidaciones de nombre mediante un archivo JSON
Puede especificar un archivo JSON de nomenclatura personalizado en el archivo de parámetros tfvars
usando el parámetro name_override_file
.
El archivo JSON tiene secciones para los distintos tipos de recursos.
Los tipos de implementación son:
- IMPLEMENTADOR (plano de control)
- SDU (infraestructura del sistema SAP)
- WORKLOAD_ZONE (zona de carga de trabajo)
Nombres de conjuntos de disponibilidad
Los nombres de los conjuntos de disponibilidad se definen en la availabilityset_names
estructura . En el ejemplo siguiente se enumeran los nombres del conjunto de disponibilidad para una implementación.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Nombres de almacenes de clave
Los nombres de los almacenes de claves se definen en la estructura keyvault_names
. En el ejemplo siguiente se enumeran los nombres del almacén de claves para una implementación en el entorno de Oeste de Europa DEV
.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
Los nombres del almacén de claves deben ser únicos en Azure. SAP Deployment Automation Framework anexa tres caracteres aleatorios (ABC en el ejemplo) al final del nombre del almacén de claves para reducir la probabilidad de conflictos de nombres.
Actualmente no se usan los private_access
nombres.
Nombres de cuenta de almacenamiento
Los nombres de las cuentas de almacenamiento se definen en la storageaccount_names
estructura . En el ejemplo siguiente se enumeran los nombres de cuenta de almacenamiento de una implementación en el entorno DEV
de Europa Occidental.
"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"
}
}
Los nombres del almacén de claves deben ser únicos en Azure. SAP Deployment Automation Framework anexa tres caracteres aleatorios (abc en el ejemplo) al final del nombre del almacén de claves para reducir la probabilidad de conflictos de nombres.
Nombres de las máquinas virtuales
Los nombres de las máquinas virtuales se definen en la virtualmachine_names
estructura . Se pueden proporcionar tanto el equipo como los nombres de las máquinas virtuales.
En el ejemplo siguiente se enumeran los nombres de máquina virtual de una implementación en el DEV
entorno de Oeste de Europa. La implementación tiene un servidor de bases de datos, dos servidores de aplicaciones, un servidor de servicios centrales y un distribuidor 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"
]
}
Configuración del módulo de nomenclatura personalizado
Hay varios archivos dentro del módulo para asignar nombres a los recursos:
- Los nombres de máquina virtual y equipo se definen en (
vm.tf
). - La nomenclatura del grupo de recursos se define en (
resourcegroup.tf
). - Los almacenes de claves se definen en (
keyvault.tf
). - Los sufijos de recursos se definen en (
variables_local.tf
).
Los distintos nombres de recursos se identifican mediante prefijos en el código de Terraform:
- Las implementaciones del implementador de SAP usan nombres de recursos con el prefijo
deployer_
. - Las implementaciones de la biblioteca SAP utilizan nombres de recursos con el prefijo
library
. - Las implementaciones horizontales de SAP usan nombres de recursos con el prefijo
vnet_
. - Las implementaciones del sistema SAP usan nombres de recursos con el prefijo
sdu_
.
Los nombres calculados se devuelven en un diccionario de datos, que se usa en todos los módulos de Terraform.
Uso de nombres personalizados
Algunos de los nombres de recursos se pueden cambiar proporcionando parámetros en el tfvars
archivo de parámetros.
Recurso | Parámetro | Notas |
---|---|---|
Prefix |
custom_prefix |
Se usa como prefijo para todos los recursos del grupo de recursos. |
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 |
Cambio del módulo de nomenclatura
Para preparar el entorno de Terraform para la nomenclatura personalizada, primero debe crear un módulo de nomenclatura personalizado. La manera más fácil es copiar el módulo existente y realizar los cambios necesarios en el módulo copiado.
- Cree una carpeta de nivel raíz en el entorno de Terraform. Un ejemplo es
Azure_SAP_Automated_Deployment
. - Vaya a la nueva carpeta de nivel raíz.
- Clona el repositorio del marco de automatización. Este paso crea una nueva carpeta
sap-automation
. - Cree una carpeta dentro de la carpeta de nivel raíz denominada
Contoso_naming
. - Vaya a la carpeta
sap-automation
. - Consulte la rama adecuada en Git.
- Vaya a
\deploy\terraform\terraform-units\modules
dentro de lasap-automation
carpeta . - Copie la carpeta
sap_namegenerator
en laContoso_naming
carpeta .
Se llama al módulo de nomenclatura desde las carpetas raíz 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
}
A continuación, debe apuntar los demás archivos del módulo de Terraform al módulo de nomenclatura personalizado. Estos archivos de módulo incluyen:
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
Para cada archivo, cambie el origen del módulo sap_namegenerator
para que apunte a la nueva ubicación del módulo de nomenclatura. Por ejemplo:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
se convierte en module "sap_namegenerator" { source = "../../../../Contoso_naming"
.
Cambio de la lógica de nomenclatura del grupo de recursos
Para cambiar la lógica de nomenclatura del grupo de recursos, vaya a la carpeta del módulo de nomenclatura personalizada (por ejemplo, Workspaces\Contoso_naming
). A continuación, edite el archivo resourcegroup.tf
. Modifique el código siguiente con su propia lógica de nomenclatura.
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)
}
Cambio de sufijos de recursos
Para cambiar los sufijos de recursos, vaya a la carpeta del módulo de nomenclatura personalizada (por ejemplo, Workspaces\Contoso_naming
). A continuación, edite el archivo variables_local.tf
. Modifique el siguiente mapa con sus propios sufijos de recursos.
Nota:
Solo cambie los valores del mapa. No cambie la clave del mapa, que utiliza el código de Terraform.
Por ejemplo, si desea cambiar el nombre del componente de interfaz de red de administrador, cambie "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"
}
}