【问题标题】:Terraform variable filesTerraform 变量文件
【发布时间】:2018-11-24 03:30:32
【问题描述】:

我正在尝试使用变量文件来使用 Terraform 在 Azure 中部署资源组,但如果我只有一个变量,它就可以工作。如果我使用两个,我会得到一个错误:

“标志-var-file的无效值“variables.tf”:多个映射 变量不支持声明”

变量文件如下:

variable "resource_group_name" {
  description = "The name of the resource group in which the resources will be created"
  default     = "im-from-the-variables-file"
}

variable "location" {
  description = "The location/region where the virtual network is created. Changing this forces a new resource to be created."
  default     = "west europe"
}

用于部署的主要文件如下:

resource "azurerm_resource_group" "vm" {
  name     = "${var.resource_group_name}"
  location = "${var.location}"
}

【问题讨论】:

  • 您使用-var-file 传递的 tfvars 文件是什么样的?
  • 第一块代码:variable "resource_group_name" { description = "将在其中创建资源的资源组的名称" default = "im-from-the-variables-file" } variable "location" { description = "创建虚拟网络的位置/区域。更改它会强制创建新资源。"默认=“西欧”}

标签: azure terraform


【解决方案1】:

您将变量 definition 语法与变量 setting 语法混淆了。

Terraform 将连接一个目录中的所有.tf 文件,因此您的variables.tf 文件(假设它与您的main.tf(或任何包含您的azurerm_resource_group 资源等的目录)位于同一目录中。

您需要先定义每个变量,然后才能使用它,例如:

resource "azurerm_resource_group" "vm" {
  name     = "${var.resource_group_name}"
  location = "${var.location}"
}

由于变量resource_group_name 和location 未定义,因此它们本身无效。

您使用在 variables.tf 文件中使用的语法定义变量:

variable "location" {
  description = "The location/region where the virtual network is created. Changing this forces a new resource to be created."
  default     = "west europe"
}

要覆盖默认值(如果需要或未提供默认值),您需要在运行时传入变量(使用TF_VAR_location 环境变量或使用-var location="west us"),或者您可以定义变量采用以下形式的文件:

location = "west us"
resource_group_name = "im-from-the-variables-file"

Terraform 将自动加载名为 terraform.tfvars 或 *.auto.tfvars 的目录中的任何文件,您还可以在任何时候使用 -var-file=myvars.tfvars 定义额外的 vars 文件,就像您尝试做的那样(但使用 .tf 文件包含 HCL 而不是密钥对。

【讨论】:

    【解决方案2】:

    添加到 ydaetskcoR 在上述答案中提到的内容。如果您已经在变量文件中为所有定义的变量指定了默认值,并且您只需要该默认值,您甚至不需要传递 -var-file 因为如果您不传递值将使用默认值

    【讨论】:

      猜你喜欢
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 2019-07-30
      • 2020-03-10
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      相关资源
      最近更新 更多