Aangepaste naamgeving configureren voor het automation-framework
SAP Deployment Automation Framework maakt gebruik van een standaardnaamconventie voor naamgeving van Azure-resources.
De Terraform-module sap_namegenerator
definieert de namen van alle resources die door het automation-framework worden geïmplementeerd. De module bevindt zich in /deploy/terraform/terraform-units/modules/sap_namegenerator/
de opslagplaats. Het framework biedt ook ondersteuning voor het leveren van uw eigen namen voor sommige resources met behulp van de parameterbestanden.
De naamgeving van de resources gebruikt de volgende indeling:
resourcevoorvoegsel + resource_group_prefix + scheidingsteken + resourcenaam + resourceachtervoegsel.
Als deze mogelijkheden niet voldoende zijn, kunt u ook aangepaste naamgevingslogica gebruiken door een aangepast JSON-bestand op te geven dat de resourcenamen bevat of door de naamgevingsmodule te wijzigen die door de automatisering wordt gebruikt.
Naamoverschrijvingen opgeven met behulp van een JSON-bestand
U kunt een aangepast JSON-naamgevingsbestand opgeven in uw tfvars
parameterbestand met behulp van de name_override_file
parameter.
Het JSON-bestand bevat secties voor de verschillende resourcetypen.
De implementatietypen zijn:
- DEPLOYER (besturingsvlak)
- SDU (SAP-systeeminfrastructuur)
- WORKLOAD_ZONE (workloadzone)
Namen van beschikbaarheidssets
De namen voor de beschikbaarheidssets worden gedefinieerd in de availabilityset_names
structuur. In het volgende voorbeeld worden de namen van de beschikbaarheidssets voor een implementatie vermeld.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Sleutelkluisnamen
De namen voor de sleutelkluizen worden gedefinieerd in de keyvault_names
structuur. In het volgende voorbeeld ziet u de namen van de sleutelkluis voor een implementatie in de DEV
omgeving in Europa - west.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
De namen van de sleutelkluis moeten uniek zijn in Azure. SAP Deployment Automation Framework voegt drie willekeurige tekens (ABC in het voorbeeld) toe aan het einde van de sleutelkluisnaam om de kans op naamconflicten te verminderen.
De private_access
namen worden momenteel niet gebruikt.
Namen van opslagaccounts
De namen voor de opslagaccounts worden gedefinieerd in de storageaccount_names
structuur. In het volgende voorbeeld ziet u de namen van het opslagaccount voor een implementatie in de DEV
omgeving in Europa - west.
"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"
}
}
De namen van de sleutelkluis moeten uniek zijn in Azure. SAP Deployment Automation Framework voegt drie willekeurige tekens (abc in het voorbeeld) toe aan het einde van de naam van de sleutelkluis om de kans op naamconflicten te verminderen.
Namen van virtuele machines
De namen voor de virtuele machines worden gedefinieerd in de virtualmachine_names
structuur. Zowel de computer- als de namen van de virtuele machines kunnen worden opgegeven.
In het volgende voorbeeld worden de namen van virtuele machines vermeld voor een implementatie in de DEV
omgeving in Europa - west. De implementatie heeft een databaseserver, twee toepassingsservers, een centrale servicesserver en een web-dispatcher.
"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"
]
}
De aangepaste naamgevingsmodule configureren
Er zijn meerdere bestanden in de module voor het benoemen van resources:
- Namen van virtuele machines en computers worden gedefinieerd in (
vm.tf
). - Naamgeving van resourcegroepen wordt gedefinieerd in (
resourcegroup.tf
). - Sleutelkluizen worden gedefinieerd in (
keyvault.tf
). - Resourceachtervoegsels worden gedefinieerd in (
variables_local.tf
).
De verschillende resourcenamen worden geïdentificeerd door voorvoegsels in de Terraform-code:
- SAP-implementaties gebruiken resourcenamen met het voorvoegsel
deployer_
. - SAP-bibliotheekimplementaties gebruiken resourcenamen met het voorvoegsel
library
. - SAP-implementaties gebruiken resourcenamen met het voorvoegsel
vnet_
. - SAP-systeemimplementaties gebruiken resourcenamen met het voorvoegsel
sdu_
.
De berekende namen worden geretourneerd in een gegevenswoordenlijst, die wordt gebruikt door alle Terraform-modules.
Aangepaste namen gebruiken
Sommige resourcenamen kunnen worden gewijzigd door parameters op te geven in het tfvars
parameterbestand.
Resource | Parameter | Aantekeningen |
---|---|---|
Prefix |
custom_prefix |
Wordt gebruikt als voorvoegsel voor alle resources in de resourcegroep |
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 |
De naamgevingsmodule wijzigen
Als u uw Terraform-omgeving wilt voorbereiden voor aangepaste naamgeving, moet u eerst een aangepaste naamgevingsmodule maken. De eenvoudigste manier is om de bestaande module te kopiëren en de vereiste wijzigingen aan te brengen in de gekopieerde module.
- Maak een map op hoofdniveau in uw Terraform-omgeving. Een voorbeeld is
Azure_SAP_Automated_Deployment
. - Ga naar de nieuwe map op hoofdniveau.
- Kloon de opslagplaats voor het Automation-framework. Met deze stap maakt u een nieuwe map
sap-automation
. - Maak een map in de map op hoofdniveau met de naam
Contoso_naming
. - Ga naar de map
sap-automation
. - Bekijk de juiste vertakking in Git.
- Ga naar
\deploy\terraform\terraform-units\modules
desap-automation
map. - Kopieer de map
sap_namegenerator
naar deContoso_naming
map.
De naamgevingsmodule wordt aangeroepen vanuit de hoofdmappen 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
}
Vervolgens moet u uw andere Terraform-modulebestanden verwijzen naar uw aangepaste naamgevingsmodule. Deze modulebestanden omvatten:
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
Wijzig voor elk bestand de bron voor de module sap_namegenerator
zodat deze verwijst naar de locatie van de nieuwe naamgevingsmodule. Bijvoorbeeld:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
wordt module "sap_namegenerator" { source = "../../../../Contoso_naming"
.
Naamgevingslogica voor resourcegroepen wijzigen
Als u de naamgevingslogica van de resourcegroep wilt wijzigen, gaat u naar de map met aangepaste naamgevingsmodules (bijvoorbeeld Workspaces\Contoso_naming
). Bewerk vervolgens het bestand resourcegroup.tf
. Wijzig de volgende code met uw eigen naamgevingslogica.
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)
}
Resourceachtervoegsels wijzigen
Als u de achtervoegsels van de resource wilt wijzigen, gaat u naar de map met aangepaste naamgevingsmodules (bijvoorbeeld Workspaces\Contoso_naming
). Bewerk vervolgens het bestand variables_local.tf
. Wijzig de volgende kaart met uw eigen resourceachtervoegsels.
Notitie
Wijzig alleen de kaartwaarden. Wijzig de kaartsleutel niet, die door de Terraform-code wordt gebruikt.
Als u bijvoorbeeld de naam van het onderdeel van de netwerkinterface van de beheerder wilt wijzigen, gaat u naar "admin-nic" = "-admin-nic"
"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"
}
}