Aangepaste naamgeving configureren voor SAP Deployment Automation Framework

SAP Deployment Automation Framework maakt gebruik van een standaardnaamconventie voor de Azure-resources die worden geïmplementeerd. Als de standaardnamen niet overeenkomen met de naamgevingsstandaarden van uw organisatie of als u naamconflicten tussen Azure-abonnementen wilt voorkomen, kunt u deze overschrijven met uw eigen namen.

In dit artikel leest u hoe u aangepaste resourcenamen kunt opgeven met behulp van een JSON-onderdrukkingsbestand of door de Terraform-naamgevingsmodule rechtstreeks te wijzigen.

Vereiste voorwaarden

Naamoverschrijvingen opgeven met behulp van een JSON-bestand

De Terraform-module sap_namegenerator definieert de namen van alle resources die door het 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.

Naamgeving van resources maakt gebruik van de volgende indeling:

resource prefix + resource_group_prefix + separator + resource name + resource suffix.

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 (workload zone)

Namen van beschikbaarheidssets definiëren

Namen van beschikbaarheidssets worden gedefinieerd in de availabilityset_names structuur. In het volgende voorbeeld ziet u de namen van de beschikbaarheidssets voor een implementatie.

  "availabilityset_names" : {
        "app": "app-avset",
        "db" : "db-avset",
        "scs": "scs-avset",
        "web": "web-avset"
    }

Key Vault-namen definiëren

Namen van sleutelkluizen worden gedefinieerd in de keyvault_names structuur. In het volgende voorbeeld ziet u de namen van de sleutelkluizen voor een implementatie in de DEV, omgeving in West-Europa.

"keyvault_names": {
        "DEPLOYER": {
            "private_access": "DEVWEEUprvtABC",
            "user_access": "DEVWEEUuserABC"
        },
        "SDU": {
            "private_access": "DEVWEEUSAP01X00pABC",
            "user_access": "DEVWEEUSAP01X00uABC"
        },
        "WORKLOAD_ZONE": {
            "private_access": "DEVWEEUSAP01prvtABC",
            "user_access": "DEVWEEUSAP01userABC"
        }
    }

Sleutelkluisnamen 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 niet gebruikt.

Namen van opslagaccounts definiëren

Namen van 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 West-Europa.

"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"
        }
    }

Namen van opslagaccounts 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 het opslagaccount om de kans op naamconflicten te verminderen.

Namen van virtuele machines definiëren

Namen van virtuele machines worden gedefinieerd in de virtualmachine_names structuur. U kunt zowel de computernaam als de naam van de virtuele machine opgeven.

In het volgende voorbeeld ziet u de namen van virtuele machines 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

De module bevat meerdere bestanden 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.
  • Resource-achtervoegsels worden gedefinieerd in variables_local.tf.

De volgende voorvoegsels in de Terraform-code identificeren de resourcenamen:

  • SAP-implementaties gebruiken resourcenamen met het voorvoegsel deployer_.
  • SAP-bibliotheekimplementaties gebruiken resourcenamen met het voorvoegsel library.
  • SAP-implementaties gebruiken resourcebenamingen 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

U kunt sommige resourcenamen wijzigen door parameters op te geven in het tfvars parameterbestand.

Hulpbron Maatstaf Opmerkingen
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

De naamgevingsmodule wijzigen

Als u uw Terraform-omgeving wilt voorbereiden voor aangepaste naamgeving, maakt u een aangepaste naamgevingsmodule. De eenvoudigste manier is om de bestaande module te kopiëren en de vereiste wijzigingen aan te brengen in de gekopieerde module.

  1. Maak een map op hoofdniveau in uw Terraform-omgeving. Bijvoorbeeld: Azure_SAP_Automated_Deployment.
  2. Ga naar de nieuwe map op hoofdniveau.
  3. Kloon de opslagplaats voor het Automation-framework. Met deze stap maakt u een nieuwe map sap-automation.
  4. Maak een map in de map op hoofdniveau met de naam Contoso_naming.
  5. Ga naar de sap-automation map.
  6. Bekijk de geschikte tak in Git.
  7. Ga naar \deploy\terraform\terraform-units\modules binnen de map sap-automation.
  8. Kopieer de map sap_namegenerator naar de Contoso_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
}

Verwijs vervolgens uw andere Terraform-modulebestanden 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. Voorbeeld:

module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator" wordt module "sap_namegenerator" { source = "../../../../Contoso_naming".

Naamgevingslogica voor resourcegroepen wijzigen

Ga als volgt te werk om de naamgevingslogica van uw resourcegroep te wijzigen:

  1. Ga naar de map met aangepaste naamgevingsmodules (bijvoorbeeld Workspaces\Contoso_naming).
  2. Open het bestand resourcegroup.tf.
  3. 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)

}

Achtervoegsels van bronnen wijzigen

Om uw resourceachtervoegsels te wijzigen:

  1. Ga naar de map met aangepaste naamgevingsmodules (bijvoorbeeld Workspaces\Contoso_naming).
  2. Open het bestand variables_local.tf.
  3. Wijzig de volgende kaart met uw eigen resourceachtervoegsels.

Opmerking

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"

  }
}