Назад | Перейти на главную страницу

Terraform обращается к элементам списка из вывода модуля

Допустим, у меня есть модуль, который генерирует несколько идентификаторов: module.tf:

resource "random_id" "etcdapiserver-id" {
  byte_length         = 4
  count               = "${var.etcd_apiserver_count}"
}

module_output.tf:

output "etcdapiserver_hostname_list" {
  value = ["${random_id.etcdapiserver-id.*.hex}"]
}

Кажется, все работает нормально, и список успешно выводится:

terraform output --module=module

etcdapiserver_hostname_list = [
    751adf6a,
    9e573ee7,
    edb94de3
]

Теперь я хочу использовать элементы из этого списка в основном конфиге terraform. Допустим, я создаю несколько вычислительных экземпляров в openstack: main.tf:

resource "openstack_compute_instance_v2" "etcdapiserver" {
  count   = "3"
  name    = "etcdapi-node-${element(module.ignition.etcdapiserver_hostname_list.*, count.index)}"

Но это не сработает

Ошибка: конфигурация ресурса 'openstack_compute_instance_v2.etcdapiserver': «etcdapiserver_hostname_list. *» Не является допустимым выходом для модуля «ignition»

Есть ли способ это сделать? Спасибо!

Участник Terraform ответил на мой вопрос на GitHub.

Общий синтаксис для доступа к элементу списка - list [index]. В вашем случае это будет что-то вроде module.ignition.etcdapiserver_hostname_list [count.index].