Из этого краткого руководства вы узнаете, как создать шлюз NAT с помощью портала Azure, Azure CLI, PowerShell, Bicep, шаблона ARM и Terraform. Служба шлюза NAT предоставляет масштабируемое исходящее подключение для виртуальных машин в Azure.
Создание шлюза NAT.
Перед развертыванием ресурса шлюза NAT и других ресурсов требуется создать группу ресурсов, которая будет содержать развертываемые ресурсы. На следующих шагах вы создадите группу ресурсов, ресурс шлюза NAT и общедоступный IP-адрес. Можно использовать один или несколько ресурсов общедоступного IP-адреса, префиксов общедоступных IP-адресов или обоих.
Сведения о префиксах общедоступного IP-адреса и шлюзе NAT см. в разделе "Управление шлюзом NAT".
В поле поиска в верхней части портала введите сетевой шлюз NAT. В результатах поиска выберите NAT-шлюзы.
Нажмите кнопку +Создать.
В разделе Создание шлюза NAT на вкладке Основные сведения введите или выберите следующие сведения:
|
Настройки |
Ценность |
|
Сведения о проекте |
|
| Подписка |
Выберите подписку Azure. |
| Группа ресурсов |
Выберите Создать новое.
Введите test-rg.
Нажмите кнопку ОК. |
|
Сведения об инстанции |
|
| Имя шлюза NAT |
Ввод шлюза NAT |
| Регион |
Выберите Восточный США 2 |
| Зона доступности |
Выберите "Нет зоны". |
| Время ожидания простоя TCP (минуты) |
Сохраните значение по умолчанию 4. |
Сведения о зонах доступности и шлюзе NAT см. в разделе шлюза NAT и зон доступности.
Откройте вкладку Outbound IP (Исходящий IP-адрес) или нажмите кнопку Next: Outbound IP (Далее: исходящий IP-адрес) внизу страницы.
На вкладке Outbound IP (Исходящий IP-адрес) введите или выберите следующие значения параметров:
|
Настройки |
Ценность |
| Общедоступные IP-адреса |
Выберите Создание общедоступного IP-адреса.
В поле "Имя" введите public-ip-nat.
Нажмите кнопку ОК. |
Перейдите на вкладку Просмотр и создание или нажмите синюю кнопку Просмотр и создание внизу страницы.
Нажмите кнопку "Создать".
Создание виртуальной сети и узла бастиона
Следующая процедура создает виртуальную сеть с ресурсной подсетью, подсетью Azure Bastion и узлом Azure Bastion.
На портале найдите и выберите "Виртуальные сети".
На странице Виртуальные сети выберите команду + Создать.
На вкладке Основные сведения подменю Создать виртуальную сеть введите или выберите нижеприведенную информацию:
| Настройки |
Ценность |
|
Сведения о проекте |
|
| Подписка |
Выберите подписку. |
| Группа ресурсов |
Выберите test-rg. |
|
Сведения об инстанции |
|
| Имя |
Введите vnet-1. |
| Регион |
Выберите регион (США) Восточная часть США 2. |
Нажмите кнопку "Далее ", чтобы перейти на вкладку "Безопасность ".
Выберите "Включить бастион Azure" в разделе "Бастион Azure" на вкладке "Безопасность".
Бастион Azure использует браузер для подключения к виртуальным машинам в виртуальной сети через безопасную оболочку (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе Azure см. в статье "Бастион Azure"
Замечание
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
Введите или выберите следующие сведения в Azure Bastion:
| Настройки |
Ценность |
| Имя хоста Azure Bastion |
Введите бастион. |
| Общедоступный IP-адрес Бастиона Azure |
Выберите " Создать общедоступный IP-адрес".
Введите public-ip-bastion в поле "Имя".
Нажмите кнопку ОК. |
Нажмите Далее, чтобы перейти на вкладку IP-адреса.
В поле адресного пространства в подсетях выберите подсеть по умолчанию .
В разделе "Изменить подсеть" введите или выберите следующие сведения:
| Настройки |
Ценность |
| Назначение подсети |
Оставьте значение «По умолчанию». |
| Имя |
Введите subnet-1. |
|
IPv4 |
|
| Диапазон адресов IPv4 |
Оставьте значение по умолчанию 10.0.0.0/16. |
| Начальный адрес |
Оставьте значение по умолчанию 10.0.0.0. |
| Размер |
Оставьте значение по умолчанию /24(256 адресов). |
|
Безопасность |
|
| Шлюз NAT |
Выберите nat-gateway. |
Нажмите кнопку "Сохранить".
Выберите "Проверка и создание " в нижней части экрана и при прохождении проверки нажмите кнопку "Создать".
Создание тестовой виртуальной машины
Следующая процедура создает тестовую виртуальную машину с именем vm-1 в виртуальной сети.
На портале найдите и выберите "Виртуальные машины".
На виртуальных машинах нажмите кнопку +Создать, а затем виртуальную машину Azure.
На вкладке Основные сведения страницы Создание виртуальной машины введите или выберите следующие значения параметров:
| Настройки |
Ценность |
|
Сведения о проекте |
|
| Подписка |
Выберите подписку. |
| Группа ресурсов |
Выберите test-rg. |
|
Сведения об инстанции |
|
| Название виртуальной машины |
Введите vm-1. |
| Регион |
Выберите регион Восточная часть США 2. |
| Параметры доступности |
Выберите "Не требуется избыточность инфраструктуры". |
| Тип безопасности |
Оставьте значение по умолчанию "Стандартный". |
| Изображение |
Выберите Ubuntu Server 22.04 LTS — x64 Gen2. |
| Архитектура виртуальной машины |
Оставьте значение по умолчанию x64. |
| Размер |
Выберите размер. |
|
Учетная запись администратора |
|
| Тип аутентификации |
выберите Пароль. |
| Имя пользователя |
Введите azureuser. |
| Пароль |
Введите пароль. |
| Подтверждение пароля |
Повторно введите пароль. |
|
Правила входящего порта |
|
| Общедоступные входящие порты |
Выберите "Нет". |
Выберите вкладку "Сеть" в верхней части страницы.
На вкладке Сеть введите или выберите следующие значения параметров:
| Настройки |
Ценность |
|
Сетевой интерфейс |
|
| Виртуальная сеть |
Выберите vnet-1. |
| Подсеть |
Выберите субсеть-1 (10.0.0.0/24). |
| Общедоступный IP-адрес |
Выберите "Нет". |
| Группа безопасности сети NIC |
Выберите Дополнительно. |
| Настройка группы безопасности сети |
Выберите Создать новое.
Введите nsg-1 для имени.
Оставьте остальные значения по умолчанию и нажмите кнопку "ОК". |
Оставьте остальные параметры по умолчанию и нажмите кнопку "Просмотр и создание".
Проверьте параметры и выберите Создать.
Замечание
Виртуальные машины в виртуальной сети с узлом бастиона не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Вы можете удалить общедоступные IP-адреса из любых виртуальных машин в размещенных виртуальных сетях бастиона. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Замечание
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс Azure NAT Gateway присвоен подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.
Создайте группу ресурсов
Создайте группу ресурсов с помощью New-AzResourceGroup. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.
В следующем примере создается группа ресурсов с именем test-rg в расположении eastus2 :
$rsg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rsg
Создание шлюза NAT
В этом разделе описано, как создать шлюз NAT и вспомогательные ресурсы.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'public-ip-nat'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1,2,3
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'eastus2'
PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat
## Create subnet config and associate NAT gateway to subnet##
$subnet = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.0.1.0/26'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host ##
$ip = @{
Name = 'public-ip'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1,2,3
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
Узлу бастиона может потребоваться несколько минут для развертывания. Дождитесь развертывания узла бастиона, прежде чем перейти к следующему разделу.
Создать виртуальную машину
В этом разделе описано, как создать виртуальную машину для тестирования шлюза NAT и проверить общедоступный IP-адрес исходящего подключения.
# Set the administrator and password for the VM ##
$cred = Get-Credential
## Place the virtual network into a variable ##
$vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
## Create network interface for virtual machine ##
$nic = @{
Name = "nic-1"
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration ##
$vmsz = @{
VMName = 'vm-1'
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = 'vm-1'
Credential = $cred
}
$vmimage = @{
PublisherName = 'Canonical'
Offer = '0001-com-ubuntu-server-jammy'
Skus = '22_04-lts-gen2'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Linux `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus2'
VM = $vmConfig
}
New-AzVM @vm
Прежде чем перейти к следующему разделу, дождитесь завершения создания виртуальной машины.
Создайте группу ресурсов
Создайте группу ресурсов с помощью az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.
az group create \
--name test-rg \
--location eastus2
Создание шлюза NAT
В этом разделе описано, как создать шлюз NAT и вспомогательные ресурсы.
Создание общедоступного IP-адреса
Для доступа к Интернету требуется один или несколько общедоступных IP-адресов для шлюза NAT. Чтобы создать ресурс общедоступного IP-адреса, воспользуйтесь командой az network public-ip create.
az network public-ip create \
--resource-group test-rg \
--name public-ip-nat \
--sku Standard \
--allocation-method Static \
--location eastus2 \
--zone 1 2 3
Создание ресурса шлюза NAT
Создайте ресурс шлюза NAT с помощью az network nat gateway create. Шлюз NAT использует общедоступный IP-адрес, созданный на предыдущем шаге. Таймаут простоя установлен на 10 минут.
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--public-ip-addresses public-ip-nat \
--idle-timeout 10
Создание виртуальной сети и подсети
Создайте виртуальную сеть с именем vnet-1 с подсетью с именем subnet-1 с помощью az network vnet create. Диапазон IP-адресов для виртуальной сети: 10.0.0.0/16. Подсеть в виртуальной сети: 10.0.0.0/24.
az network vnet create \
--resource-group test-rg \
--name vnet-1 \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefixes 10.0.0.0/24
Создание подсети Бастиона Azure
Создайте подсеть Бастиона Azure с именем AzureBastionSubnet с помощью az network vnet subnet create:
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Связывание шлюза NAT с подсетью
Свяжите шлюз NAT с подсетью с помощью az network vnet subnet update:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--nat-gateway nat-gateway
Создание общедоступного IP-адреса для узла Бастиона
Создайте общедоступный IP-адрес узла Бастиона с помощью az network public-ip create:
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Создание Бастионного хоста
Создайте узел Bastion Azure с помощью az network bastion create:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
Развертывание узла Бастиона может занять несколько минут. Дождитесь развертывания узла Бастиона, прежде чем перейти к следующему разделу.
Создать виртуальную машину
Создайте виртуальную машину с именем vm-1 , чтобы проверить шлюз NAT и проверить общедоступный IP-адрес исходящего подключения. Используйте az vm create:
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--admin-username azureuser \
--authentication-type password \
--public-ip-address "" \
--subnet subnet-1 \
--vnet-name vnet-1
Прежде чем перейти к следующему разделу, дождитесь завершения создания виртуальной машины.
Этот файл Terraform развертывает виртуальную сеть, ресурс шлюза NAT и виртуальную машину Ubuntu. Виртуальная машина Ubuntu развертывается в подсети, связанной с ресурсом шлюза NAT.
Сценарий также создает случайный открытый ключ SSH и связывает его с виртуальной машиной для безопасного доступа. Открытый ключ выводится в конце выполнения скрипта.
Сценарий использует поставщиков Random и AzAPI в дополнение к поставщику AzureRM. Случайный поставщик используется для создания уникального имени группы ресурсов и ключа SSH. Поставщик AzAPI используется для создания открытого ключа SSH.
Как и в случае с открытым ключом, имена созданной группы ресурсов, виртуальной сети, подсети и шлюза NAT печатаются при запуске скрипта.
Terraform позволяет определять, просматривать и развертывать облачную инфраструктуру. Используя Terraform, вы создаёте файлы конфигурации, применяя синтаксис HCL. Синтаксис HCL позволяет указать поставщика облачных служб, таких как Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации вы создаете план выполнения, который позволяет предварительно просмотреть изменения в инфраструктуре до их внедрения. После того как вы проверите изменения, примените план выполнения для развертывания инфраструктуры.
Создайте каталог для тестирования и выполнения примера кода Terraform и сделайте его текущим каталогом.
Создайте файл с именем main.tf и вставьте следующий код:
# Resource Group
resource "azurerm_resource_group" "rg" {
location = var.resource_group_location
name = "${random_pet.prefix.id}-rg"
}
# Virtual Network
resource "azurerm_virtual_network" "my_terraform_network" {
name = "${random_pet.prefix.id}-vnet"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
}
# Subnet 1
resource "azurerm_subnet" "my_terraform_subnet_1" {
name = "subnet-1"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.my_terraform_network.name
address_prefixes = ["10.0.0.0/24"]
}
# Public IP address for NAT gateway
resource "azurerm_public_ip" "my_public_ip" {
name = "public-ip-nat"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
allocation_method = "Static"
sku = "Standard"
}
# NAT Gateway
resource "azurerm_nat_gateway" "my_nat_gateway" {
name = "nat-gateway"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
}
# Associate NAT Gateway with Public IP
resource "azurerm_nat_gateway_public_ip_association" "example" {
nat_gateway_id = azurerm_nat_gateway.my_nat_gateway.id
public_ip_address_id = azurerm_public_ip.my_public_ip.id
}
# Associate NAT Gateway with Subnet
resource "azurerm_subnet_nat_gateway_association" "example" {
subnet_id = azurerm_subnet.my_terraform_subnet_1.id
nat_gateway_id = azurerm_nat_gateway.my_nat_gateway.id
}
# Create public IP for virtual machine
resource "azurerm_public_ip" "my_public_ip_vm" {
name = "public-ip-vm"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
allocation_method = "Static"
sku = "Standard"
}
# Create Network Security Group and rule
resource "azurerm_network_security_group" "my_terraform_nsg" {
name = "nsg-1"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
security_rule {
name = "SSH"
priority = 1001
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "22"
source_address_prefix = "*"
destination_address_prefix = "*"
}
}
# Create network interface
resource "azurerm_network_interface" "my_terraform_nic" {
name = "nic-1"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
ip_configuration {
name = "my_nic_configuration"
subnet_id = azurerm_subnet.my_terraform_subnet_1.id
private_ip_address_allocation = "Dynamic"
public_ip_address_id = azurerm_public_ip.my_public_ip_vm.id
}
}
# Connect the security group to the network interface
resource "azurerm_network_interface_security_group_association" "example" {
network_interface_id = azurerm_network_interface.my_terraform_nic.id
network_security_group_id = azurerm_network_security_group.my_terraform_nsg.id
}
# Generate random text for a unique storage account name
resource "random_id" "random_id" {
keepers = {
# Generate a new ID only when a new resource group is defined
resource_group = azurerm_resource_group.rg.name
}
byte_length = 8
}
# Create storage account for boot diagnostics
resource "azurerm_storage_account" "my_storage_account" {
name = "diag${random_id.random_id.hex}"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
account_tier = "Standard"
account_replication_type = "LRS"
}
# Create virtual machine
resource "azurerm_linux_virtual_machine" "my_terraform_vm" {
name = "vm-1"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
network_interface_ids = [azurerm_network_interface.my_terraform_nic.id]
size = "Standard_DS1_v2"
os_disk {
name = "myOsDisk"
caching = "ReadWrite"
storage_account_type = "Premium_LRS"
}
source_image_reference {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts-gen2"
version = "latest"
}
computer_name = "hostname"
admin_username = var.username
admin_ssh_key {
username = var.username
public_key = azapi_resource_action.ssh_public_key_gen.output.publicKey
}
boot_diagnostics {
storage_account_uri = azurerm_storage_account.my_storage_account.primary_blob_endpoint
}
}
resource "random_pet" "prefix" {
prefix = var.resource_group_name_prefix
length = 1
}
Создайте файл с именем outputs.tf и вставьте следующий код:
output "resource_group_name" {
description = "The name of the created resource group."
value = azurerm_resource_group.rg.name
}
output "virtual_network_name" {
description = "The name of the created virtual network."
value = azurerm_virtual_network.my_terraform_network.name
}
output "subnet_name_1" {
description = "The name of the created subnet 1."
value = azurerm_subnet.my_terraform_subnet_1.name
}
output "nat_gateway"{
description = "The name of the created NAT gateway."
value = azurerm_nat_gateway.my_nat_gateway.id
}
Создайте файл с именем providers.tf и вставьте следующий код:
terraform {
required_providers {
azapi = {
source = "azure/azapi"
version = "~>1.5"
}
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
random = {
source = "hashicorp/random"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {}
}
Создайте файл с именем ssh.tf и вставьте следующий код:
resource "random_pet" "ssh_key_name" {
prefix = "ssh"
separator = ""
}
resource "azapi_resource_action" "ssh_public_key_gen" {
type = "Microsoft.Compute/sshPublicKeys@2022-11-01"
resource_id = azapi_resource.ssh_public_key.id
action = "generateKeyPair"
method = "POST"
response_export_values = ["publicKey", "privateKey"]
}
resource "azapi_resource" "ssh_public_key" {
type = "Microsoft.Compute/sshPublicKeys@2022-11-01"
name = random_pet.ssh_key_name.id
location = azurerm_resource_group.rg.location
parent_id = azurerm_resource_group.rg.id
}
output "key_data" {
value = azapi_resource_action.ssh_public_key_gen.output.publicKey
}
Создайте файл с именем variables.tf и вставьте следующий код:
variable "resource_group_location" {
type = string
default = "eastus"
description = "Location of the resource group."
}
variable "resource_group_name_prefix" {
type = string
default = "rg"
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
}
variable "username" {
type = string
description = "The username for the local account that will be created on the new VM."
default = "azureuser"
}
Запустите terraform init, чтобы инициализировать развертывание Terraform. Эта команда загружает поставщика Azure, необходимого для управления вашими ресурсами в Azure.
terraform init -upgrade
Основные моменты:
- Параметр
-upgrade обновляет необходимые плагины провайдера до самой последней версии, которая соответствует ограничениям версии конфигурации.
Запустите команду terraform plan, чтобы создать план выполнения.
terraform plan -out main.tfplan
Основные моменты:
- Команда
terraform plan создает план выполнения, но не выполняет его. Вместо этого он определяет, какие действия необходимы для создания конфигурации, указанной в ваших конфигурационных файлах. Данный шаблон позволяет вам убедиться, что план выполнения соответствует вашим ожиданиям, прежде чем вносить какие-либо изменения в реальные ресурсы.
- Необязательный параметр
-out позволяет указать выходной файл для плана. Использование параметра -out обеспечивает, что план, который вы просмотрели, будет применен точно в таком виде.
Выполните команду terraform apply, чтобы применить план выполнения к вашей облачной инфраструктуре.
terraform apply main.tfplan
Основные моменты:
- Пример команды
terraform apply предполагает, что вы ранее выполнили команду terraform plan -out main.tfplan.
- Если вы указали другое имя файла для параметра
-out, используйте то же имя файла при вызове terraform apply.
- Если вы не использовали параметр
-out, вызовите terraform apply без параметров.
Проверка результатов
Azure CLI (Интерфейс командной строки для Azure)
Получите имя группы ресурсов Azure.
resource_group_name=$(terraform output -raw resource_group_name)
Получите идентификатор шлюза NAT.
nat_gateway=$(terraform output -raw nat_gateway)
Запустите команду az network nat gateway show, чтобы отобразить подробную информацию о шлюзе NAT.
az network nat gateway show \
--resource-group $resource_group_name \
--ids $nat_gateway
PowerShell
Получите имя группы ресурсов Azure.
$resource_group_name=$(terraform output -raw resource_group_name)
Получите идентификатор шлюза NAT.
$nat_gateway=$(terraform output -raw nat_gateway)
Запустите Get-AzNatGateway, чтобы отобразить сведения о шлюзе NAT.
$nat = @{
Name = $nat_gateway
ResourceGroupName = $resource_group_name
}
Get-AzNatGateway @nat
В этом разделе описано, как протестировать шлюз NAT. Сначала вы обнаружите общедоступный IP-адрес шлюза NAT. Затем подключитесь к тестовой виртуальной машине и проверьте исходящее подключение через общедоступный IP-адрес шлюза NAT.
Дополнительные сведения о шлюзе Azure NAT см. в следующем разделе: