У меня есть фрагмент кода, который задает имя пула узлов для кластера GKE, он очень нечитаем. Я был бы признателен за любую помощь в том, чтобы сделать его более презентабельным и легким для понимания того, что происходит.
output "test" {
value = regex("(?:[a-z](?:[-a-z0-9]{0,38}[a-z0-9])?)", lower(var.node_pool_version != "" ? var.node_pool_name != "" ? "${var.node_pool_name}-v${replace("${var.node_pool_version}",".","-")}" : "${var.name_prefix}-v${replace("${var.node_pool_version}",".","-")}" : var.node_pool_name != "" ? var.node_pool_name : "${var.name_prefix}-standard"))
}
variable "node_pool_version" {
description = "Override node_version for cluster upgrades"
type = string
default = ""
}
variable "node_pool_name" {
type = string
default = ""
}
variable "name_prefix" {
type = string
default = "develop"
}
Выходы:
❯ terraform apply
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
test = develop-standard
❯ terraform apply -var node_pool_version=1.16.15-gke.7800
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
test = develop-v1-16-15-gke-7800
❯ terraform apply -var node_pool_version=1.16.15-gke.7800 -var node_pool_name=develop-standard
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
test = develop-standard-v1-16-15-gke-7800
Редактировать: Меня беспокоит широкое использование String Functions
и Conditional Expressions
для создания вывода. Мой вариант использования заключается в том, что если пользователь не передает ни node_pool_version
, ни node_pool_name
, мой вывод все равно должен сгенерировать имя узла, которое можно легко идентифицировать. Есть ли лучший способ переписать этот код и сделать его более читаемым для всех, кто плохо знаком с Terraform?