Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
SAP Deployment Automation Framework utilise une convention d’affectation de noms standard pour les ressources Azure qu’il déploie. Si les noms par défaut ne correspondent pas aux normes d’affectation de noms de votre organisation ou si vous devez éviter les conflits d’affectation de noms entre les abonnements Azure, vous pouvez les remplacer par vos propres noms.
Cet article vous montre comment fournir des noms de ressources personnalisés à l’aide d’un fichier de remplacement JSON ou en modifiant directement le module d’affectation de noms Terraform.
Prerequisites
- Un abonnement Azure. Si vous n’avez pas d’abonnement, créez un compte gratuit.
- Terraform installé sur votre ordinateur local.
- Git installé sur votre ordinateur local.
- Accès au référentiel SAP Deployment Automation Framework.
- Connaissance de la syntaxe JSON et Terraform HCL.
Fournir des remplacements de nom à l’aide d’un fichier JSON
Le module sap_namegenerator Terraform définit les noms de toutes les ressources déployées par l’infrastructure. Le module se trouve dans /deploy/terraform/terraform-units/modules/sap_namegenerator/ le référentiel. 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 :
resource prefix + resource_group_prefix + separator + resource name + resource suffix.
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 :
- DÉPLOYEUR (plan de contrôle)
- SDU (infrastructure système SAP)
- WORKLOAD_ZONE (zone de charge de travail)
Définir les noms des ensembles de disponibilité
Les noms des groupes à haute disponibilité sont définis dans la availabilityset_names structure. L’exemple suivant montre les noms des groupes à haute disponibilité pour un déploiement.
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
Définir des noms de coffres-forts de clés
Les noms de coffre de clés sont définis dans la keyvault_names structure. L’exemple suivant montre les noms des coffres de clés pour un déploiement dans lDEV’environnement en Europe de l’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 pour réduire la probabilité de conflits de noms.
Les private_access noms ne sont pas utilisés.
Définir des noms de compte de stockage
Les noms de compte de stockage sont définis dans la storageaccount_names structure. L’exemple suivant montre les noms des comptes de stockage pour un déploiement dans lDEV’environnement en Europe de l’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 compte de stockage doivent être uniques dans Azure. SAP Deployment Automation Framework ajoute trois caractères aléatoires (abc dans l’exemple) à la fin du nom du compte de stockage pour réduire la probabilité de conflits de noms.
Définir des noms de machines virtuelles
Les noms des machines virtuelles sont définis dans la virtualmachine_names structure. Vous pouvez fournir le nom de l’ordinateur et le nom de la machine virtuelle.
L’exemple suivant montre les noms de 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é
Le module contient plusieurs fichiers pour nommer des 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 préfixes suivants dans le code Terraform identifient les noms de ressources :
- 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
Vous pouvez modifier certains noms de ressources en fournissant des paramètres dans le tfvars fichier de paramètres.
| Ressource | Paramètre | Remarques |
|---|---|---|
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 |
Modifier le module de nommage
Pour préparer votre environnement Terraform pour un nommage personnalisé, créez un module d’affectation de noms personnalisé. Le moyen le plus simple consiste à copier le module existant et à apporter les modifications requises 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 répertoire du cadre d'automatisation. Cette étape crée un dossier
sap-automation. - Créez un dossier dans le dossier de niveau racine appelé
Contoso_naming. - Accéder au dossier
sap-automation. - Consultez la branche appropriée dans Git.
- Accédez à
\deploy\terraform\terraform-units\modulesdans le dossiersap-automation. - Copiez le dossier
sap_namegeneratordans leContoso_namingdossier.
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, pointez vos autres fichiers de module Terraform vers votre module d’affectation de noms personnalisé. Ces fichiers de module sont les suivants :
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
Pour chaque fichier, modifiez la source du module sap_namegenerator pour qu’il pointe vers l’emplacement de votre nouveau module d’affectation de noms. Par exemple:
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator" devient module "sap_namegenerator" { source = "../../../../Contoso_naming".
Modifier la logique d’affectation de noms de groupe 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 - Ouvrez le fichier
resourcegroup.tf. - Modifiez le code suivant avec votre propre logique d’affectation de noms :
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)
}
Modifier les suffixes de ressource
Pour modifier vos suffixes de ressource :
- Accédez à votre dossier de module d’affectation de noms personnalisé (par exemple).
Workspaces\Contoso_naming - Ouvrez le fichier
variables_local.tf. - Modifiez la carte suivante en ajoutant vos propres suffixes liés aux ressources.
Remarque
Modifiez uniquement les valeurs de la carte. Ne modifiez pas la clé de carte, que le code Terraform utilise.
Par exemple, si vous souhaitez renommer le composant d’interface réseau administrateur, passez "admin-nic" = "-admin-nic" à "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"
}
}