快速入门:使用 Terraform 创建公共 IP 地址

本快速入门介绍如何创建 Azure 公共 IP 地址。 Azure 中的公共 IP 地址用于以公共方式连接到 Azure 资源。 公共 IP 地址有两种可用 SKU:基本和标准。 公共 IP 地址可分为两层:区域和全局。 公共 IP 地址的路由首选项在创建时设置。 可用的选项包括 Internet 路由和 Microsoft 网络路由。

公共 IP 地址的示例用法关系图。将公共 IP 地址分配给负载均衡器。

如果您还没有 Azure 试用订阅,请在开始之前创建一个试用订阅。

使用 Terraform 可以定义、预览和部署云基础结构。 使用 Terraform 时,请使用 HCL 语法来创建配置文件。 HCL 语法允许你指定云提供商(如 Azure)和构成云基础结构的元素。 创建配置文件后,请创建一个执行计划,利用该计划,可在部署基础结构更改之前先预览这些更改。 验证更改后,应用执行计划来部署基础结构。

在这篇文章中,你将学会如何:

  • 使用 random_pet 为 Azure 资源组名称创建随机宠物名称
  • 使用 azurerm_resource_group 创建 Azure 资源组
  • 创建名为“myStandardPublicIP”的标准区域冗余公共 IPv4 地址
  • 在区域 2 中创建名为“myZonalStandardPublicIP”的标准区域公共 IPv4 地址
  • 创建支持路由首选项功能的标准静态公共 IPv4 地址 myRoutingPreferenceStandardPublicIP
  • 创建支持路由首选项功能的标准静态公共 IPv4 地址 myGlobalTierStandardPublicIP

注释

本文中的示例代码位于 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
}

创建公共 IP

创建标准区域冗余 IP 地址

本部分介绍如何创建标准区域冗余公共 IP 地址。

注释

对于生产工作负荷,建议使用标准 SKU 公共 IP。 有关 SKU 的详细信息,请参阅公共 IP 地址

以下命令片段适用于 API 2020-08-01 或更高版本。 有关当前正在使用的 API 版本的详细信息,请参阅资源提供程序和类型

# Create a public IP: IPv4 Standard SKU
resource "azurerm_public_ip" "myStandardPublicIP" {
  name                = "myStandardPublicIP"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  allocation_method   = "Static"
  sku                 = "Standard"

  ip_version          = "IPv4"
  zones               = ["1", "2", "3"]
}

重要

对于早于 2020-08-01 的 API 版本,请省略 zone 字段来创建区域冗余 IP 地址。

路由首选项和层

标准 SKU 静态公共 IPv4 地址支持路由首选项或全局层功能。

默认情况下,公共 IP 地址的路由首选项设置为“Microsoft 网络”,该网络通过 Microsoft 的全球广域网向用户传送流量。

相比传输 ISP 网络,选择“Internet”可最大限度减少 Microsoft 网络漫游,从而按成本优化费率传送流量。

以下代码片段使用类型为 Internet 的路由首选项创建新的标准区域冗余公用 IPv4 地址:

# Create a public IP: IPv4 with Routing Preference
resource "azurerm_public_ip" "myRoutingPreferenceStandardPublicIP" {
  name                = "myRoutingPreferenceStandardPublicIP"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  allocation_method   = "Static"
  sku                 = "Standard"

  ip_version          = "IPv4"

  ip_tags = {
    RoutingPreference = "Internet"
  }

  zones = ["1", "2", "3"]
}

清理资源

不再需要通过 Terraform 创建的资源时,请执行以下步骤:

  1. 运行 terraform plan 并指定 destroy 标志。

    terraform plan -destroy -out main.destroy.tfplan
    

要点

  • terraform plan 命令创建执行计划,但不执行它。 相反,它会确定需要执行哪些操作,以创建配置文件中指定的配置。 此模式允许你在对实际资源进行任何更改之前验证执行计划是否符合预期。
  • 使用可选 -out 参数可以为计划指定输出文件。 使用 -out 参数可以确保所查看的计划与所应用的计划完全一致。
  1. 运行 terraform apply 来应用执行计划。

    terraform apply main.destroy.tfplan
    

Azure 上的 Terraform 故障排除

排查在 Azure 上使用 Terraform 时遇到的常见问题

后续步骤