オートメーション フレームワークのカスタム名前付けを構成する
SAP Deployment Automation Framework では 、Azure リソースの名前付けに標準の 名前付け規則が使用されます。
Terraform モジュール sap_namegenerator
は、オートメーション フレームワークがデプロイするすべてのリソースの名前を定義します。 このモジュールはリポジトリ内の /deploy/terraform/terraform-units/modules/sap_namegenerator/
にあります。 フレームワークでは、 パラメーター ファイルを使用して、一部のリソースに独自の名前を指定することもできます。
リソースの名前付けには、次の形式が使用されます。
リソース プレフィックス + resource_group_prefix + 区切り + リソース名 + リソース サフィックス。
これらの機能が十分でない場合は、リソース名を含むカスタム JSON ファイルを指定するか、自動化によって使用される名前付けモジュールを変更することで、カスタム名前付けロジックを使用することもできます。
JSON ファイルを使用して名前のオーバーライドを指定する
パラメーターを使用して、パラメーター ファイルに tfvars
カスタム名前付け JSON ファイルを name_override_file
指定できます。
JSON ファイルには、さまざまなリソースの種類のセクションがあります。
展開の種類は次のとおりです。
- DEPLOYER (コントロール プレーン)
- SDU (SAP システム インフラストラクチャ)
- WORKLOAD_ZONE (ワークロード ゾーン)
可用性セットの名前
可用性セットの名前は、 構造体で availabilityset_names
定義されます。 次の例では、デプロイの可用性セット名の一覧を示します。
"availabilityset_names" : {
"app": "app-avset",
"db" : "db-avset",
"scs": "scs-avset",
"web": "web-avset"
}
キー コンテナー名
キー コンテナーの名前は、 構造体で keyvault_names
定義されます。 次の例では、西ヨーロッパの環境でのデプロイのキー コンテナー名の一覧を DEV
示します。
"keyvault_names": {
"DEPLOYER": {
"private_access": "DEVWEEUprvtABC",
"user_access": "DEVWEEUuserABC"
},
"SDU": {
"private_access": "DEVWEEUSAP01X00pABC",
"user_access": "DEVWEEUSAP01X00uABC"
},
"WORKLOAD_ZONE": {
"private_access": "DEVWEEUSAP01prvtABC",
"user_access": "DEVWEEUSAP01userABC"
}
}
キー コンテナー名は、Azure 全体で一意である必要があります。 SAP Deployment Automation Framework は、キー コンテナー名の末尾に 3 つのランダム文字 (例では ABC) を追加して、名前の競合の可能性を減らします。
private_access
現在、名前は使用されていません。
ストレージ アカウント名
ストレージ アカウントの名前は、 構造体で storageaccount_names
定義されます。 次の例では、西ヨーロッパの環境でのデプロイのストレージ アカウント名の一覧を DEV
示します。
"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"
}
}
キー コンテナー名は、Azure 全体で一意である必要があります。 SAP Deployment Automation Framework は、キー コンテナー名の末尾に 3 つのランダム文字 (例では abc) を追加して、名前の競合の可能性を減らします。
仮想マシン名
仮想マシンの名前は、 構造体で virtualmachine_names
定義されます。 コンピューター名と仮想マシン名の両方を指定できます。
次の例では、西ヨーロッパの環境でのデプロイの仮想マシン名の一覧を DEV
示します。 デプロイには、データベース サーバー、2 つのアプリケーション サーバー、中央サービス サーバー、および 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"
]
}
カスタム名前付けモジュールを構成する
モジュール内には、リソースの名前付け用に複数のファイルがあります。
- 仮想マシンとコンピューター名は、 (
vm.tf
) で定義されています。 - リソース グループの名前付けは、 (
resourcegroup.tf
) で定義されています。 - キー コンテナーは 、 (
keyvault.tf
) で定義されています。 - リソース サフィックスは、 (
variables_local.tf
) で定義されます。
さまざまなリソース名は、Terraform コードのプレフィックスによって識別されます。
- SAP デプロイ担当者のデプロイでは、プレフィックス が付いたリソース名が使用されます
deployer_
。 - SAP ライブラリのデプロイでは、プレフィックス が付いたリソース名が使用されます
library
。 - SAP ランドスケープ デプロイでは、プレフィックス が付いたリソース名が使用されます
vnet_
。 - SAP システム デプロイでは、プレフィックス が付いたリソース名が使用されます
sdu_
。
計算された名前は、すべての Terraform モジュールで使用されるデータ ディクショナリで返されます。
カスタム名を使用する
一部のリソース名は、パラメーター ファイルに tfvars
パラメーターを指定することで変更できます。
リソース | パラメーター | Notes |
---|---|---|
Prefix |
custom_prefix |
リソース グループ内のすべてのリソースのプレフィックスとして使用されます |
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 |
名前付けモジュールを変更する
カスタム名前付け用に Terraform 環境を準備するには、最初にカスタム名前付けモジュールを作成する必要があります。 最も簡単な方法は、既存のモジュールをコピーし、コピーしたモジュールで必要な変更を行う方法です。
- Terraform 環境にルート レベルのフォルダーを作成します。 たとえば
Azure_SAP_Automated_Deployment
です。 - 新しいルート レベルのフォルダーに移動します。
-
オートメーション フレームワーク リポジトリを複製します。 この手順では、新しいフォルダー
sap-automation
を作成します。 -
Contoso_naming
というルート レベルのフォルダー内にフォルダーを作成します。 -
sap-automation
フォルダーに移動します。 - Git で適切なブランチを確認してください。
- フォルダー内に
\deploy\terraform\terraform-units\modules
sap-automation
移動します。 -
sap_namegenerator
フォルダーをContoso_naming
フォルダーにコピーします。
名前付けモジュールは、ルート 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
}
次に、他の Terraform モジュール ファイルをカスタム名前付けモジュールにポイントする必要があります。 これらのモジュール ファイルには次のものが含まれます。
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
ファイルごとに、モジュール sap_namegenerator
のソースを変更して新しい名前付けモジュールの場所を指すようにします。 次に例を示します。
module "sap_namegenerator" { source = "../../terraform-units/modules/sap_namegenerator"
は module "sap_namegenerator" { source = "../../../../Contoso_naming"
になります。
リソース グループの名前付けロジックを変更する
リソース グループの名前付けロジックを変更するには、カスタムの名前付けモジュール フォルダー (例: Workspaces\Contoso_naming
) に移動します。 次に、ファイル resourcegroup.tf
を編集します。 独自の名前付けロジックを使用して、次のコードを変更します。
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)
}
リソース サフィックスを変更する
リソース サフィックスを変更するには、カスタムの名前付けモジュール フォルダー (例: Workspaces\Contoso_naming
) に移動します。 次に、ファイル variables_local.tf
を編集します。 独自のリソース サフィックスを使用して、次のマップを変更します。
Note
マップの値を変更するだけです。 マップ キーは変更しないでください。Terraform のコードによって使用されます。
たとえば、管理者ネットワーク インターフェイス コンポーネントの名前を変更する場合は、"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"
}
}