排除 Terraform 模块中的资源
Excluding resource in Terraform module
我有一个我构建的 Terraform 模块,它将模块的两个实例部署到一个单独的区域。在这个模块中有一个密钥库。我只希望密钥保管库出现在两个区域之一中。
这是我的模块:
resource "azurerm_resource_group" "test" {
name = "test"
location = "${var.location}"
}
resource "azurerm_key_vault" "keyvault" {
name = "keyvault"
}
这是我的main.tf
module "test_uswest2" {
source = "modules/test"
location = "westus2"
environment = "${var.environment}"
}
module "test_westcentralus" {
source = "modules/test"
location = "centralus"
environment = "${var.environment}"
}
我想排除第二个 region/location 中的密钥保管库。
Terraform 似乎不支持 if/else 所以我不确定我的选择是什么。
您可以通过设置 count
meta parameter to 0 and using the conditional ternary operator 来有条件地创建资源。
所以你会得到这样的东西:
variable "create_key_vault" {
default = true
}
resource "azurerm_key_vault" "keyvault" {
count = "${var.create_key_vault ? 0 : 1}"
name = "keyvault"
}
然后调用您的模块,将 create_key_vault
设置为 false
以不创建它:
module "test_westcentralus" {
source = "modules/test"
location = "centralus"
environment = "${var.environment}"
create_key_vault = false
}
ydaetskcoR 的回答很好,您也可以使用默认变量值以相反的方式进行,如果这更适合用例。
将 count
参数设置为:
count = "${var.create_key_vault}"
在模块的源代码中使用错误的默认值定义一个变量:
variable "create_key_vault" {
default = false
}
然后定义哪些模块需要覆盖它并将其设置为 true:
module "test_westcentralus" {
source = "modules/test"
location = "centralus"
environment = "${var.environment}"
create_key_vault = true
}
我有一个我构建的 Terraform 模块,它将模块的两个实例部署到一个单独的区域。在这个模块中有一个密钥库。我只希望密钥保管库出现在两个区域之一中。
这是我的模块:
resource "azurerm_resource_group" "test" {
name = "test"
location = "${var.location}"
}
resource "azurerm_key_vault" "keyvault" {
name = "keyvault"
}
这是我的main.tf
module "test_uswest2" {
source = "modules/test"
location = "westus2"
environment = "${var.environment}"
}
module "test_westcentralus" {
source = "modules/test"
location = "centralus"
environment = "${var.environment}"
}
我想排除第二个 region/location 中的密钥保管库。
Terraform 似乎不支持 if/else 所以我不确定我的选择是什么。
您可以通过设置 count
meta parameter to 0 and using the conditional ternary operator 来有条件地创建资源。
所以你会得到这样的东西:
variable "create_key_vault" {
default = true
}
resource "azurerm_key_vault" "keyvault" {
count = "${var.create_key_vault ? 0 : 1}"
name = "keyvault"
}
然后调用您的模块,将 create_key_vault
设置为 false
以不创建它:
module "test_westcentralus" {
source = "modules/test"
location = "centralus"
environment = "${var.environment}"
create_key_vault = false
}
ydaetskcoR 的回答很好,您也可以使用默认变量值以相反的方式进行,如果这更适合用例。
将 count
参数设置为:
count = "${var.create_key_vault}"
在模块的源代码中使用错误的默认值定义一个变量:
variable "create_key_vault" {
default = false
}
然后定义哪些模块需要覆盖它并将其设置为 true:
module "test_westcentralus" {
source = "modules/test"
location = "centralus"
environment = "${var.environment}"
create_key_vault = true
}