Aracılığıyla paylaş


Otomasyon çerçevesi için özel adlandırma yapılandırma

SAP Deployment Automation Framework , Azure kaynak adlandırması için standart bir adlandırma kuralı kullanır.

Terraform modülü sap_namegenerator , otomasyon çerçevesinin dağıttığı tüm kaynakların adlarını tanımlar. Modül, deposunda bulunur /deploy/terraform/terraform-units/modules/sap_namegenerator/ . Çerçeve ayrıca parametre dosyalarını kullanarak bazı kaynaklar için kendi adlarınızı sağlamayı da destekler.

Kaynakların adlandırması aşağıdaki biçimi kullanır:

kaynak ön eki + resource_group_prefix + ayırıcı + kaynak adı + kaynak son eki.

Bu özellikler yeterli değilse, kaynak adlarını içeren özel bir JSON dosyası sağlayarak veya otomasyon tarafından kullanılan adlandırma modülünü değiştirerek de özel adlandırma mantığını kullanabilirsiniz.

JSON dosyası kullanarak ad geçersiz kılmaları sağlama

parametresini kullanarak name_override_file parametre dosyanızda tfvars özel bir adlandırma JSON dosyası belirtebilirsiniz.

JSON dosyasında farklı kaynak türleri için bölümler bulunur.

Dağıtım türleri şunlardır:

  • DEPLOYER (kontrol düzlemi)
  • SDU (SAP sistem altyapısı)
  • WORKLOAD_ZONE (iş yükü bölgesi)

Kullanılabilirlik kümesi adları

Kullanılabilirlik kümelerinin adları yapıda availabilityset_names tanımlanır. Aşağıdaki örnekte, bir dağıtımın kullanılabilirlik kümesi adları liste gösterilmektedir.

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

Anahtar kasası adları

Anahtar kasalarının adları yapıda keyvault_names tanımlanır. Aşağıdaki örnek, Batı Avrupa ortamındaki bir dağıtımın DEV anahtar kasası adlarını listeler.

"keyvault_names": {
        "DEPLOYER": {
            "private_access": "DEVWEEUprvtABC",
            "user_access": "DEVWEEUuserABC"
        },
        "SDU": {
            "private_access": "DEVWEEUSAP01X00pABC",
            "user_access": "DEVWEEUSAP01X00uABC"
        },
        "WORKLOAD_ZONE": {
            "private_access": "DEVWEEUSAP01prvtABC",
            "user_access": "DEVWEEUSAP01userABC"
        }
    }

Anahtar kasası adlarının Azure genelinde benzersiz olması gerekir. SAP Deployment Automation Framework, ad çakışması olasılığını azaltmak için anahtar kasası adının sonuna üç rastgele karakter (örnekte ABC) ekler.

Adlar private_access şu anda kullanılmıyor.

Hesap adlarını Depolama

Depolama hesaplarının adları yapıda storageaccount_names tanımlanır. Aşağıdaki örnek, Batı Avrupa ortamındaki bir dağıtımın DEV depolama hesabı adlarını listeler.

"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"
        }
    }

Anahtar kasası adlarının Azure genelinde benzersiz olması gerekir. SAP Deployment Automation Framework, ad çakışması olasılığını azaltmak için anahtar kasası adının sonuna üç rastgele karakter (örnekte abc) ekler.

Sanal makine adları

Sanal makinelerin adları yapıda virtualmachine_names tanımlanır. Hem bilgisayar hem de sanal makine adları sağlanabilir.

Aşağıdaki örnek, Batı Avrupa ortamındaki bir dağıtımın DEV sanal makine adlarını listeler. Dağıtımda veritabanı sunucusu, iki uygulama sunucusu, merkezi hizmetler sunucusu ve bir web dağıtıcısı vardır.

    "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"
        ]
    }

Özel adlandırma modülünü yapılandırma

Modülde kaynakları adlandırmak için birden çok dosya vardır:

  • Sanal makine ve bilgisayar adları (vm.tf içinde tanımlanır.
  • Kaynak grubu adlandırması ()resourcegroup.tf içinde tanımlanır.
  • Anahtar kasaları (keyvault.tf içinde tanımlanır).
  • Kaynak son ekleri ()variables_local.tf içinde tanımlanır.

Farklı kaynak adları Terraform kodundaki ön eklerle tanımlanır:

  • SAP dağıtıcı dağıtımları, ön ekine deployer_sahip kaynak adlarını kullanır.
  • SAP kitaplığı dağıtımları, ön ekine librarysahip kaynak adlarını kullanır.
  • SAP yatay dağıtımları, ön ekine vnet_sahip kaynak adlarını kullanır.
  • SAP sistem dağıtımları, ön ekine sdu_sahip kaynak adlarını kullanır.

Hesaplanan adlar, tüm Terraform modülleri tarafından kullanılan bir veri sözlüğünde döndürülür.

Özel adlar kullanma

Kaynak adlarından bazıları, parametre dosyasında parametreler tfvars sağlanarak değiştirilebilir.

Kaynak Parametre Notlar
Prefix custom_prefix Kaynak grubundaki tüm kaynaklar için ön ek olarak kullanılır
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

Adlandırma modülünü değiştirme

Terraform ortamınızı özel adlandırmaya hazırlamak için önce özel bir adlandırma modülü oluşturmanız gerekir. Bunun en kolay yolu, mevcut modülü kopyalamak ve kopyalanan modülde gerekli değişiklikleri yapmaktır.

  1. Terraform ortamınızda kök düzeyinde bir klasör oluşturun. Azure_SAP_Automated_Deployment bunun bir örneğidir.
  2. Yeni kök düzeyi klasörünüze gidin.
  3. Otomasyon çerçevesi deposunu kopyalayın. Bu adım yeni bir klasör sap-automationoluşturur.
  4. kök düzeyinde adlı Contoso_namingbir klasör oluşturun.
  5. sap-automation klasörüne gidin.
  6. Git'te uygun dala göz atın.
  7. \deploy\terraform\terraform-units\modules Klasörün içine sap-automation gidin.
  8. klasörü klasörüne sap_namegenerator Contoso_naming kopyalayın.

Adlandırma modülü kök terraform klasörlerden çağrılır:

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
}

Ardından, diğer Terraform modül dosyalarınızı özel adlandırma modülünüze işaret etmeniz gerekir. Bu modül dosyaları şunlardır:

  • 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

Her dosya için modülün sap_namegenerator kaynağını yeni adlandırma modülünüzün konumuna işaret eden şekilde değiştirin. Örnek:

module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator" olur module "sap_namegenerator" { source = "../../../../Contoso_naming".

Kaynak grubu adlandırma mantığını değiştirme

Kaynak grubunuzun adlandırma mantığını değiştirmek için özel adlandırma modülü klasörünüze gidin (örneğin, Workspaces\Contoso_naming). Ardından dosyasını resourcegroup.tfdüzenleyin. Aşağıdaki kodu kendi adlandırma mantığınızla değiştirin.

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)

}

Kaynak soneklerini değiştirme

Kaynak son eklerinizi değiştirmek için özel adlandırma modülü klasörünüze gidin (örneğin, Workspaces\Contoso_naming). Ardından dosyasını variables_local.tfdüzenleyin. Aşağıdaki eşlemeyi kendi kaynak soneklerinizle değiştirin.

Dekont

Yalnızca eşleme değerlerini değiştirin. Terraform kodunun kullandığı harita anahtarını değiştirmeyin. Örneğin, yönetici ağ arabirimi bileşenini yeniden adlandırmak istiyorsanız olarak değiştirin "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"

  }
}

Sonraki adım