在 Terraform 中传递大小变量
Passing size variable in Terraform
我不太确定该怎么做。
我得到了一个 Terraform 代码来在 Azure 上构建一个 Linux 虚拟机。尺寸在代码中预先定义。我想知道如何定义 VM 大小,以便用户可以通过 CLI 中的预定义变量传递大小。
当前用户可以在 CLI 中传递的变量仅限 Azure 区域:
variable "location" {
type = string
description = "Azure location of Terraform deployment"
default = "canadacentral"
}
例如,用户将在何处传递 terraform apply -var "location=eastus",但是我希望允许用户也传递类似 的内容-var "size=small".
例如,small 将代表 Standard_DS1_v2,其中 medium 将而是使用 Standard_B2ms.
您可以在配置中声明另一个变量:
variable "vm_size" {
type = string
description = "The size of the Linux virtual machine"
# validation block for restricting inputs to recognized sizes
validation {
condition = contains(["small", "medium"], var.vm_size)
error_message = "Valid vm_size inputs are 'small' or 'medium'."
}
}
然后用户将能够传递虚拟机大小的字符串。然后我们可以创建一个从用户输入键到 Azure 大小值对应的映射:
locals {
vm_size = {
"small" = "Standard_DS1_v2"
"medium" = "Standard_B2ms"
}
}
现在我们可以从 local.vm_size[var.vm_size]
等用户变量输入中解析 Azure VM 大小。然后我们可以正常使用资源中的这些:
resource "azurerm_windows_virtual_machine" "this" {
...
size = local.vm_size[var.vm_size]
...
}
如果需要,您还可以使用 lookup
函数提供默认值:
# default to small size
lookup(local.vm_size, var.vm_size, "Standard_DS1_v2")
我不太确定该怎么做。
我得到了一个 Terraform 代码来在 Azure 上构建一个 Linux 虚拟机。尺寸在代码中预先定义。我想知道如何定义 VM 大小,以便用户可以通过 CLI 中的预定义变量传递大小。
当前用户可以在 CLI 中传递的变量仅限 Azure 区域:
variable "location" {
type = string
description = "Azure location of Terraform deployment"
default = "canadacentral"
}
例如,用户将在何处传递 terraform apply -var "location=eastus",但是我希望允许用户也传递类似 的内容-var "size=small".
例如,small 将代表 Standard_DS1_v2,其中 medium 将而是使用 Standard_B2ms.
您可以在配置中声明另一个变量:
variable "vm_size" {
type = string
description = "The size of the Linux virtual machine"
# validation block for restricting inputs to recognized sizes
validation {
condition = contains(["small", "medium"], var.vm_size)
error_message = "Valid vm_size inputs are 'small' or 'medium'."
}
}
然后用户将能够传递虚拟机大小的字符串。然后我们可以创建一个从用户输入键到 Azure 大小值对应的映射:
locals {
vm_size = {
"small" = "Standard_DS1_v2"
"medium" = "Standard_B2ms"
}
}
现在我们可以从 local.vm_size[var.vm_size]
等用户变量输入中解析 Azure VM 大小。然后我们可以正常使用资源中的这些:
resource "azurerm_windows_virtual_machine" "this" {
...
size = local.vm_size[var.vm_size]
...
}
如果需要,您还可以使用 lookup
函数提供默认值:
# default to small size
lookup(local.vm_size, var.vm_size, "Standard_DS1_v2")