Freigeben über


Konfigurieren der benutzerdefinierte Benennung für das Automatisierungsframework

SAP Deployment Automation Framework verwendet eine Standardbenennungskonvention für die Azure-Ressourcenbenennung.

Das Terraform-Modul sap_namegenerator definiert die Namen aller Ressourcen, die vom Automatisierungsframework bereitgestellt werden. Das Modul befindet sich im Repository unter /deploy/terraform/terraform-units/modules/sap_namegenerator/. Das Framework unterstützt auch die Bereitstellung eigener Namen für einige der Ressourcen mithilfe der Parameterdateien.

Die Benennung der Ressourcen erfolgt im folgenden Format:

Ressourcenpräfix + Ressourcengruppen_Präfix + Trennzeichen + Ressourcenname + Ressourcensuffix.

Wenn diese Funktionen nicht ausreichen, können Sie auch benutzerdefinierte Benennungslogik verwenden, indem Sie entweder eine benutzerdefinierte JSON-Datei bereitstellen, die die Ressourcennamen enthält, oder indem Sie das von der Automatisierung verwendete Benennungsmodul ändern.

Bereitstellen von Namensüberschreibungen mithilfe einer JSON-Datei

Sie können eine benutzerdefinierte JSON-Benennungsdatei in Der tfvars Parameterdatei angeben, indem Sie den name_override_file Parameter verwenden.

Die JSON-Datei enthält Abschnitte für die verschiedenen Ressourcentypen.

Die Bereitstellungstypen sind:

  • DEPLOYER (Steuerebene)
  • SDU (SAP-Systeminfrastruktur)
  • WORKLOAD_ZONE (Workloadzone)

Namen der Verfügbarkeitsgruppe

Die Namen für die Verfügbarkeitssätze werden in der availabilityset_names Struktur definiert. Im folgenden Beispiel werden die Namen des Verfügbarkeitssatzes für eine Bereitstellung aufgelistet.

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

Schlüsseltresornamen

Die Namen für die Schlüsseltresor werden in der keyvault_names Struktur definiert. Im folgenden Beispiel werden die Schlüsseltresornamen für eine Bereitstellung in der DEV Umgebung in Westeuropa aufgeführt.

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

Die Schlüsseltresornamen müssen in Azure eindeutig sein. DAS SAP Deployment Automation Framework fügt drei zufällige Zeichen (ABC im Beispiel) am Ende des Schlüsseltresornamens an, um die Wahrscheinlichkeit von Namenskonflikten zu verringern.

Die private_access Namen werden derzeit nicht verwendet.

Speicherkontonamen

Die Namen für die Speicherkonten werden in der storageaccount_names Struktur definiert. Im folgenden Beispiel werden die Namen des Speicherkontos für eine Bereitstellung in der DEV Umgebung in Westeuropa aufgeführt.

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

Die Schlüsseltresornamen müssen in Azure eindeutig sein. DAS SAP Deployment Automation Framework fügt drei zufällige Zeichen (abc im Beispiel) am Ende des Schlüsseltresornamens an, um die Wahrscheinlichkeit für Namenskonflikte zu verringern.

Namen virtueller Computer

Die Namen für die virtuellen Computer werden in der virtualmachine_names Struktur definiert. Sowohl der Name des Computers als auch der des virtuellen Computers kann bereitgestellt werden.

Im folgenden Beispiel werden die Namen des virtuellen Computers für eine Bereitstellung in der DEV Umgebung in Westeuropa aufgeführt. Die Bereitstellung verfügt über einen Datenbankserver, zwei Anwendungsserver, einen zentralen Dienstserver und einen 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"
        ]
    }

Konfigurieren des benutzerdefinierten Benennungsmoduls

Das Modul enthält mehrere Dateien zum Benennen von Ressourcen:

  • Virtuelle Computer und Computernamen werden in (vm.tf) definiert.
  • Die Ressourcengruppenbenennung wird in (resourcegroup.tf) definiert.
  • Schlüsseltresor sind in (keyvault.tf) definiert.
  • Ressourcensuffixe werden in (variables_local.tf) definiert.

Die verschiedenen Ressourcennamen werden durch Präfixe im Terraform-Code identifiziert:

  • SAP deployer deployments use resource names with the prefix deployer_.
  • SAP-Bibliotheksbereitstellungen verwenden Ressourcennamen mit dem Präfix library.
  • SAP-Querformatbereitstellungen verwenden Ressourcennamen mit dem Präfix vnet_.
  • SAP-Systembereitstellungen verwenden Ressourcennamen mit dem Präfix sdu_.

Die berechneten Namen werden in einem Datenwörterbuch zurückgegeben, das von allen Terraform-Modulen verwendet wird.

Verwenden von benutzerdefinierten Namen

Einige der Ressourcennamen können geändert werden, indem Parameter in der tfvars Parameterdatei bereitgestellt werden.

Resource Parameter Notizen
Prefix custom_prefix Wird als Präfix für alle Ressourcen in der Ressourcengruppe verwendet
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

Ändern des Benennungsmoduls

Um Ihre Terraform-Umgebung für die benutzerdefinierte Benennung vorzubereiten, müssen Sie zuerst ein benutzerdefiniertes Benennungsmodul erstellen. Die einfachste Möglichkeit besteht darin, das vorhandene Modul zu kopieren und die erforderlichen Änderungen im kopierten Modul vorzunehmen.

  1. Erstellen Sie einen Ordner auf Stammebene in Ihrer Terraform-Umgebung. z. B. Azure_SAP_Automated_Deployment.
  2. Wechseln Sie zu Ihrem neuen Ordner auf Stammebene.
  3. Klonen Sie das Repository des Automatisierungsframeworks. Durch diesen Schritt wird ein neuer Ordner sap-automation erstellt.
  4. Erstellen Sie einen Ordner innerhalb des Ordners auf Stammebene mit dem Namen Contoso_naming.
  5. Navigieren Sie zum Ordner sap-automation.
  6. Sehen Sie sich die entsprechende Verzweigung in Git an.
  7. Wechseln Sie in \deploy\terraform\terraform-units\modules den sap-automation Ordner.
  8. Kopieren Sie den Ordner sap_namegenerator in den Ordner Contoso_naming.

Das Benennungsmodul wird aus den Stammordnern terraform aufgerufen:

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
}

Als Nächstes müssen Sie Ihre anderen Terraform-Moduldateien auf Ihr Modul für benutzerdefinierte Benennung verweisen. Zu diesen Moduldateien gehören:

  • 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

Ändern Sie für jede Datei die Quelle für das Modul sap_namegenerator so, dass sie auf den Speicherort Ihres neuen Benennungsmoduls verweist. Beispiel:

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

Ändern der Benennungslogik für Ressourcengruppen

Um die Benennungslogik Ihrer Ressourcengruppe zu ändern, wechseln Sie zu Ihrem benutzerdefinierten Benennungsmodulordner (z. B Workspaces\Contoso_naming. ). Bearbeiten Sie dann die Datei resourcegroup.tf. Ändern Sie den folgenden Code mit Ihrer eigenen Benennungslogik.

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)

}

Ändern von Ressourcensuffixen

Um Die Ressourcensuffixe zu ändern, wechseln Sie zu Ihrem benutzerdefinierten Benennungsmodulordner (z. B Workspaces\Contoso_naming. ). Bearbeiten Sie dann die Datei variables_local.tf. Ändern Sie die folgende Zuordnung mit Ihren eigenen Ressourcensuffixen.

Hinweis

Ändern Sie nur die Werte der Zuordnung. Ändern Sie nicht den Schlüssel der Zuordnung, der vom Terraform-Code verwendet wird. Wenn Sie beispielsweise die Netzwerkschnittstellenkomponente des Administrators umbenennen möchten, ändern Sie "admin-nic" = "-admin-nic" in "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"

  }
}

Nächster Schritt