Terraform 在这个地形配置中,为什么我需要在多个地方使用变量?
我的文件夹层次结构如下所示:Terraform 在这个地形配置中,为什么我需要在多个地方使用变量?,terraform,Terraform,我的文件夹层次结构如下所示: / -> live/ : main.tf : variables.tf -> modules/ -> logs/ : logs.tf : variables.tf 在我的main.tf中,我有: 在my logs.tf中,我有: 在这两个variables.tf文件中,我都有: variable "env" {default = "test"} 如果我从其中任何一个删除它,我会得到一个不
/
-> live/
: main.tf
: variables.tf
-> modules/
-> logs/
: logs.tf
: variables.tf
在我的main.tf中,我有:
在my logs.tf中,我有:
在这两个variables.tf文件中,我都有:
variable "env" {default = "test"}
如果我从其中任何一个删除它,我会得到一个不受支持的参数错误-为什么?在这种情况下,我不清楚哪个变量优先,以及为什么需要这两个集合。在Terraform中,每个目录都被视为一个单独的名称空间,可以作为一个名称空间重用。根据经验,您可以假设在目录中需要定义目录中使用的所有变量
而且,Terraform不关心目录嵌套,所以即使a包含b,b也完全独立于a。如果您想从目录a中包含b中的内容,则需要将整个内容作为一个模块显式引入。将其视为编程语言中的嵌套方法/函数。如果您有一个签名为foo,bar,baz的函数a,然后是另一个将baz设置为false但允许调用方设置foo和bar的函数b,那么您仍然需要在签名中将其作为foo,bar公开。这可能是对等模块设计的另一个参数,而不是嵌套的。换句话说,您可能想重新组织模块结构。@MattSchuchard您能提供一个指向“对等模块设计”的链接吗?
resource "datadog_monitor" "logs-fatal" {
env = var.env
...
}
variable "env" {default = "test"}