Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Platforma SAP Deployment Automation Framework używa standardowej konwencji nazewnictwa zasobów platformy Azure.
Moduł Terraform sap_namegenerator definiuje nazwy wszystkich zasobów wdrażanych przez platformę automatyzacji. Moduł znajduje się /deploy/terraform/terraform-units/modules/sap_namegenerator/ w repozytorium. Platforma obsługuje również podawanie własnych nazw niektórych zasobów przy użyciu plików parametrów.
Nazewnictwo zasobów używa następującego formatu:
prefiks zasobu + prefiks grupy zasobów + separator + nazwa zasobu + sufiks zasobu.
Jeśli te możliwości nie są wystarczające, możesz również użyć niestandardowej logiki nazewnictwa, podając niestandardowy plik JSON zawierający nazwy zasobów lub modyfikując moduł nazewnictwa używany przez automatyzację.
Podaj nadpisania nazw przy użyciu pliku JSON
Możesz określić niestandardowy plik JSON nazewnictwa w pliku parametrów tfvars za pomocą parametru name_override_file.
Plik JSON zawiera sekcje dla różnych typów zasobów.
Typy wdrożeń to:
- DEPLOYER (płaszczyzna sterowania)
- SDU (infrastruktura systemu SAP)
- WORKLOAD_ZONE (strefa obciążenia)
Nazwy zestawów dostępności
Nazwy zestawów dostępności są zdefiniowane w availabilityset_names strukturze. W poniższym przykładzie wymieniono nazwy zestawów dostępności dla wdrożenia.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Nazwy skarbców kluczy
Nazwy skarbców kluczy są definiowane w strukturze keyvault_names. W poniższym przykładzie wymieniono nazwy magazynów kluczy dla wdrożenia w środowisku DEV w Europie Zachodniej.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
Nazwy magazynów kluczy muszą być unikatowe na platformie Azure. SAP Deployment Automation Framework dołącza trzy losowe znaki (ABC w przykładzie) na końcu nazwy sejfu kluczy, aby zmniejszyć prawdopodobieństwo konfliktu nazw.
Nazwy private_access nie są obecnie używane.
Nazwy kont magazynu
Nazwy kont magazynowych są zdefiniowane w storageaccount_names strukturze. W poniższym przykładzie wymieniono nazwy kont magazynu dla wdrożenia w środowisku DEV w Europie Zachodniej.
"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"
}
}
Nazwy magazynów kluczy muszą być unikatowe na platformie Azure. Platforma SAP Deployment Automation Framework dołącza trzy losowe znaki (abc w przykładzie) na końcu nazwy magazynu kluczy, aby zmniejszyć prawdopodobieństwo konfliktów nazw.
Nazwy maszyn wirtualnych
Nazwy maszyn wirtualnych są zdefiniowane w virtualmachine_names strukturze. Można podać nazwy komputerów i maszyn wirtualnych.
W poniższym przykładzie wymieniono nazwy maszyn wirtualnych dla wdrożenia w DEV środowisku w regionie Europa Zachodnia. Wdrożenie ma serwer bazy danych, dwa serwery aplikacji, serwer usług centralnych i dyspozytor internetowy.
"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"
]
}
Konfigurowanie niestandardowego modułu nazewnictwa
Istnieje wiele plików w module nazewnictwa zasobów:
- Nazwy maszyn wirtualnych i komputerów są zdefiniowane w pliku (
vm.tf). - Nazewnictwo grup zasobów jest definiowane w pliku (
resourcegroup.tf). - Magazyny kluczy są zdefiniowane w pliku (
keyvault.tf). - Sufiksy zasobów są definiowane w elemencie (
variables_local.tf).
Różne nazwy zasobów są identyfikowane przez prefiksy w kodzie programu Terraform:
- Wdrożenia programu SAP Deployer używają nazw zasobów z prefiksem
deployer_. - Wdrożenia bibliotek SAP używają nazw zasobów z prefiksem
library. - Wdrożenia krajobrazu SAP używają nazw zasobów z prefiksem
vnet_. - Wdrożenia systemu SAP używają nazw zasobów z prefiksem
sdu_.
Nazwy obliczeniowe są zwracane w słowniku danych, który jest używany przez wszystkie moduły programu Terraform.
Używanie nazw niestandardowych
Niektóre nazwy zasobów można zmienić, podając parametry w pliku parametrów tfvars .
| Zasób | Parametr | Notatki |
|---|---|---|
Prefix |
custom_prefix |
Używany jako prefiks dla wszystkich zasobów w grupie zasobów |
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 |
Zmienianie modułu nazewnictwa
Aby przygotować środowisko Terraform do nazewnictwa niestandardowego, najpierw należy utworzyć niestandardowy moduł do nadawania nazw. Najprostszym sposobem jest skopiowanie istniejącego modułu i wprowadzenie wymaganych zmian w skopiowanych modułach.
- Utwórz folder na poziomie głównym w środowisku programu Terraform. Przykładem jest
Azure_SAP_Automated_Deployment. - Przejdź do nowego folderu na poziomie głównym.
- Sklonuj repozytorium struktury automatyzacji. W tym kroku zostanie utworzony nowy folder
sap-automation. - Utwórz folder w folderze na poziomie głównym o nazwie
Contoso_naming. - Przejdź do
sap-automationfolderu. - Zapoznaj się z odpowiednią gałęzią w usłudze Git.
- Przejdź do
\deploy\terraform\terraform-units\modulesw folderzesap-automation. - Skopiuj folder
sap_namegeneratordoContoso_namingfolderu .
Moduł nazewnictwa jest wywoływany z folderów głównych 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
}
Następnie należy wskazać inne pliki modułów programu Terraform do niestandardowego modułu nazewnictwa. Te pliki modułów obejmują:
deploy\terraform\run\sap_system\module.tfdeploy\terraform\bootstrap\sap_deployer\module.tfdeploy\terraform\bootstrap\sap_library\module.tfdeploy\terraform\run\sap_library\module.tfdeploy\terraform\run\sap_deployer\module.tf
Dla każdego pliku zmień źródło modułu sap_namegenerator , aby wskazywało lokalizację nowego modułu nazewnictwa. Na przykład:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator" staje się module "sap_namegenerator" { source = "../../../../Contoso_naming".
Zmienianie logiki nazewnictwa grup zasobów
Aby zmienić logikę nazewnictwa grupy zasobów, przejdź do niestandardowego folderu modułu nazewnictwa (na przykład Workspaces\Contoso_naming). Następnie zmodyfikuj plik resourcegroup.tf. Zmodyfikuj następujący kod przy użyciu własnej logiki nazewnictwa.
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)
}
Zmienianie sufiksów zasobów
Aby zmienić sufiksy zasobów, przejdź do niestandardowego folderu modułu nazewnictwa (na przykład Workspaces\Contoso_naming). Następnie zmodyfikuj plik variables_local.tf. Zmodyfikuj poniższą mapę przy użyciu własnych sufiksów zasobów.
Uwaga
Zmień tylko wartości mapy. Nie zmieniaj klucza mapy, którego używa kod programu Terraform.
Jeśli na przykład chcesz zmienić nazwę składnika interfejsu sieciowego administratora, zmień wartość "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"
}
}