From 4e721ff236842cec9d4e33d1debdd23e70fc9c63 Mon Sep 17 00:00:00 2001 From: Zidong Lu Date: Fri, 25 Oct 2024 13:57:29 +0800 Subject: [PATCH] add more options to override network settings (#30) --- README.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++--- locals.tf | 22 ++++++++++++++----- variables.tf | 48 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 120 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index eff5517..165e7ef 100644 --- a/README.md +++ b/README.md @@ -304,6 +304,14 @@ Type: `bool` Default: `true` +### [compute\_override\_qos\_policy](#input\_compute\_override\_qos\_policy) + +Description: Indicates whether to override qos policy for compute network. + +Type: `bool` + +Default: `false` + ### [compute\_qos\_policy\_overrides](#input\_compute\_qos\_policy\_overrides) Description: QoS policy overrides for network settings with required properties for compute. @@ -336,6 +344,22 @@ Type: `bool` Default: `false` +### [compute\_rdma\_jumbo\_packet](#input\_compute\_rdma\_jumbo\_packet) + +Description: The jumbo packet size for RDMA of compute network. + +Type: `string` + +Default: `"9014"` + +### [compute\_rdma\_protocol](#input\_compute\_rdma\_protocol) + +Description: The RDMA protocol of compute network. + +Type: `string` + +Default: `"RoCEv2"` + ### [compute\_traffic\_type](#input\_compute\_traffic\_type) Description: Traffic type of compute. @@ -602,6 +626,14 @@ Type: `bool` Default: `true` +### [override\_qos\_policy](#input\_override\_qos\_policy) + +Description: Indicates whether to override qos policy for converged network. + +Type: `bool` + +Default: `false` + ### [qos\_policy\_overrides](#input\_qos\_policy\_overrides) Description: QoS policy overrides for network settings with required properties. @@ -644,7 +676,7 @@ Default: `false` ### [rdma\_jumbo\_packet](#input\_rdma\_jumbo\_packet) -Description: The jumbo packet size for RDMA. +Description: The jumbo packet size for RDMA of converged network. Type: `string` @@ -652,7 +684,7 @@ Default: `"9014"` ### [rdma\_protocol](#input\_rdma\_protocol) -Description: The RDMA protocol. +Description: The RDMA protocol of converged network. Type: `string` @@ -762,12 +794,20 @@ Default: `"Storage"` ### [storage\_override\_adapter\_property](#input\_storage\_override\_adapter\_property) -Description: Indicates whether to override adapter property for storagte. +Description: Indicates whether to override adapter property for storage network. Type: `bool` Default: `true` +### [storage\_override\_qos\_policy](#input\_storage\_override\_qos\_policy) + +Description: Indicates whether to override qos policy for storage network. + +Type: `bool` + +Default: `false` + ### [storage\_qos\_policy\_overrides](#input\_storage\_qos\_policy\_overrides) Description: QoS policy overrides for network settings with required properties for storage. @@ -800,6 +840,22 @@ Type: `bool` Default: `false` +### [storage\_rdma\_jumbo\_packet](#input\_storage\_rdma\_jumbo\_packet) + +Description: The jumbo packet size for RDMA of storage network. + +Type: `string` + +Default: `"9014"` + +### [storage\_rdma\_protocol](#input\_storage\_rdma\_protocol) + +Description: The RDMA protocol of storage network. + +Type: `string` + +Default: `"RoCEv2"` + ### [storage\_tags](#input\_storage\_tags) Description: (Optional) Tags of the storage. diff --git a/locals.tf b/locals.tf index d23a00d..270966f 100644 --- a/locals.tf +++ b/locals.tf @@ -21,7 +21,12 @@ locals { ] combined_adapters = setintersection(toset(var.management_adapters), toset(local.storage_adapters)) combined_keyvault_secrets = length(var.keyvault_secrets) != 0 ? var.keyvault_secrets : local.auto_generated_secrets - converged = (length(local.combined_adapters) == length(var.management_adapters)) && (length(local.combined_adapters) == length(local.storage_adapters)) + compute_rdma_adapter_properties = { + jumboPacket = var.compute_rdma_jumbo_packet + networkDirect = "Enabled" + networkDirectTechnology = var.compute_rdma_protocol + } + converged = (length(local.combined_adapters) == length(var.management_adapters)) && (length(local.combined_adapters) == length(local.storage_adapters)) converged_intents = [{ name = var.intent_name, trafficType = var.traffic_type, @@ -31,7 +36,7 @@ locals { enableIov = "", loadBalancingAlgorithm = "" }, - overrideQosPolicy = false, + overrideQosPolicy = var.override_qos_policy, qosPolicyOverrides = var.qos_policy_overrides, overrideAdapterProperty = var.override_adapter_property, adapterPropertyOverrides = var.rdma_enabled ? local.rdma_adapter_properties : local.adapter_properties @@ -158,28 +163,28 @@ locals { trafficType = var.compute_traffic_type, adapter = flatten(var.management_adapters) overrideVirtualSwitchConfiguration = false, - overrideQosPolicy = false, + overrideQosPolicy = var.compute_override_qos_policy, overrideAdapterProperty = var.compute_override_adapter_property, virtualSwitchConfigurationOverrides = { enableIov = "", loadBalancingAlgorithm = "" }, qosPolicyOverrides = var.compute_qos_policy_overrides, - adapterPropertyOverrides = var.compute_rdma_enabled ? local.rdma_adapter_properties : local.adapter_properties + adapterPropertyOverrides = var.compute_rdma_enabled ? local.compute_rdma_adapter_properties : local.adapter_properties }, { name = var.storage_intent_name, trafficType = var.storage_traffic_type, adapter = local.storage_adapters, overrideVirtualSwitchConfiguration = false, - overrideQosPolicy = false, + overrideQosPolicy = var.storage_override_qos_policy, overrideAdapterProperty = var.storage_override_adapter_property, virtualSwitchConfigurationOverrides = { enableIov = "", loadBalancingAlgorithm = "" }, qosPolicyOverrides = var.storage_qos_policy_overrides, - adapterPropertyOverrides = var.storage_rdma_enabled ? local.rdma_adapter_properties : local.adapter_properties + adapterPropertyOverrides = var.storage_rdma_enabled ? local.storage_rdma_adapter_properties : local.adapter_properties }] storage_adapters = flatten([for storageNetwork in var.storage_networks : storageNetwork.networkAdapterName]) storage_networks = var.storage_adapter_ip_info == null ? flatten(var.storage_networks) : [ @@ -190,6 +195,11 @@ locals { storageAdapterIPInfo = var.storage_adapter_ip_info[storageNetwork.name] } ] + storage_rdma_adapter_properties = { + jumboPacket = var.storage_rdma_jumbo_packet + networkDirect = "Enabled" + networkDirectTechnology = var.storage_rdma_protocol + } witness_secret = { eceSecretName = "WitnessStorageKey" secretSuffix = "WitnessStorageKey" diff --git a/variables.tf b/variables.tf index 6a8ddcb..de4ee7c 100644 --- a/variables.tf +++ b/variables.tf @@ -203,6 +203,12 @@ variable "compute_override_adapter_property" { description = "Indicates whether to override adapter property for compute." } +variable "compute_override_qos_policy" { + type = bool + default = false + description = "Indicates whether to override qos policy for compute network." +} + variable "compute_qos_policy_overrides" { type = object({ priorityValue8021Action_SMB = string @@ -223,6 +229,18 @@ variable "compute_rdma_enabled" { description = "Indicates whether RDMA is enabled for compute." } +variable "compute_rdma_jumbo_packet" { + type = string + default = "9014" + description = "The jumbo packet size for RDMA of compute network." +} + +variable "compute_rdma_protocol" { + type = string + default = "RoCEv2" + description = "The RDMA protocol of compute network." +} + variable "compute_traffic_type" { type = list(string) default = [ @@ -446,6 +464,12 @@ variable "override_adapter_property" { description = "Indicates whether to override adapter property." } +variable "override_qos_policy" { + type = bool + default = false + description = "Indicates whether to override qos policy for converged network." +} + variable "qos_policy_overrides" { type = object({ priorityValue8021Action_SMB = string @@ -475,13 +499,13 @@ variable "rdma_enabled" { variable "rdma_jumbo_packet" { type = string default = "9014" - description = "The jumbo packet size for RDMA." + description = "The jumbo packet size for RDMA of converged network." } variable "rdma_protocol" { type = string default = "RoCEv2" - description = "The RDMA protocol." + description = "The RDMA protocol of converged network." } variable "resource_group_location" { @@ -566,7 +590,13 @@ variable "storage_intent_name" { variable "storage_override_adapter_property" { type = bool default = true - description = "Indicates whether to override adapter property for storagte." + description = "Indicates whether to override adapter property for storage network." +} + +variable "storage_override_qos_policy" { + type = bool + default = false + description = "Indicates whether to override qos policy for storage network." } variable "storage_qos_policy_overrides" { @@ -589,6 +619,18 @@ variable "storage_rdma_enabled" { description = "Indicates whether RDMA is enabled for storage. Storage RDMA will be enabled if either rdma_enabled or storage_rdma_enabled is set to true." } +variable "storage_rdma_jumbo_packet" { + type = string + default = "9014" + description = "The jumbo packet size for RDMA of storage network." +} + +variable "storage_rdma_protocol" { + type = string + default = "RoCEv2" + description = "The RDMA protocol of storage network." +} + variable "storage_tags" { type = map(string) default = null