Sdílet prostřednictvím


Konfigurace vlastního pojmenování pro architekturu automatizace

Rozhraní SAP Deployment Automation Framework používá pro pojmenování prostředků Azure standardní zásady vytváření názvů.

Modul sap_namegenerator Terraform definuje názvy všech prostředků, které nasadí architektura automatizace. Modul se nachází v /deploy/terraform/terraform-units/modules/sap_namegenerator/ úložišti. Architektura také podporuje poskytování vlastních názvů některých prostředků pomocí souborů parametrů.

Pojmenování prostředků používá následující formát:

předpona prostředku + resource_group_prefix + oddělovač + název prostředku + přípona prostředku.

Pokud tyto funkce nestačí, můžete také použít vlastní logiku pojmenování tak, že zadáte vlastní soubor JSON, který obsahuje názvy prostředků, nebo upravíte modul pojmenování používaný automatizací.

Zadání přepsání názvů pomocí souboru JSON

Pomocí parametru name_override_file můžete zadat vlastní název souboru JSON v tfvars souboru parametrů.

Soubor JSON obsahuje oddíly pro různé typy prostředků.

Typy nasazení:

  • DEPLOYER (řídicí rovina)
  • SDU (systémová infrastruktura SAP)
  • WORKLOAD_ZONE (zóna úloh)

Názvy skupin dostupnosti

Názvy skupin dostupnosti jsou definovány ve struktuře availabilityset_names . Následující příklad uvádí názvy skupin dostupnosti pro nasazení.

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

Názvy trezorů klíčů

Názvy trezorů klíčů jsou definovány ve struktuře keyvault_names . Následující příklad uvádí názvy trezorů klíčů pro nasazení v DEV prostředí v oblasti Západní Evropa.

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

Názvy trezorů klíčů musí být v Rámci Azure jedinečné. Sap Deployment Automation Framework připojí na konec názvu trezoru klíčů tři náhodné znaky (v příkladu ABC), aby se snížila pravděpodobnost konfliktů názvů.

Názvy private_access se v současné době nepoužívají.

Názvy účtů úložiště

Názvy účtů úložiště jsou definovány ve struktuře storageaccount_names . Následující příklad uvádí názvy účtů úložiště pro nasazení v DEV prostředí v oblasti Západní Evropa.

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

Názvy trezorů klíčů musí být v Rámci Azure jedinečné. Sap Deployment Automation Framework připojí na konec názvu trezoru klíčů tři náhodné znaky (v příkladu abc), aby se snížila pravděpodobnost konfliktů názvů.

Názvy virtuálních počítačů

Názvy virtuálních počítačů jsou definovány ve struktuře virtualmachine_names . Je možné zadat názvy počítačů i virtuálních počítačů.

Následující příklad uvádí názvy virtuálních počítačů pro nasazení v DEV prostředí v oblasti Západní Evropa. Nasazení má databázový server, dva aplikační servery, centrální server služeb a webový dispečer.

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

Konfigurace vlastního modulu pojmenování

Pro pojmenování prostředků v rámci modulu je k dispozici více souborů:

  • Názvy virtuálních počítačů apočítačůchvm.tf
  • Pojmenování skupin prostředků je definováno v (resourcegroup.tf).
  • Trezory klíčů jsou definovány v (keyvault.tf).
  • Přípony prostředků jsou definovány v (variables_local.tf).

Různé názvy prostředků jsou identifikovány předponami v kódu Terraformu:

  • Nasazení nasazovače SAP používají názvy prostředků s předponou deployer_.
  • Nasazení knihovny SAP používají názvy prostředků s předponou library.
  • Nasazení na šířku SAP používají názvy prostředků s předponou vnet_.
  • Nasazení systému SAP používají názvy prostředků s předponou sdu_.

Počítané názvy se vrátí ve slovníku dat, který používají všechny moduly Terraformu.

Použití vlastních názvů

Některé názvy prostředků je možné změnit zadáním parametrů v tfvars souboru parametrů.

Prostředek Parametr Notes
Prefix custom_prefix Používá se jako předpona pro všechny prostředky ve skupině prostředků.
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

Změna modulu pojmenování

Pokud chcete připravit prostředí Terraformu na vlastní pojmenování, musíte nejprve vytvořit vlastní modul pojmenování. Nejjednodušším způsobem je zkopírovat existující modul a provést požadované změny v zkopírovaných modulech.

  1. Vytvořte v prostředí Terraformu kořenovou složku. Příklad: Azure_SAP_Automated_Deployment.
  2. Přejděte do nové kořenové složky.
  3. Naklonujte úložiště architektury automation. Tento krok vytvoří novou složku sap-automation.
  4. Vytvořte složku v kořenové složce s názvem Contoso_naming.
  5. Přejděte do složky sap-automation.
  6. Podívejte se na příslušnou větev v Gitu.
  7. Přejděte do \deploy\terraform\terraform-units\modules složky sap-automation .
  8. Zkopírujte složku sap_namegenerator do Contoso_naming složky.

Modul pojmenování se volá z kořenových terraform složek:

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
}

Dále musíte nasměrovat ostatní soubory modulu Terraformu na vlastní modul pojmenování. Mezi tyto soubory modulů patří:

  • 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

U každého souboru změňte zdroj modulu sap_namegenerator tak, aby odkazovat na umístění nového modulu pojmenování. Příklad:

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

Změna logiky pojmenování skupin prostředků

Pokud chcete změnit logiku pojmenování skupiny prostředků, přejděte do vlastní složky modulu pojmenování (například Workspaces\Contoso_naming). Pak upravte soubor resourcegroup.tf. Upravte následující kód vlastní logikou pojmenování.

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)

}

Změna přípon prostředků

Pokud chcete změnit přípony prostředků, přejděte do vlastní složky modulu pojmenování (například Workspaces\Contoso_naming). Pak upravte soubor variables_local.tf. Upravte následující mapu s vlastními příponami prostředků.

Poznámka:

Změňte pouze hodnoty mapy. Neměňte klíč mapy, který používá kód Terraformu. Pokud například chcete přejmenovat součást síťového rozhraní správce, změňte "admin-nic" = "-admin-nic" na "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"

  }
}

Další krok