簡體   English   中英

Terraform - 根據另一個變量驗證一個變量?

[英]Terraform - validate a variable based on another variable?

假設我有一個用於創建 AWS EC2 實例的 Terraform 模塊。

現在,我希望用戶能夠使用默認 VPC,或提供另一個 VPC ID。 所以我定義了以下輸入變量:

# variables.tf

variable "default_vpc" {
  description = "Whether or not deploy the instance in the default VPC"
  type = bool
}

variable "vpc_id" {
  description = "VPC ID to deploy the instance in"
  type = string
  default = ""
}

現在,如果用戶為default_vpc傳遞false ,我想確保他確實在vpc_id中傳遞了一些值。 那可能嗎?

雖然無法使用輸入變量驗證來實現,但根據 Terraform 版本,您可以使用先決條件

resource "null_resource" "vpc_precondition_validation" {
  lifecycle {
    precondition {
      condition     = (var.default_vpc == false && var.vpc_id != "") || (var.default_vpc == true && var.vpc_id == "")
      error_message = "There has been error while validating the inputs for default_vpc and vpc_id variables."
    }
  }
}

在這種情況下,當我們為變量default_vpc輸入false並且我們沒有為vpc_id變量提供值時,它將打印錯誤消息。

default_vpc設置為 true 時,它將允許vpc_id變量為空字符串。

然后在需要vpc_id的資源中,您可以使用三元條件,假設默認的 vpc id 屬性是從數據源中檢索到的:

...
vpc_id = var.default_vpc == false ? var.vpc_id : data.aws_vpc.default.id
...

您可以像這樣將其聲明為 boolean map:

variable "vpc_id" {
  type = map(bool)
  default = {
    true    = "default_vpc is true"
    false   = "default_vpc is false"
  }
}

現在你可以像這樣使用它:

var.vpc_id[${var.default_vpc}]

例子:

例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM