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.

  1. Maak een map op hoofdniveau in uw Terraform-omgeving. Een voorbeeld is 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 map sap-automation.
  6. Bekijk de juiste vertakking in Git.
  7. Ga naar \deploy\terraform\terraform-units\modules de sap-automation map.
  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
}

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"

  }
}

Volgende stap