我正在使用 Terraform 在 Azure 上部署基础设施, 我正在使用 Linux 规模集和负载均衡器的模块,并使用
azurerm_lb_nat_pool
来通过 SSH 访问虚拟机,
我现在需要检索 NAT 规则的端口以用于其他目的。
我一生都找不到检索它们的方法,浏览了所有 terraform 文档,但在任何
data
源或属性引用下都找不到它。
这是我的LB代码:
resource "azurerm_lb" "front-load-balancer" {
name = "front-load-balancer"
location = var.def-location
resource_group_name = var.rg-name
sku = "Standard"
frontend_ip_configuration {
name = "frontend-IP-configuration"
public_ip_address_id = var.public-ip-id
}
}
resource "azurerm_lb_nat_pool" "lb-nat-pool" {
resource_group_name = var.rg-name
loadbalancer_id = azurerm_lb.front-load-balancer.id
name = "lb-nat-pool"
protocol = "Tcp"
frontend_port_start = var.frontend-port-start
frontend_port_end = var.frontend-port-end
backend_port = 22
frontend_ip_configuration_name = "frontend-IP-configuration"
}
如有任何帮助,我们将不胜感激。
编辑: 我尝试在
inbound_nat_rules
前端 IP 配置上导出 azurerm_lb
导出,它提供了我目前不知道如何从中提取端口的资源列表::
output "frontend-ip-confguration-inbound-nat-rules" {
value = azurerm_lb.front-load-balancer.frontend_ip_configuration[*].inbound_nat_rules
}
结果如下:
Changes to Outputs:
+ LB-frontend-IP-confguration-Inbound-nat-rules = [
+ [
+ "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/weight-tracker-stage-rg/providers/Microsoft.Network/loadBalancers/front-load-balancer/inboundNatRules/lb-nat-pool.3",
+ "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/weight-tracker-stage-rg/providers/Microsoft.Network/loadBalancers/front-load-balancer/inboundNatRules/lb-nat-pool.4",
+ "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/weight-tracker-stage-rg/providers/Microsoft.Network/loadBalancers/front-load-balancer/inboundNatRules/lb-nat-pool.6",
],
]
我已经能够使用以下命令恢复端口。您可以使用
azapi_resource
并调用 API 在 terraform 中执行此操作。
az network lb inbound-nat-rule list --lb-name "{}" --resource-group "{}" --query "[].{Port:frontendPort}"
[
{
"Port": 49153
},
{
"Port": 49154
}
]