Я использую следующую версию terraform:
root@sflowc01:~/terraform_proj# terraform version
Terraform v0.14.2
+ provider registry.terraform.io/dmacvicar/libvirt v0.6.2
+ provider registry.terraform.io/hashicorp/template v2.2.0
В моем модуле (./modules/singlevm/main.tf)
я определил вывод как:
output "ips" {
value = libvirt_domain.db1.network_interface.0.addresses
}
Когда я запускаю этот модуль в автономном режиме, я получаю результат в виде списка, например: (как и ожидалось)
ips = tolist([
"192.168.122.167",
])
Мой tfvars определяется как:
myvms = {
vm1 = {
hostname = "centos01"
osdisk_gb = 20
CPU_Count = 4
RAM = 256
Image = "CentOS-7-x86_64-GenericCloud.qcow2"
}
vm2 = {
hostname = "ubuntu01"
osdisk_gb = 40
CPU_Count = 8
RAM = 512
Image = "ubuntu-16.04-server-cloudimg-amd64-disk1.img"
}
}
В моем корневом модуле я создаю несколько виртуальных машин, используя for_each, и пытаюсь получить тот же вывод из корневого модуля (./main.tf)
module "kvm_instances" {
source = "./modules/singlevm"
for_each = var.myvms
...
}
output "all_ips" {
value = ["${module.kvm_instances.*.ips}"]
}
Я получаю ошибку
Error: Unsupported attribute
on main.tf line 23, in output "all_ips":
23: value = ["${module.kvm_instances.*.ips}"]
This object does not have an attribute named "ips".
Итак, как мне правильно извлечь IP-адреса всех виртуальных машин из моего корневого модуля? Заранее спасибо!