Configurer le nommage personnalisé pour l’infrastructure d’automatisation
SAP Deployment Automation Framework utilise une convention d’affectation de noms standard pour le nommage des ressources Azure.
Le module Terraform sap_namegenerator
définit les noms de toutes les ressources déployées par l’infrastructure d’automatisation. Dans le référentiel, ce module se trouve à l’emplacement /deploy/terraform/terraform-units/modules/sap_namegenerator/
. L’infrastructure prend également en charge la fourniture de vos propres noms pour certaines des ressources à l’aide des fichiers de paramètres.
Le nommage des ressources utilise le format suivant :
préfixe de ressource + resource_group_prefix + séparateur + nom de ressource + suffixe de ressource.
Si ces fonctionnalités ne suffisent pas, vous pouvez également utiliser une logique d’affectation de noms personnalisée en fournissant un fichier JSON personnalisé qui contient les noms de ressources ou en modifiant le module d’affectation de noms utilisé par l’automatisation.
Fournir des remplacements de nom à l’aide d’un fichier JSON
Vous pouvez spécifier un fichier JSON de nommage personnalisé dans votre tfvars
fichier de paramètres à l’aide du name_override_file
paramètre.
Le fichier JSON comporte des sections pour les différents types de ressources.
Les types de déploiement sont les suivants :
- DEPLOYER (plan de contrôle)
- SDU (infrastructure système SAP)
- WORKLOAD_ZONE (zone de charge de travail)
Nom des groupes à haute disponibilité
Les noms des groupes à haute disponibilité sont définis dans la availabilityset_names
structure. L’exemple suivant répertorie les noms des groupes à haute disponibilité pour un déploiement.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Noms de coffre de clés
Les noms des coffres de clés sont définis dans la keyvault_names
structure. L’exemple suivant répertorie les noms de coffre de clés d’un déploiement dans l’environnement DEV
en Europe Ouest.
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
Les noms de coffre de clés doivent être uniques dans Azure. SAP Deployment Automation Framework ajoute trois caractères aléatoires (ABC dans l’exemple) à la fin du nom du coffre de clés afin de réduire la probabilité de conflits de noms.
Les private_access
noms ne sont actuellement pas utilisés.
Noms des comptes de stockage
Les noms des comptes de stockage sont définis dans la storageaccount_names
structure. L’exemple suivant répertorie les noms de compte de stockage d’un déploiement dans l’environnement DEV
en Europe Ouest.
"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"
}
}
Les noms de coffre de clés doivent être uniques dans Azure. SAP Deployment Automation Framework ajoute trois caractères aléatoires (abc dans l’exemple) à la fin du nom du coffre de clés afin de réduire la probabilité de conflits de noms.
Noms des machines virtuelles
Les noms des machines virtuelles sont définis dans la virtualmachine_names
structure. Les noms des ordinateurs et des machines virtuelles peuvent être fournis.
L’exemple suivant répertorie les noms des machines virtuelles pour un déploiement dans l’environnement DEV
en Europe Ouest. Le déploiement a un serveur de base de données, deux serveurs d’applications, un serveur de services centraux et un répartiteur web.
"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"
]
}
Configurer le module d’affectation de noms personnalisé
Il existe plusieurs fichiers dans le module pour nommer les ressources :
- Les noms de machine virtuelle et d’ordinateur sont définis dans (
vm.tf
). - Le nommage du groupe de ressources est défini dans (
resourcegroup.tf
). - Les coffres de clés sont définis dans (
keyvault.tf
). - Les suffixes de ressource sont définis dans (
variables_local.tf
).
Les différents noms de ressources sont identifiés par des préfixes dans le code Terraform :
- Les déploiements du déployeur SAP utilisent des noms de ressources avec le préfixe
deployer_
. - Les déploiements de bibliothèque SAP utilisent des noms de ressources avec le préfixe
library
. - Les déploiements de paysage SAP utilisent des noms de ressources avec le préfixe
vnet_
. - Les déploiements de système SAP utilisent des noms de ressources avec le préfixe
sdu_
.
Les noms calculés sont retournés dans un dictionnaire de données, qui est utilisé par tous les modules Terraform.
Utiliser des noms personnalisés
Certains noms de ressources peuvent être modifiés en fournissant des paramètres dans le tfvars
fichier de paramètres.
Ressource | Paramètre | Notes |
---|---|---|
Prefix |
custom_prefix |
Utilisé comme préfixe pour toutes les ressources du groupe de ressources |
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 |
Modifier le module d’affectation de noms
Pour préparer votre environnement Terraform pour un nommage personnalisé, vous devez d’abord créer un module d’affectation de noms personnalisé. Le moyen le plus simple est de copier le module existant et d’apporter les modifications nécessaires dans le module copié.
- Créez un dossier de niveau racine dans votre environnement Terraform. par exemple
Azure_SAP_Automated_Deployment
. - Accédez à votre nouveau dossier de niveau racine.
- Clonez le dépôt de l’infrastructure d’automatisation. Cette étape crée un dossier
sap-automation
. - Créez un dossier dans le dossier de niveau racine nommé
Contoso_naming
. - Accéder au dossier
sap-automation
. - Consultez la branche appropriée dans Git.
- Accédez au
\deploy\terraform\terraform-units\modules
sap-automation
dossier. - Copiez le dossier
sap_namegenerator
vers le dossierContoso_naming
.
Le module d’affectation de noms est appelé à partir des dossiers racines 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
}
Ensuite, vous devez faire pointer vos autres fichiers de module Terraform vers votre module de nommage personnalisé. Ces fichiers de module sont les suivants :
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
Pour chaque fichier, changez la source sap_namegenerator
du module pour qu’elle pointe vers l’emplacement de votre nouveau module de nommage. Par exemple :
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
devient module "sap_namegenerator" { source = "../../../../Contoso_naming"
.
Modifier la logique de nommage des groupes de ressources
Pour modifier la logique d’affectation de noms de votre groupe de ressources, accédez à votre dossier de module d’affectation de noms personnalisé (par exemple). Workspaces\Contoso_naming
Ensuite, ouvrez le fichier resourcegroup.tf
. Modifiez le code suivant avec votre propre logique de nommage.
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)
}
Changer les suffixes des ressources
Pour modifier vos suffixes de ressource, accédez à votre dossier de module d’affectation de noms personnalisé (par exemple). Workspaces\Contoso_naming
Ensuite, ouvrez le fichier variables_local.tf
. Modifiez le mappage suivant avec vos propres suffixes de ressources.
Notes
Changez seulement les valeurs du mappage. Ne changez pas la clé du mappage, qui est le code utilisé par Terraform.
Par exemple, si vous voulez renommer le composant d’interface réseau administrateur, changez "admin-nic" = "-admin-nic"
en "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"
}
}