Konfigurowanie niestandardowego nazewnictwa dla platformy automatyzacji
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 + resource_group_prefix + 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 przesłonięcia nazw przy użyciu pliku JSON
Niestandardowy plik JSON nazewnictwa można określić w tfvars
pliku parametrów przy użyciu 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 magazynów kluczy
Nazwy magazynów kluczy są definiowane w keyvault_names
strukturze. W poniższym przykładzie wymieniono nazwy magazynów kluczy dla wdrożenia w DEV
środowisku w regionie Europa Zachodnia.
"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. Struktura 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 private_access
nie są obecnie używane.
Nazwy kont magazynu
Nazwy kont magazynu są zdefiniowane w storageaccount_names
strukturze. W poniższym przykładzie wymieniono nazwy kont magazynu dla wdrożenia w DEV
środowisku w regionie Europa Zachodnia.
"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 poziome 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 | Uwagi |
---|---|---|
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ł nazewnictwa. 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. Może to być na przykład
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 folderu
sap-automation
. - Zapoznaj się z odpowiednią gałęzią w usłudze Git.
- Przejdź do
\deploy\terraform\terraform-units\modules
sap-automation
folderu . - Skopiuj folder
sap_namegenerator
doContoso_naming
folderu .
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.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
Dla każdego pliku zmień źródło modułu sap_namegenerator
, aby wskazywało lokalizację nowego modułu nazewnictwa. 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"
}
}