Я ищу способ иметь переменную типа «объект» (для форсирования определенной структуры), а затем переопределить определенные части.рассмотрим объявление этой переменной:
variable "prod_vpc" {
type = object({
name = string,
region = string,
single_nat_gw = bool,
create = bool,
supernet = string
})
default = {
name = "PROD"
region = "eu-central-1"
single_nat_gw = true
create = false,
supernet = "0.0.0.0/0"
}
}
в этом случае, я мог бы захотеть иметь это в моих auto.tfvars:
prod_vpc = {
create = true,
supernet = "10.0.8.0/24"
}
, потому что все остальные значения хороши как есть.единственный способ, о котором я могу думать, это сделать это с помощью type = map (string) и условных выражений в блоке locals, то есть:
variable "vpc_defaults" {
type = object({
name = string,
region = string,
single_nat_gw = bool,
create = bool,
supernet = string
})
default = {
name = "PROD"
region = "eu-central-1"
single_nat_gw = true
create = false,
supernet = "0.0.0.0/0"
}
}
variable "prod_vpc" {
type = map(string)
default = {}
}
затем
prod_vpc = {
create = true,
supernet = "10.0.8.0/24"
}
и затем:
locals {
create = coalesce(var.prod_vpc["create"], vpc_defaults.create)
}
(я не пробовал этого, но я думаю, что что-то в этом роде должно работать)
есть ли другие идеи для предопределения значений по умолчанию и переопределения только при необходимости?
С уважением
Рубен