了解公共 IP 地址前缀,以及如何创建、更改和删除此类地址。 公共 IP 地址前缀是一系列连续的标准 SKU 公共 IP 地址。
创建公共 IP 地址资源时,可以从前缀分配一个静态公共 IP 地址,并将该地址关联到虚拟机、负载均衡器或其他资源。 有关详细信息,请参阅公共 IP 地址前缀概述。
如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
使用 Terraform 可以定义、预览和部署云基础结构。 使用 Terraform 时,请使用 HCL 语法来创建配置文件。 利用 HCL 语法,可指定 Azure 这样的云提供程序和构成云基础结构的元素。 创建配置文件后,请创建一个执行计划,利用该计划,可在部署基础结构更改之前先预览这些更改。 验证了更改后,请应用该执行计划以部署基础结构。
在这篇文章中,你将学会如何:
- 使用 random_pet 为 Azure 资源组名称创建随机宠物名称
- 使用 azurerm_resource_group 创建 Azure 资源组
- 创建名为 myIPv4 的标准区域冗余公共 IPv4 地址前缀
- 创建名为 myIPv4Zonal 的标准区域公共 IPv4 地址
- 创建名为 myIPv4NonZonal 的标准非区域公共 IPv4 地址
- 创建一个名为 myIPv4RPInternet 的标准公共 IPv4 地址,该地址支持路由首选项功能
- 创建名为 myIPv6 的标准区域冗余公共 IPv6 地址前缀
- 创建名为 myIPv6Zonal 的标准区域公共 IPv6 地址
- 创建名为 myIPv6NonZonal 的标准非区域公共 IPv6 地址
- 从 IP 前缀创建静态公共 IP IPv4 地址
- 从 IP 前缀创建静态公共 IP IPv6 地址
备注
本文的示例代码位于 Azure Terraform GitHub 存储库。 可以查看包含当前版本和早期版本的 Terraform 的测试结果的日志文件。
Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
# Random pet resource to generate a unique name for the resource group
resource "random_pet" "rg_name" {
prefix = var.resource_group_name_prefix
}
# Create a resource group
resource "azurerm_resource_group" "example" {
location = var.resource_group_location
name = random_pet.rg_name.id
}
在本部分中,使用 Azure PowerShell 创建区域冗余、区域和非区域公共 IP 前缀。
示例中的前缀为:
IPv4 - /28(16 个地址)
IPv6 - /124(16 个地址)
有关可用前缀大小的详细信息,请参阅前缀大小。
若要创建 IPv4 公共 IP 前缀,请将 IPv4 指定为 值。ip_version
若要创建区域冗余 IPv4 前缀,请将 ["1", "2", "3"] 指定为 值。zone
# Create a public IP prefix: IPv4 Zone redundant
resource "azurerm_public_ip_prefix" "my_ipv4" {
name = "myIPv4"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
ip_version = "IPv4"
prefix_length = 28
zones = ["1", "2", "3"]
}
若要创建 IPv4 公共 IP 前缀,并将路由首选项设置为 Internet,请将 RoutingPreference=Internet 添加到 块。tags
# Create a public IP prefix: IPv4 with Routing Preference set to Internet
resource "azurerm_public_ip_prefix" "my_ipv4_rp_internet" {
name = "myIPv4RPInternet"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
ip_version = "IPv4"
prefix_length = 28
tags = {
RoutingPreference = "Internet"
}
}
若要创建 IPv6 公共 IP 前缀,请将 IPv6 指定为 值。ip_version
若要创建区域冗余 IPv6 前缀,请将 ["1", "2", "3"] 指定为 值。zone
# Create a public IP prefix: IPv6 Zone redundant
resource "azurerm_public_ip_prefix" "my_ipv6" {
name = "myIpv6"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
ip_version = "IPv6"
prefix_length = 124
zones = ["1", "2", "3"]
}
在创建前缀后,可以从前缀创建静态 IP 地址。 在本部分中,你将了解如何创建前缀,然后创建指向前缀的地址。
# Create a public IP prefix: IPv4
resource "azurerm_public_ip_prefix" "my_public_ip_prefix_ipv4" {
name = "myPublicIpPrefix1"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
ip_version = "IPv4" # Default
prefix_length = 28
}
# Create a public IP (IPv4) and specify the public IP prefix
resource "azurerm_public_ip" "my_public_ip_ipv4" {
name = "myPublicIPIPv4"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
sku = "Standard"
allocation_method = "Static"
ip_version = "IPv4"
public_ip_prefix_id = azurerm_public_ip_prefix.my_public_ip_prefix_ipv4.id
}
备注
仅使用标准 SKU 创建的静态公共 IP 地址可从前缀范围进行分配。 若要详细了解公共 IP 地址 SKU,请参阅公共 IP 地址。
本部分介绍如何在命令行中删除前缀。
若要删除公共 IP 前缀,请使用 az network public-ip prefix delete。
az network public-ip prefix delete \
--resource-group <resource_group_name>
--name <public_ip_prefix_name> \
不再需要通过 Terraform 创建的资源时,请执行以下步骤:
运行 terraform plan 并指定
destroy
标志。terraform plan -destroy -out main.destroy.tfplan
要点:
-
terraform plan
命令将创建一个执行计划,但不会执行它。 它会确定需要执行哪些操作以创建配置文件中所需的设置。 此模式允许你在对实际资源进行任何更改之前验证执行计划是否符合预期。 - 使用可选
-out
参数可以为计划指定输出文件。 使用-out
参数可以确保所查看的计划与所应用的计划完全一致。
运行 terraform apply 以应用执行计划。
terraform apply main.destroy.tfplan