Partager via


Configurer un nommage personnalisé pour le cadre 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 que le cadre d'automatisation déploie. 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 nom des ressources est construit selon 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 :

  • DÉPLOYEUR (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é d’un déploiement.

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

Noms des coffres de clés

Les noms des coffres-forts à clés sont définis dans la structure keyvault_names. L’exemple suivant répertorie les noms des coffres 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 de compte 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. L’ordinateur et les noms 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 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 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 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
admin nsg name admin_subnet_nsg_name

Modifier le module de nommage

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 consiste à copier le module existant et à apporter les modifications requises dans le module copié.

  1. Créez un dossier de niveau racine dans votre environnement Terraform. par exemple Azure_SAP_Automated_Deployment.
  2. Accédez à votre nouveau dossier de niveau racine.
  3. Clonez le répertoire du cadre d'automatisation. Cette étape crée un dossier sap-automation.
  4. Créez un dossier dans le dossier de niveau racine appelé Contoso_naming.
  5. Accéder au dossier sap-automation.
  6. Consultez la branche appropriée dans Git.
  7. Accédez à \deploy\terraform\terraform-units\modules dans le dossier sap-automation.
  8. Copiez le dossier sap_namegenerator dans le Contoso_naming dossier.

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 pointer 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.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, 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 Ensuite, modifiez 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 Ensuite, modifiez 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"

  }
}

Étape suivante