Исключая ресурс в модуле Terraform - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть модуль 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}"
}

Я хочу исключить хранилище ключей во втором регионе / местоположении.

Terraform, похоже, не поддерживает if / else, поэтому я не уверен, какие у меня есть варианты.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Ответ ydaetskcoR работает отлично, однако вы можете сделать это и в обратном порядке, используя значение переменной по умолчанию, если это лучше подходит для варианта использования.

Установите count arg как:

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
}
0 голосов
/ 07 ноября 2018

Можно условно создать ресурсы, задав для мета-параметра count значение 0 и используя условный троичный оператор .

Итак, вы бы получили что-то вроде этого:

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
}
...