假设我有一个模块,它会生成一些 ID: 模块.tf:
resource "random_id" "etcdapiserver-id" {
byte_length = 4
count = "${var.etcd_apiserver_count}"
}
模块输出.tf:
output "etcdapiserver_hostname_list" {
value = ["${random_id.etcdapiserver-id.*.hex}"]
}
它似乎工作正常并且列表最终成功输出:
terraform output --module=module
etcdapiserver_hostname_list = [
751adf6a,
9e573ee7,
edb94de3
]
现在我想在主 terraform 配置中使用此列表中的元素。假设我在 openstack 上创建了几个计算实例: 主程序:
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”的有效输出
有什么办法吗?谢谢!
答案1
Terraform 贡献者在 GitHub 上回答了我的问题。
访问列表元素的一般语法是 list[index]。对于您来说,应该是类似 module.ignition.etcdapiserver_hostname_list[count.index] 的形式。