Freigeben über


Konfigurieren der benutzerdefinierten Benennung für SAP Deployment Automation Framework

SAP Deployment Automation Framework verwendet eine Standardbenennungskonvention für die bereitgestellten Azure-Ressourcen. Wenn die Standardnamen nicht den Benennungsstandards Ihrer Organisation entsprechen oder Wenn Sie Namenskonflikte in Azure-Abonnements vermeiden müssen, können Sie sie mit Ihren eigenen Namen überschreiben.

In diesem Artikel wird erläutert, wie Sie benutzerdefinierte Ressourcennamen mithilfe einer JSON-Außerkraftsetzungsdatei oder durch direktes Ändern des Terraform-Benennungsmoduls bereitstellen.

Voraussetzungen

Bereitstellen von Namensaußerkraftsetzungen mithilfe einer JSON-Datei

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

Die Ressourcenbenennung verwendet das folgende Format:

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

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 (Steuerungsebene)
  • SDU (SAP-Systeminfrastruktur)
  • WORKLOAD_ZONE (Arbeitslastbereich)

Definieren von Verfügbarkeitssatznamen

Verfügbarkeitssatznamen werden in der availabilityset_names Struktur definiert. Das folgende Beispiel zeigt die Namen der Verfügbarkeitsgruppe für eine Bereitstellung.

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

Definieren von Schlüsseltresornamen

Schlüsseltresornamen werden in der Struktur keyvault_names definiert. Das folgende Beispiel zeigt die Schlüsseltresornamen für eine Bereitstellung in der DEV Umgebung in „Europa, Westen“ an.

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

Schlüsseltresornamen müssen in Azure eindeutig sein. Das SAP Deployment Automation Framework fügt zum Schlüsselbundnamen drei zufällige Zeichen (ABC im Beispiel) hinzu, um die Wahrscheinlichkeit von Namenskonflikten zu verringern.

Die private_access Namen werden nicht verwendet.

Definieren von Speicherkontonamen

Speicherkontonamen werden in der storageaccount_names Struktur definiert. Das folgende Beispiel zeigt die Speicherkontonamen für eine Bereitstellung in der DEV Umgebung in „Europa, Westen“ an.

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

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

Definieren von Namen virtueller Computer

Namen virtueller Computer werden in der virtualmachine_names Struktur definiert. Sie können sowohl den Computernamen als auch den Namen des virtuellen Computers angeben.

Das folgende Beispiel zeigt die Namen der virtuellen Computer für eine Bereitstellung in der DEV Umgebung in Westeuropa. 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.tfdefiniert.
  • Die Benennung von Ressourcengruppen wird in resourcegroup.tfdefiniert.
  • Die Schlüsseltresore sind in keyvault.tf definiert.
  • Die Ressourcensuffixe sind in variables_local.tf definiert.

Die folgenden Präfixe im Terraform-Code identifizieren die Ressourcennamen:

  • SAP-Deployer-Deployments verwenden Ressourcennamen mit dem Präfix deployer_.
  • SAP-Bibliotheksbereitstellungen verwenden Ressourcennamen mit dem Präfix library.
  • SAP-Landschaftsbereitstellungen 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

Sie können einige Ressourcennamen ändern, indem Sie Parameter in der tfvars Parameterdatei angeben.

Ressource Parameter Hinweise
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

Ändern des Benennungsmoduls

Um Ihre Terraform-Umgebung für die benutzerdefinierte Benennung vorzubereiten, erstellen Sie ein benutzerdefiniertes Benennungsmodul. 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. Beispiel: Azure_SAP_Automated_Deployment.
  2. Wechseln Sie zu Ihrem neuen Ordner auf Stammebene.
  3. Klonen Sie das Automatisierungsframework-Repository. In diesem Schritt wird ein neuer Ordner sap-automationerstellt.
  4. Erstellen Sie einen Ordner innerhalb des Stammordners namens Contoso_naming.
  5. Navigieren Sie zum Ordner sap-automation.
  6. Sehen Sie sich den entsprechenden Branch in Git an.
  7. Gehen Sie zu \deploy\terraform\terraform-units\modules im Ordner sap-automation.
  8. Kopieren Sie den Ordner sap_namegenerator in den Contoso_naming Ordner.

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 weisen Sie Ihre anderen Terraform-Moduldateien auf Ihr benutzerdefiniertes Benennungsmodul hin. 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 des 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

So ändern Sie die Benennungslogik Ihrer Ressourcengruppe:

  1. Wechseln Sie zu Ihrem benutzerdefinierten Benennungsmodulordner (z. B Workspaces\Contoso_naming. ).
  2. Öffnen Sie die Datei resourcegroup.tf .
  3. Ä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

So ändern Sie Ihre Ressourcensuffixe:

  1. Wechseln Sie zu Ihrem benutzerdefinierten Benennungsmodulordner (z. B Workspaces\Contoso_naming. ).
  2. Öffnen Sie die Datei variables_local.tf .
  3. Passen Sie die folgende Karte mit Ihren eigenen Suffixen für Ressourcen an.

Hinweis

Ändern Sie nur die Kartenwerte. Ändern Sie nicht den Kartenschlüssel, den der Terraform-Code verwendet. Wenn Sie beispielsweise die Netzwerkschnittstellenkomponente des Administrators umbenennen möchten, wechseln Sie "admin-nic" = "-admin-nic" zu "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"

  }
}