应用terraform时出错我正在使用cloud-init部署terraform。我想从本地获取IP地址。template_file vars块中的Tf文件。当我做tertransform应用时,它会显示"属性变量不合适的值"one_answers"元素字符串需要"。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
}
}
感谢您的帮助
感谢谢谢我发现了一个窍门,我们可以做到这一点。数据文件如下
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 ~}