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
}
我从资源对象中引用了 name
和 resource_group_name
的值,因此 Terraform 在它们之间设置了隐式依赖关系。这样它会在创建后查询IP地址。
之后,您需要将 NSG 配置为类似以下内容:
destination_address_prefix = data.azurerm_public_ip.pip
现在我正在创建一个 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
}
我从资源对象中引用了 name
和 resource_group_name
的值,因此 Terraform 在它们之间设置了隐式依赖关系。这样它会在创建后查询IP地址。
之后,您需要将 NSG 配置为类似以下内容:
destination_address_prefix = data.azurerm_public_ip.pip