Как определить необязательные переменные в Terraform со значениями по умолчанию, определенными в Консуле - PullRequest
0 голосов
/ 22 мая 2018

У меня есть скрипт Terraform с некоторыми переменными, заполненными из Consul.Я хочу использовать этот сценарий в двух разных сценариях:

  • Сценарий 1. Все идет правильно, используя значения по умолчанию из Consul.
  • Сценарий 2. Мне нужно переопределить некоторые переменные.

Я проверил документацию Terraform и заметил, что не могу использовать переменную, определенную в Consul, в качестве значения по умолчанию для какой-то другой переменной.В итоге я нашел следующий способ:

## vars.tf
## emulating undefined value using "null" string
variable "my_optional_variable" { default = "null" } 

## main.tf
my_optional_variable = "${var.my_optional_variable == "null" ? data.consul_keys.my_optional_variable : var.my_optional_variable}"

Может кто-нибудь показать мне лучший способ сделать это? Как избежать взлома с "нулевой" строкой?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 августа 2018

Другой вариант - coalesce, который работает с пустыми строками, поэтому он немного лучше, чем ваша строка "null".

Учитывая ваш сценарий или аналогичный случай с двумя переменными / источниками данных

variable "my_default_value" {
  default = "CentOS 7"
}
variable "my_optional_variable" {
  default = ""
}

Вы можете взять "первое непустое значение из заданных аргументов. Необходимо указать как минимум два аргумента."

data "openstack_images_image_v2" "bastion_image" {
  name = "${coalesce(var.my_optional_variable, var.my_default_value)}"
}
0 голосов
/ 22 мая 2018

Вы можете использовать файл переопределения .Итак, если у вас есть vars.tf, содержащее:

variable "my_optional_variable" {
  default = "null"
}

И override.tf, содержащее:

variable "my_optional_variable" {
  default = "not null"
}

, тогда ${var.my_optional_variable} должно равняться not null.Файлы переопределения загружаются последними и объединяются в вашу конфигурацию.Вместо этого добавляются вместе, как и другие .tf файлы в каталоге.

...