Bagikan melalui


Mengonfigurasi penamaan khusus untuk kerangka kerja otomatisasi

Kerangka Kerja Otomatisasi Penyebaran SAP menggunakan konvensi penamaan standar untuk penamaan sumber daya Azure.

Modul Terraform sap_namegenerator menentukan nama seluruh sumber daya yang disebarkan kerangka kerja otomatisasi. Modul ini terletak di /deploy/terraform/terraform-units/modules/sap_namegenerator/ dalam repositori. Kerangka kerja ini juga mendukung penyediaan nama Anda sendiri untuk beberapa sumber daya dengan menggunakan file parameter.

Penamaan sumber daya menggunakan format berikut:

awalan sumber daya + resource_group_prefix + pemisah + nama sumber daya + akhiran sumber daya.

Jika kemampuan ini tidak cukup, Anda juga dapat menggunakan logika penamaan kustom dengan menyediakan file JSON kustom yang berisi nama sumber daya atau dengan memodifikasi modul penamaan yang digunakan oleh otomatisasi.

Berikan penimpaan nama dengan menggunakan file JSON

Anda dapat menentukan file JSON penamaan kustom dalam file parameter Anda tfvars dengan menggunakan name_override_file parameter .

File JSON memiliki bagian untuk berbagai jenis sumber daya.

Jenis penyebarannya adalah:

  • DEPLOYER (sarana kontrol)
  • SDU (infrastruktur sistem SAP)
  • WORKLOAD_ZONE (zona beban kerja)

Nama set ketersediaan

Nama untuk set ketersediaan ditentukan dalam availabilityset_names struktur. Contoh berikut mencantumkan nama set ketersediaan untuk penyebaran.

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

Nama brankas kunci

Nama-nama untuk brankas kunci didefinisikan dalam keyvault_names struktur. Contoh berikut mencantumkan nama brankas kunci untuk penyebaran di DEV lingkungan di Eropa Barat.

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

Nama brankas kunci harus unik di seluruh Azure. Kerangka Kerja Automasi Penyebaran SAP menambahkan tiga karakter acak (ABC dalam contoh) di akhir nama brankas kunci untuk mengurangi kemungkinan konflik nama.

Nama private_access saat ini tidak digunakan.

Nama akun penyimpanan

Nama untuk akun penyimpanan ditentukan dalam storageaccount_names struktur. Contoh berikut mencantumkan nama akun penyimpanan untuk penyebaran di DEV lingkungan di Eropa Barat.

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

Nama brankas kunci harus unik di seluruh Azure. Kerangka Kerja Otomatisasi Penyebaran SAP menambahkan tiga karakter acak (abc dalam contoh) di akhir nama brankas kunci untuk mengurangi kemungkinan konflik nama.

Nama komputer virtual

Nama untuk komputer virtual didefinisikan dalam virtualmachine_names struktur. Nama komputer dan mesin virtual dapat disediakan.

Contoh berikut mencantumkan nama komputer virtual untuk penyebaran di DEV lingkungan di Eropa Barat. Penyebaran memiliki server database, dua server aplikasi, server layanan pusat, dan dispatcher 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"
        ]
    }

Mengonfigurasi modul penamaan kustom

Terdapat beberapa file di dalam modul untuk penamaan sumber daya:

  • Nama komputer virtual dan komputer didefinisikan dalam (vm.tf).
  • Penamaan grup sumber daya didefinisikan dalam (resourcegroup.tf).
  • Brankas kunci didefinisikan dalam (keyvault.tf).
  • Akhiran sumber daya ditentukan dalam (variables_local.tf).

Nama sumber daya yang berbeda diidentifikasi oleh awalan dalam kode Terraform:

  • Penyebaran penyebar SAP menggunakan nama sumber daya dengan awalan deployer_.
  • Penyebaran pustaka SAP menggunakan nama sumber daya dengan awalan library.
  • Penyebaran lanskap SAP menggunakan nama sumber daya dengan awalan vnet_.
  • Penyebaran sistem SAP menggunakan nama sumber daya dengan awalan sdu_.

Nama yang dihitung dikembalikan dalam kamus data, yang digunakan oleh semua modul Terraform.

Menggunakan nama kustom

Beberapa nama sumber daya dapat diubah dengan memberikan parameter dalam tfvars file parameter.

Sumber daya Parameter Catatan
Prefix custom_prefix Digunakan sebagai awalan untuk semua sumber daya dalam grup sumber daya
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

Mengubah modul penamaan

Untuk menyiapkan lingkungan Terraform Anda untuk penamaan kustom, Anda harus terlebih dahulu membuat modul penamaan kustom. Cara yang paling mudah adalah menyalin modul yang sudah ada dan membuat perubahan yang diperlukan dalam modul yang disalin.

  1. Buat folder level akar dalam lingkungan Terraform Anda. Contohnya Azure_SAP_Automated_Deployment.
  2. Buka folder tingkat akar baru Anda.
  3. Klon repositori kerangka kerja otomatisasi. Langkah ini akan membuat folder sap-automation yang baru.
  4. Buat folder dalam folder level akar yang disebut Contoso_naming.
  5. Buka folder sap-automation.
  6. Lihat cabang yang sesuai di Git.
  7. Masuk ke \deploy\terraform\terraform-units\modules dalam sap-automation folder.
  8. Salin folder sap_namegenerator ke folder Contoso_naming.

Modul penamaan dipanggil dari folder akar 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
}

Selanjutnya, Anda perlu menentukan titik file modul Terraform Anda yang lain ke modul penamaan kustom Anda. File modul ini meliputi:

  • 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

Untuk setiap file, ubah sumber modul sap_namegenerator untuk mengarahkan ke lokasi modul penamaan baru Anda. Contohnya:

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

Mengubah logika penamaan grup sumber daya

Untuk mengubah logika penamaan grup sumber daya Anda, buka folder modul penamaan kustom Anda (misalnya, Workspaces\Contoso_naming). Kemudian, edit file resourcegroup.tf. Ubah kode berikut ini dengan logika penamaan Anda sendiri.

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)

}

Mengubah akhiran sumber daya

Untuk mengubah akhiran sumber daya Anda, buka folder modul penamaan kustom Anda (misalnya, Workspaces\Contoso_naming). Kemudian, edit file variables_local.tf. Ubah peta berikut dengan akhiran sumber daya Anda sendiri.

Catatan

Hanya ubah nilai peta. Jangan ubah kunci peta, yang menggunakan kode Terraform. Misalnya, jika Anda ingin mengganti nama komponen antarmuka jaringan administrator, ubah "admin-nic" = "-admin-nic" menjadi "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"

  }
}

Langkah selanjutnya