Terraform Azurerm - 输出 public IP 地址用作变量

Terraform Azurerm - Output public IP address to be used as a variable

现在我正在创建一个 Terraform 脚本来设置应用程序网关、aks、nsg 等...

我需要在我的 nsg 中设置入站规则以允许从我的应用程序网关 IP 地址到我的后端 vnet 的所有流量。

public IP 地址是在配置应用程序网关时创建的。有没有办法输出此 IP 地址并将其用作我的 nsg 上入站规则的变量?

我假设 IP 地址的名称是可预测的(在您的情况下,您将其定义为静态 IP)。 Terraform 输出有时无法获取 IP 地址,因为实际配置需要更长的时间。使用 ip_address 属性的 Terraform public IP 地址块 allows exporting of the IP address

静态IP

如果使用静态 IP 地址,您实际上可以这样做:

destination_address_prefix = azurerm_public_ip.myagw_pip.ip_address

动态IP

如果您使用的是动态 IP 地址,您可以只使用 data source to get the IP address,然后将其解析为您的 NSG 规则:

data "azurerm_public_ip" "agw_pip" {
  name                = azurerm_public_ip.myagw_pip.name
  resource_group_name = azurerm_public_ip.myagw_pip.resource_group_name
}

我从资源对象中引用了 nameresource_group_name 的值,因此 Terraform 在它们之间设置了隐式依赖关系。这样它会在创建后查询IP地址。

之后,您需要将 NSG 配置为类似以下内容:

destination_address_prefix = data.azurerm_public_ip.pip