Допустим, у меня есть модуль, который генерирует несколько идентификаторов: 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].