O colaborador do Terraform respondeu à minha pergunta no GitHub.
The general syntax for accessing the element of a list is list[index]. In your case, that would be something like module.ignition.etcdapiserver_hostname_list[count.index].
Digamos que eu tenha um módulo, que gera alguns ids: 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}"]
}
Parece funcionar bem e a lista termina na saída com sucesso:
terraform output --module=module
etcdapiserver_hostname_list = [
751adf6a,
9e573ee7,
edb94de3
]
Agora quero usar elementos dessa lista na configuração principal do terraform. Digamos que estou criando várias instâncias de computação em openstack: main.tf:
resource "openstack_compute_instance_v2" "etcdapiserver" {
count = "3"
name = "etcdapi-node-${element(module.ignition.etcdapiserver_hostname_list.*, count.index)}"
Mas isso falharia com
Error: resource 'openstack_compute_instance_v2.etcdapiserver' config: "etcdapiserver_hostname_list.*" is not a valid output for module "ignition"
Existe alguma maneira de fazer isso? Obrigado!
O colaborador do Terraform respondeu à minha pergunta no GitHub.
The general syntax for accessing the element of a list is list[index]. In your case, that would be something like module.ignition.etcdapiserver_hostname_list[count.index].
Tags terraform