应用terraform时出错,我正在用云端部署处理terraform。我想从数据locals.tf vars块中的template_file文件中获取ip地址。当我执行terraform应用时,它将显示“属性vars元素字符串所需的不合适的值”。locals.tf
locals {
workers = {
"worker-1" = { host_name = "wrkr-1", vm_ip = "90" }
"worker-2" = { host_name = "wrkr-2", vm_ip = "91" }
"worker-3" = { host_name = "wrkr-3", vm_ip = "92" }
"worker-4" = { host_name = "wrkr-4", vm_ip = "93" }
"worker-5" = { host_name = "wrkr-5", vm_ip = "94" }
"worker-6" = { host_name = "wrkr-6", vm_ip = "95" }
}
controllers = {
"controllers-1" = { host_name = "ctrl-1", vm_ip = "87" }
"controllers-2" = { host_name = "ctrl-2", vm_ip = "88" }
"controllers-3" = { host_name = "ctrl-3", vm_ip = "89" }
}
}config.tf
data template_file "lb_userdata" {
template = file("${path.module}/cloud-init/lb-cloud-config.yaml")
vars = {
network_cidr = var.network_cidr
controller_ip = local.controllers
ip_address = var.loadbalancer_ip
}
}感谢你的任何帮助
谢谢
发布于 2022-07-11 08:11:12
谢谢,我找到了一个技巧,我们可以做到这一点。数据文件如下所示
data template_file "lb_userdata" {
template = file("${path.module}/cloud-init/lb-cloud-config.yaml")
vars = {
network_cidr = var.network_cidr
controller_ip = join(",",([for k in local.controllers: k.vm_ip ]))
ip_address = var.loadbalancer_ip
}
}我使用join函数并使用for循环来获得字符串的值。
这是我的lb_cloud_config.yaml文件
%{~ for f in split(",",controller_ip) ~}
server ${network_cidr}.${f}:30793
%{~ endfor ~}https://stackoverflow.com/questions/72909220
复制相似问题