1

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

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

我认为变量可以在文件中预先确定,也可以在运行“terraform apply”时包含在命令行选项中。我更喜欢 CLI 选项,但为什么我在“初始化”阶段看到参数错误?

4

1 回答 1

2

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

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"
于 2019-05-02T19:04:01.813 回答