我正在尝试使用私有(private)负载均衡器部署基础设施:
.....
resource "azurerm_lb" "private" {
name = "${var.name}-${var.live}-private-lb"
location = data.azurerm_resource_group.rg.location
resource_group_name = data.azurerm_resource_group.rg.name
sku = var.sku
frontend_ip_configuration {
name = "frontend"
subnet_id = var.subnet_id != "" ? var.subnet_id : null
private_ip_address = (var.subnet_id != "" && var.private_ip != "") ? var.private_ip : null
private_ip_address_allocation = var.subnet_id != "" ? (var.subnet_id == "" ? "Static" : "Dynamic") : null
}
}
......
但我收到错误消息:
..../frontendIPConfigurations/frontend must reference either a Subnet, Public IP Address or Public IP Prefix." Details=[]
为什么以及如何解决这个问题?我不知道缺少哪个配置。 谢谢
最佳答案
内部负载均衡器与公共(public)负载均衡器不同,它已分配到子网并且没有公共(public) IP 地址。显示错误时,前端应引用子网、公共(public) IP 地址或公共(public) IP 前缀,并且在引用时该子网应已存在。您可以使用 data source subnet访问有关现有资源的信息或为负载均衡器创建子网和 VNet。
例如,以下内容对我有用。
data "azurerm_resource_group" "rg" {
name = "mytestrg"
}
variable "sku" {
default = "basic"
}
variable "private_ip" {
default = "172.19.0.100"
}
variable "env" {
default="Static"
}
data "azurerm_subnet" "test" {
name = "default"
virtual_network_name = "vnet1"
resource_group_name = "${data.azurerm_resource_group.rg.name}"
}
resource "azurerm_lb" "test" {
name = "mytestlb"
location = "${data.azurerm_resource_group.rg.location}"
resource_group_name = "${data.azurerm_resource_group.rg.name}"
sku = "${var.sku}"
frontend_ip_configuration {
name = "frontend"
subnet_id = "${data.azurerm_subnet.test.id}"
private_ip_address = "${var.env=="Static"? var.private_ip: null}"
private_ip_address_allocation = "${var.env=="Static"? "Static": "Dynamic"}"
}
}
关于azure - Terraform 私有(private) azure 负载均衡器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57067528/