Terraform acessando elementos da lista a partir da saída do módulo

1

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!

    
por Victor Bessonov 05.07.2018 / 12:30

1 resposta

1

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].

    
por 06.07.2018 / 08:46

Tags