terraform: динамический атрибут из переменной (в синтаксисе splat)
В terraform HCL возможно ли динамически ссылаться на атрибут объекта из переменной?
То есть:
variable "attribute" {
type = "string"
}
data "terraform_remote_state" "thing" {
not_really_important
}
output "chosen" {
value = "${data.terraform_remote_state.thing.$var.attribute}"
}
Более конкретно в моей ситуации, я собираюсь сделать это с помощью синтаксиса splat:
variable "attribute" {
type = "string"
}
data "terraform_remote_state" "thing" {
count = 3 # really this is also a variable
not_really_important
}
output "chosen" {
value = "${data.terraform_remote_state.thing.*.$var.attribute}"
}
Я пробовал такие вещи, как lookup(data.terraform_remote_state.thing, var.attribute)
и (для проблемы сплат) lookup(element(data.terraform_remote_state.*, count.index), var.attribute)
но они оба жалуются на то, что моя ссылка на атрибут является неполной / в неправильной форме.
0 ответов
Terraform версия 0.12
https://www.terraform.io/upgrade-guides/0-12.html
Вы можете получить доступ к terraform_remote_state
выводит напрямую в виде карты.
получить доступ к выходным файлам состояния в виде карты data.terraform_remote_state.thing.outputs
output "chosen" {
value = "${lookup(data.terraform_remote_state.thing.outputs, "property1")}"
}
Terraform версия 0.11 или ниже
Если у вас есть роскошь изменить outputs
переменные в файле состояния вы можете установить интересующую вас переменную в map
а затем найдите переменную по индексу.
"outputs": {
"thing_variable": {
"type": "map",
"value": {
"property1": "foobar"
}
}
}
Затем сослаться на property1
Атрибут в вашей terraform посмотрите на выходную переменную "thing_variable".
data "terraform_remote_state" "thing" {
}
output "chosen" {
#"property1" could be a variable var.attribute = "property1"
value = "${lookup(data.terraform_remote_state.thing_variable, "property1")}"
}