何时在terraform中定义变量?

时间:2019-05-02 17:42:27

标签: terraform terraform-provider-gcp

这里是Terraform的新手。我有一个带有variables.tf的模块,该模块在Google Cloud中创建资源“文件夹”。变量定义为:

variable "folder_name" {
    type = "string"
    description = "Name of the folder"
}

此模块的调用函数是main.tf。

module "folder" {
    source = "../<path>/"
}

当我运行“ terraform init”时,它会引发以下错误-

$ terraform init
Initializing modules...
- module.folder
- module.project
     

错误:模块“文件夹”:缺少必需的参数“ folder_name”

我认为变量可以在运行“ terrain apply”时在文件中预先确定或包含在命令行选项中。我希望使用CLI选项,但是为什么在'init'阶段会看到参数错误?

1 个答案:

答案 0 :(得分:0)

在调用模块本身时,请提供每个模块变量的值:

module "folder" {
    source = "../<path>/"
    folder_name = "xyz"  # add this line to define the folder_name variable
}

如果您想在命令行上指定folder_name,则可以在main.tf文件中创建一个变量,然后通过命令行提供该变量:

variable "module_folder_name" {
  default = "xyz"
}

module "folder" {
   source = "../<path>/"
   folder_name = "${var.module_folder_name}"
}

然后通过命令行提供此变量的值:

terraform apply -var="module_folder_name=abc"