Module Terraform模块变量.tf
我尝试使用terraform模块,遇到了一个奇怪的问题(我想)。这是我的结构: [TF目录结构][1] [1]: https://i.stack.imgur.com/P4fyr.png 下面是根main.tf:Module Terraform模块变量.tf,module,terraform,terraform-provider-azure,Module,Terraform,Terraform Provider Azure,我尝试使用terraform模块,遇到了一个奇怪的问题(我想)。这是我的结构: [TF目录结构][1] [1]: https://i.stack.imgur.com/P4fyr.png 下面是根main.tf: provider "azurerm" { features { } } module "createrg" { source = "./modules/rg"
provider "azurerm" {
features {
}
}
module "createrg" {
source = "./modules/rg"
my_loc = var.my_loc
rgName = var.rgName
}
这是根变量。tf
variable "my_loc" {
type = "string"
}
variable "rgName" {
type = "string"
}
以下是“rg”模块的main.tf:
这是“rg”模块的变量.tf
这是dev.tfvars
my_loc = "canadacentral"
rgName = "rg_ModuleTest"
我的计划是:
terraform plan -var-file=./variables/dev.tfvars
因为我刚开始使用terraform,所以我使用的是最新版本。如果我从一个或两个variable.tf中删除任何变量,就会出现错误,并且计划不会执行。例如,如果我从根variables.tf文件中删除变量声明,则会出现错误:“错误:引用未声明的输入变量”;如果我在rg模块中从variable.tf中删除变量声明,则会出现错误:“错误:不支持的参数……此处不需要名为“rgName”的参数。”计划工作的唯一方式是在根模块和rg模块的variables.tf文件中有相同的变量时
这就是模块的工作原理吗?我在互联网上搜寻了一个解释,但我想我遗漏了一些东西。我的意思是,如果我要为20个资源创建模块,那么认为我必须在这两个位置复制变量(root和相应模块的variables.tf文件)感觉很荒谬
提前感谢您的帮助。是独立的。成功执行rg模块所需的所有变量都在/modules/rg/variables.tf
中定义
因为您没有为它们定义任何,所以它们是统一的。因此,在root main.tf中,当您创建createrg
模块时,必须显式设置所有这些变量
关于命名,在“.root/main”中,变量var.my_loc
和var.rgName
不需要与/modules/rg/variables.tf中的变量具有相同的名称。它们可以有任何名称,也可以是常量,只要您要设置模块的所有这些未初始化变量
my_loc = "canadacentral"
rgName = "rg_ModuleTest"
terraform plan -var-file=./variables/dev.tfvars