排除Terraform模块中的资源

sle*_*pyj 2 terraform terraform-provider-azure

我有一个我构建的Terraform模块,它将模块的两个实例部署到一个单独的区域.在这个模块中有一个密钥库.我只希望密钥库存在于两个区域之一.

这是我的模块:

resource "azurerm_resource_group" "test" {
  name     = "test"
  location = "${var.location}"
}

resource "azurerm_key_vault" "keyvault" {
  name = "keyvault"
}
Run Code Online (Sandbox Code Playgroud)

这是我的main.tf

module "test_uswest2" {
  source = "modules/test"

  location = "westus2"
  environment = "${var.environment}"
}

module "test_westcentralus" {
  source = "modules/test"

  location = "centralus"
  environment = "${var.environment}"
}
Run Code Online (Sandbox Code Playgroud)

我想在第二个区域/位置排除密钥保险库.

Terraform似乎不支持if/else所以我不确定我的选择是什么.

yda*_*coR 8

您可以通过将countmeta参数设置为0并使用条件三元运算符来有条件地创建资源.

所以你会有这样的事情:

variable "create_key_vault" {
  default = true
}

resource "azurerm_key_vault" "keyvault" {
  count = "${var.create_key_vault ? 0 : 1}"
  name  = "keyvault"
}
Run Code Online (Sandbox Code Playgroud)

然后调用模块create_key_vault设置false为不创建它:

module "test_westcentralus" {
  source = "modules/test"

  location         = "centralus"
  environment      = "${var.environment}"
  create_key_vault = false
}
Run Code Online (Sandbox Code Playgroud)