Terraform 检索入站 NAT 规则端口

问题描述 投票:0回答:1

我正在使用 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",
        ],
    ]
azure terraform nat azure-vm-scale-set azure-load-balancer
1个回答
0
投票

我已经能够使用以下命令恢复端口。您可以使用

azapi_resource
并调用 API 在 terraform 中执行此操作。

az network lb inbound-nat-rule list --lb-name "{}" --resource-group "{}" --query "[].{Port:frontendPort}"

[
  {
    "Port": 49153
  },
  {
    "Port": 49154
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.