减少terraform中几乎相同的多变量的干代码
我正在使用terraform 0.12.6并尝试创建一个对象,如:减少terraform中几乎相同的多变量的干代码,terraform,Terraform,我正在使用terraform 0.12.6并尝试创建一个对象,如: variable "dc1" { type = object({ A = object({ a = number }) B = object({ a = number }) C = object({ a = number }) ...(12 times)... 现在,这是代码的简化版本,原来的版本现在有200多行 我不能使用list(object({…})),因为我想确保用户知道他们正在为a
variable "dc1" {
type = object({
A = object({ a = number })
B = object({ a = number })
C = object({ a = number })
...(12 times)...
现在,这是代码的简化版本,原来的版本现在有200多行
我不能使用list(object({…}))
,因为我想确保用户知道他们正在为a
或B
等输入a
的值
有没有办法避免反复写入对象({a=number})
编辑: 如以下评论中所述,请添加有关我正在尝试做的事情的更一般性信息: 我希望有12个几乎相同的
kubernetes\u部署
资源,只有这12个实例中的一些设置发生了更改,如image
,name
等。
现在,这12个部署是一个模块的一部分,因此用户只需source
此模块并设置like的值
dc1 = {
A = { a = number }
B = { a = number }
C = { a = number }
}
只要用户知道他们正在为a
设置a
的值,我不介意将方法更改为
我可以简单地使用:
A = object({ a = number })
B = object({ a = number })
C = object({ a = number })
为了避免使它看起来复杂,但这也是一大堆枯燥的代码,因为
object({a=number})
对所有实例都是重复的。这听起来很像是一个xy问题。你能用更广泛的方式陈述你的问题吗?现在听起来您有一个非常复杂的对象供模块的调用者配置。你真的需要吗?如果你有很多东西(比如一个完整的数据中心),那么如果你的地形配置或状态被破坏了,这也会导致很大的爆炸半径。@ydaetskcoR感谢你的建议,添加了更多的一般信息,如果需要的话,我很乐意添加更多的信息。