Узнайте, как создать виртуальную сеть Azure с помощью портала Azure, Azure CLI, Azure PowerShell, шаблона Azure Resource Manager (ARM), шаблона Bicep и Terraform. Две виртуальные машины и узел Бастиона Azure развертываются для тестирования подключения между виртуальными машинами в одной виртуальной сети. Узел Azure Bastion обеспечивает безопасное и беспрепятственное подключение RDP и SSH к виртуальным машинам прямо через портал Azure по протоколу SSL.
Виртуальная сеть — это базовый стандартный блок для частных сетей в Azure. Виртуальная сеть Azure позволяет ресурсам Azure, таким как виртуальные машины, безопасно взаимодействовать друг с другом и Интернетом.
Создайте группу ресурсов
Войдите на портал Azure с помощью своей учетной записи Azure.
В поле поиска в верхней части портала введите ResourceGroup. Выберите Группы ресурсов в результатах поиска.
Нажмите кнопку +Создать.
На вкладке "Основы" создайте группу ресурсов, введите или выберите следующие сведения:
| Настройки |
Ценность |
| Подписка |
Выберите подписку. |
| Группа ресурсов |
Введите test-rg. |
| Регион |
Выберите регион Восточная часть США 2. |
Выберите Review + create.
Нажмите кнопку "Создать".
Создание виртуальной сети
В поле поиска в верхней части портала введите виртуальные сети. В результатах поиска выберите Виртуальные сети.
Нажмите кнопку +Создать.
На вкладке "Основы" создайте виртуальную сеть, введите или выберите следующие сведения:
| Настройки |
Ценность |
|
Сведения о проекте |
|
| Подписка |
Выберите подписку. |
| Группа ресурсов |
Выберите test-rg. |
|
Сведения об инстанции |
|
| Имя |
Введите vnet-1. |
| Регион |
Выберите регион Восточная часть США 2. |
Нажмите кнопку "Далее ", чтобы перейти на вкладку "Безопасность ".
Нажмите Далее, чтобы перейти на вкладку IP-адреса.
В поле адресного пространства в подсетях выберите подсеть по умолчанию .
В разделе "Изменить подсеть", введите или выберите следующие сведения:
| Настройки |
Ценность |
|
Сведения о подсети |
|
| Шаблон подсети |
Оставьте значение «По умолчанию». |
| Имя |
Введите subnet-1. |
| Начальный адрес |
Оставьте значение по умолчанию 10.0.0.0. |
| Размер подсети |
Оставьте значение по умолчанию /24 (256 адресов). |
Нажмите кнопку "Сохранить".
Выберите "Проверка и создание " в нижней части экрана и при прохождении проверки нажмите кнопку "Создать".
Развертывание Бастиона Azure
Бастион Azure использует браузер для подключения к виртуальным машинам в виртуальной сети через безопасную оболочку (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе Azure см. в статье Бастион Azure.
Замечание
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
В поле поиска в верхней части портала введите Бастион. Выберите Bastions в результатах поиска.
Нажмите кнопку +Создать.
На вкладке "Основы " создайте бастион, введите или выберите следующие сведения:
| Настройки |
Ценность |
|
Сведения о проекте |
|
| Подписка |
Выберите подписку. |
| Группа ресурсов |
Выберите test-rg. |
|
Сведения об инстанции |
|
| Имя |
Введите бастион. |
| Регион |
Выберите регион Восточная часть США 2. |
| Тир |
Выберите разработчика. |
|
Настройка виртуальных сетей |
|
| Виртуальная сеть |
Выберите vnet-1. |
Выберите Review + create.
Нажмите кнопку "Создать".
Создание виртуальных машин
Следующая процедура создает две виртуальные машины с именем vm-1 и vm-2 в виртуальной сети:
На портале найдите и выберите "Виртуальные машины".
На виртуальных машинах нажмите кнопку +Создать и выберите виртуальную машину Azure.
На вкладке Основные сведения страницы Создание виртуальной машины введите или выберите следующие значения параметров:
| Настройки |
Ценность |
|
Сведения о проекте |
|
| Подписка |
Выберите подписку. |
| Группа ресурсов |
Выберите test-rg. |
|
Сведения об инстанции |
|
| Название виртуальной машины |
Введите vm-1. |
| Регион |
Выберите регион Восточная часть США 2. |
| Параметры доступности |
Выберите "Не требуется избыточность инфраструктуры". |
| Тип безопасности |
Оставьте значение по умолчанию "Стандартный". |
| Изображение |
Выберите Ubuntu Server 22.04 LTS — x64 Gen2. |
| Архитектура виртуальной машины |
Оставьте значение по умолчанию x64. |
| Размер |
Выберите размер. |
|
Учетная запись администратора |
|
| Тип аутентификации |
Выберите Открытый ключ SSH. |
| Имя пользователя |
Введите azureuser. |
| SSH public key source (Источник открытого ключа SSH) |
Выберите Создать новую пару ключей. |
| Имя пары ключей |
Введите vm-1-key. |
|
Правила входящего порта |
|
| Общедоступные входящие порты |
Выберите "Нет". |
Выберите вкладку "Сеть ". Введите или выберите следующие сведения:
| Настройки |
Ценность |
|
Сетевой интерфейс |
|
| Виртуальная сеть |
Выберите vnet-1. |
| Подсеть |
Выберите субсеть-1 (10.0.0.0/24). |
| Общедоступный IP-адрес |
Выберите "Нет". |
| Группа безопасности сети NIC |
Выберите Дополнительно. |
| Настройка группы безопасности сети |
Выберите Создать новое.
Введите nsg-1 для имени.
Оставьте остальные значения по умолчанию и нажмите кнопку "ОК". |
Оставьте остальные параметры по умолчанию и нажмите кнопку "Просмотр и создание".
Проверьте параметры и выберите Создать.
Дождитесь развертывания первой виртуальной машины, а затем повторите предыдущие действия, чтобы создать вторую виртуальную машину со следующими параметрами:
| Настройки |
Ценность |
| Название виртуальной машины |
Введите vm-2. |
| SSH public key source (Источник открытого ключа SSH) |
Выберите Создать новую пару ключей. |
| Имя пары ключей |
Введите vm-2-key. |
| Виртуальная сеть |
Выберите vnet-1. |
| Подсеть |
Выберите субсеть-1 (10.0.0.0/24). |
| Общедоступный IP-адрес |
Выберите "Нет". |
| Группа безопасности сети NIC |
Выберите Дополнительно. |
| Настройка группы безопасности сети |
Выберите nsg-1. |
Замечание
Виртуальные машины в виртуальной сети с узлом Бастиона Azure не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Вы можете удалить общедоступные IP-адреса из любых виртуальных машин в виртуальных сетях, размещенных в Бастионе. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Замечание
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс Azure NAT Gateway присвоен подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.
Создайте группу ресурсов
Используйте New-AzResourceGroup , чтобы создать группу ресурсов для размещения виртуальной сети. Выполните следующий код, чтобы создать группу ресурсов с именем test-rg в регионе Azure eastus2 :
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
Создание виртуальной сети
Используйте New-AzVirtualNetwork , чтобы создать виртуальную сеть с именем vnet-1 с префиксом IP-адреса 10.0.0.0.0/16 в группе ресурсов test-rg и расположении eastus2 :
$vnet = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Azure развёртывает ресурсы на подсети внутри виртуальной сети. Используйте Add-AzVirtualNetworkSubnetConfig, чтобы создать конфигурацию подсети с именем subnet-1 с префиксом адреса 10.0.0.0/24:
$subnet = @{
Name = 'subnet-1'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Свяжите конфигурацию подсети с виртуальной сетью с помощью Set-AzVirtualNetwork:
$virtualNetwork | Set-AzVirtualNetwork
Развертывание Бастиона Azure
Azure Bastion использует ваш браузер для подключения к виртуальным машинам в вашей виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP), используя их частные IP-адреса. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе Azure см. в статье "Что такое Бастион Azure?".
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
Настройте подсеть Бастиона для виртуальной сети. Эта подсеть зарезервирована исключительно для ресурсов Бастиона и должна называться AzureBastionSubnet.
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Задайте конфигурацию:
$virtualNetwork | Set-AzVirtualNetwork
Создайте общедоступный IP-адрес бастиона. Сервер Бастиона использует общедоступный IP-адрес для доступа к SSH и RDP по порту 443.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
Используйте команду New-AzBastion для создания нового узла бастиона SKU Basic в AzureBastionSubnet:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
Развертывание ресурсов Бастиона занимает около 10 минут. Виртуальные машины можно создать в следующем разделе, пока бастион развертывается в виртуальной сети.
Создание виртуальных машин
Создание первой виртуальной машины
Создание виртуальной машины с помощью New-AzVM. В следующем примере создается виртуальная машина с именем vm-1 в виртуальной сети vnet-1 .
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "eastus2"
Name = "vm-1"
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = "" # No public IP address
SshKeyName = "vm-1-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
Создание второй виртуальной машины
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "eastus2"
Name = "vm-2"
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = "" # No public IP address
SshKeyName = "vm-2-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
Azure занимает несколько минут, чтобы создать виртуальные машины. После завершения создания виртуальных машин Azure возвращает выходные данные в PowerShell.
Замечание
Виртуальные машины в виртуальной сети с узлом Бастиона не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Общедоступные IP-адреса можно удалить из всех виртуальных машин в виртуальных сетях, размещенных в Бастионе. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Замечание
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс Azure NAT Gateway присвоен подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.
Создайте группу ресурсов
Используйте az group create , чтобы создать группу ресурсов для размещения виртуальной сети. Используйте следующий код для создания группы ресурсов с именем test-rg в регионе Azure eastus2 :
az group create \
--name test-rg \
--location eastus2
Создание виртуальной сети и подсети
Используйте az network vnet create, чтобы создать виртуальную сеть с именем vnet-1 с подсетью с именем subnet-1 в группе ресурсов test-rg:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefixes 10.0.0.0/24
Развертывание Бастиона Azure
Azure Bastion использует ваш браузер для подключения к виртуальным машинам в вашей виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP), используя их частные IP-адреса. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации.
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним. Дополнительные сведения о Бастионе Azure см. в статье "Что такое Бастион Azure?".
Используйте az network vnet subnet create для создания подсети Бастиона для виртуальной сети. Эта подсеть зарезервирована исключительно для ресурсов Бастиона и должна называться AzureBastionSubnet.
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Создайте общедоступный IP-адрес бастиона. Этот IP-адрес используется для подключения к узлу Бастиона из Интернета. Используйте az network public-ip create , чтобы создать общедоступный IP-адрес с именем public-ip в группе ресурсов test-rg :
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Используйте az network bastion create для создания узла Bastion в AzureBastionSubnet для вашей виртуальной сети.
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2 \
--sku Basic
Развертывание ресурсов Бастиона занимает около 10 минут. Виртуальные машины можно создать в следующем разделе, пока бастион развертывается в виртуальной сети.
Создание виртуальных машин
Создание первой виртуальной машины
Создайте виртуальную машину с помощью команды az vm create. В следующем примере создается виртуальная машина с именем vm-1 в виртуальной сети vnet-1 . Команда также создает ключи SSH, если они не существуют в расположении ключей по умолчанию. Этот --no-wait параметр создает виртуальную машину в фоновом режиме, чтобы перейти к следующему шагу.
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys \
--no-wait
Создание второй виртуальной машины
Создайте виртуальную машину с именем vm-2 в виртуальной сети vnet-1 .
az vm create \
--resource-group test-rg \
--name vm-2 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys
Создание виртуальной машины занимает несколько минут.
Замечание
Виртуальные машины в виртуальной сети с узлом Бастиона не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Общедоступные IP-адреса можно удалить из всех виртуальных машин в виртуальных сетях, размещенных в Бастионе. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Замечание
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс Azure NAT Gateway присвоен подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.
Проверьте шаблон
Шаблон, который вы используете в этом кратком руководстве, является частью шаблонов быстрого запуска Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.6.18.56646",
"templateHash": "10806234693722113459"
}
},
"parameters": {
"vnetName": {
"type": "string",
"defaultValue": "VNet1",
"metadata": {
"description": "VNet name"
}
},
"vnetAddressPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/16",
"metadata": {
"description": "Address prefix"
}
},
"subnet1Prefix": {
"type": "string",
"defaultValue": "10.0.0.0/24",
"metadata": {
"description": "Subnet 1 Prefix"
}
},
"subnet1Name": {
"type": "string",
"defaultValue": "Subnet1",
"metadata": {
"description": "Subnet 1 Name"
}
},
"subnet2Prefix": {
"type": "string",
"defaultValue": "10.0.1.0/24",
"metadata": {
"description": "Subnet 2 Prefix"
}
},
"subnet2Name": {
"type": "string",
"defaultValue": "Subnet2",
"metadata": {
"description": "Subnet 2 Name"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-08-01",
"name": "[parameters('vnetName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vnetAddressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet1Name')]",
"properties": {
"addressPrefix": "[parameters('subnet1Prefix')]"
}
},
{
"name": "[parameters('subnet2Name')]",
"properties": {
"addressPrefix": "[parameters('subnet2Prefix')]"
}
}
]
}
}
]
}
Шаблон определяет следующие ресурсы Azure:
Развертывание шаблона
Выполните развертывание шаблона Resource Manager в Azure:
Выберите элемент Развертывание в Azure, чтобы войти в Azure и открыть шаблон. Шаблон создает виртуальную сеть с двумя подсетями.
На портале на странице "Создание виртуальная сеть с двумя подсетями" введите или выберите следующие значения:
-
Группа ресурсов: выберите "Создать", введите CreateVNetQS-rg для имени группы ресурсов и нажмите кнопку "ОК".
-
виртуальная сеть имя. Введите имя новой виртуальной сети.
Выберите Проверить и создать, а затем выберите Создать.
После завершения развертывания нажмите кнопку "Перейти к ресурсу", чтобы просмотреть развернутые ресурсы.
Проверка развернутых ресурсов
Изучите ресурсы, созданные с виртуальной сетью, просматривая области параметров для виртуальной сети 1:
Дополнительные сведения о синтаксисе JSON и свойствах для виртуальной сети в шаблоне см. в разделе Microsoft.Network/virtualNetworks.
Создание виртуальной сети и виртуальных машин
В этом кратком руководстве используется Две виртуальные машины в виртуальной сети шаблон Bicep из шаблонов быстрого запуска Azure Resource Manager для создания виртуальной сети, подсети ресурсов и виртуальных машин. Шаблон Bicep определяет следующие ресурсы Azure:
Просмотрите файл Bicep:
@description('Admin username')
param adminUsername string
@description('Admin password')
@secure()
param adminPassword string
@description('Prefix to use for VM names')
param vmNamePrefix string = 'BackendVM'
@description('Location for all resources.')
param location string = resourceGroup().location
@description('Size of the virtual machines')
param vmSize string = 'Standard_D2s_v3'
var availabilitySetName = 'AvSet'
var storageAccountType = 'Standard_LRS'
var storageAccountName = uniqueString(resourceGroup().id)
var virtualNetworkName = 'vNet'
var subnetName = 'backendSubnet'
var loadBalancerName = 'ilb'
var networkInterfaceName = 'nic'
var subnetRef = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, subnetName)
var numberOfInstances = 2
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
}
resource availabilitySet 'Microsoft.Compute/availabilitySets@2023-09-01' = {
name: availabilitySetName
location: location
sku: {
name: 'Aligned'
}
properties: {
platformUpdateDomainCount: 2
platformFaultDomainCount: 2
}
}
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: [
{
name: subnetName
properties: {
addressPrefix: '10.0.2.0/24'
}
}
]
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2023-09-01' = [for i in range(0, numberOfInstances): {
name: '${networkInterfaceName}${i}'
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
subnet: {
id: subnetRef
}
loadBalancerBackendAddressPools: [
{
id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool1')
}
]
}
}
]
}
dependsOn: [
virtualNetwork
loadBalancer
]
}]
resource loadBalancer 'Microsoft.Network/loadBalancers@2023-09-01' = {
name: loadBalancerName
location: location
sku: {
name: 'Standard'
}
properties: {
frontendIPConfigurations: [
{
properties: {
subnet: {
id: subnetRef
}
privateIPAddress: '10.0.2.6'
privateIPAllocationMethod: 'Static'
}
name: 'LoadBalancerFrontend'
}
]
backendAddressPools: [
{
name: 'BackendPool1'
}
]
loadBalancingRules: [
{
properties: {
frontendIPConfiguration: {
id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'LoadBalancerFrontend')
}
backendAddressPool: {
id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool1')
}
probe: {
id: resourceId('Microsoft.Network/loadBalancers/probes', loadBalancerName, 'lbprobe')
}
protocol: 'Tcp'
frontendPort: 80
backendPort: 80
idleTimeoutInMinutes: 15
}
name: 'lbrule'
}
]
probes: [
{
properties: {
protocol: 'Tcp'
port: 80
intervalInSeconds: 15
numberOfProbes: 2
}
name: 'lbprobe'
}
]
}
dependsOn: [
virtualNetwork
]
}
resource vm 'Microsoft.Compute/virtualMachines@2023-09-01' = [for i in range(0, numberOfInstances): {
name: '${vmNamePrefix}${i}'
location: location
properties: {
availabilitySet: {
id: availabilitySet.id
}
hardwareProfile: {
vmSize: vmSize
}
osProfile: {
computerName: '${vmNamePrefix}${i}'
adminUsername: adminUsername
adminPassword: adminPassword
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: '2019-Datacenter'
version: 'latest'
}
osDisk: {
createOption: 'FromImage'
}
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface[i].id
}
]
}
diagnosticsProfile: {
bootDiagnostics: {
enabled: true
storageUri: storageAccount.properties.primaryEndpoints.blob
}
}
}
}]
output location string = location
output name string = loadBalancer.name
output resourceGroupName string = resourceGroup().name
output resourceId string = loadBalancer.id
Разверните шаблон Bicep
Сохраните Bicep-файл на локальном компьютере в качестве main.bicep.
Разверните Bicep-файл с помощью Azure CLI или Azure PowerShell:
интерфейс командной строки (CLI)
az group create \
--name TestRG \
--location eastus
az deployment group create \
--resource-group TestRG \
--template-file main.bicep
PowerShell
$rgParams = @{
Name = 'TestRG'
Location = 'eastus'
}
New-AzResourceGroup @rgParams
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'main.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
По завершении развертывания сообщение указывает, что развертывание выполнено успешно.
Развертывание Бастиона Azure
Бастион использует браузер для подключения к виртуальным машинам в виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе Azure см. в статье Что такое Бастион Azure.
Замечание
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
Используйте шаблон Bicep Azure Bastion as a Service из коллекции Quickstart шаблонов Azure Resource Manager для развертывания и настройки Bastion в вашей виртуальной сети. Этот шаблон Bicep определяет следующие ресурсы Azure:
Просмотрите файл Bicep:
@description('Name of new or existing vnet to which Azure Bastion should be deployed')
param vnetName string = 'vnet01'
@description('IP prefix for available addresses in vnet address space')
param vnetIpPrefix string = '10.1.0.0/16'
@description('Specify whether to provision new vnet or deploy to existing vnet')
@allowed([
'new'
'existing'
])
param vnetNewOrExisting string = 'new'
@description('Bastion subnet IP prefix MUST be within vnet IP prefix address space')
param bastionSubnetIpPrefix string = '10.1.1.0/26'
@description('Name of Azure Bastion resource')
param bastionHostName string
@description('Azure region for Bastion and virtual network')
param location string = resourceGroup().location
var publicIpAddressName = '${bastionHostName}-pip'
var bastionSubnetName = 'AzureBastionSubnet'
resource publicIp 'Microsoft.Network/publicIPAddresses@2022-01-01' = {
name: publicIpAddressName
location: location
sku: {
name: 'Standard'
}
properties: {
publicIPAllocationMethod: 'Static'
}
}
// if vnetNewOrExisting == 'new', create a new vnet and subnet
resource newVirtualNetwork 'Microsoft.Network/virtualNetworks@2022-01-01' = if (vnetNewOrExisting == 'new') {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetIpPrefix
]
}
subnets: [
{
name: bastionSubnetName
properties: {
addressPrefix: bastionSubnetIpPrefix
}
}
]
}
}
// if vnetNewOrExisting == 'existing', reference an existing vnet and create a new subnet under it
resource existingVirtualNetwork 'Microsoft.Network/virtualNetworks@2022-01-01' existing = if (vnetNewOrExisting == 'existing') {
name: vnetName
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2022-01-01' = if (vnetNewOrExisting == 'existing') {
parent: existingVirtualNetwork
name: bastionSubnetName
properties: {
addressPrefix: bastionSubnetIpPrefix
}
}
resource bastionHost 'Microsoft.Network/bastionHosts@2022-01-01' = {
name: bastionHostName
location: location
dependsOn: [
newVirtualNetwork
existingVirtualNetwork
]
properties: {
ipConfigurations: [
{
name: 'IpConf'
properties: {
subnet: {
id: subnet.id
}
publicIPAddress: {
id: publicIp.id
}
}
}
]
}
}
Разверните шаблон Bicep
Сохраните файл Bicep на локальном компьютере под именем бастион.bicep.
Используйте текстовый редактор или редактор кода, чтобы внести следующие изменения в файл:
- Строка 2: Изменить
param vnetName string с 'vnet01' на 'VNet'.
- Строка 5: Заменить
param vnetIpPrefix string с '10.1.0.0/16' на '10.0.0.0/16'.
- Строка 12: Измените
param vnetNewOrExisting string с 'new' на 'existing'.
- Строка 15: Изменить
param bastionSubnetIpPrefix string с '10.1.1.0/26' на '10.0.1.0/26'.
- Строка 18. Переход
param bastionHostName string на param bastionHostName = 'VNet-bastion'.
Первые 18 строк файла Bicep теперь должны выглядеть следующим образом:
@description('Name of new or existing vnet to which Azure Bastion should be deployed')
param vnetName string = 'VNet'
@description('IP prefix for available addresses in vnet address space')
param vnetIpPrefix string = '10.0.0.0/16'
@description('Specify whether to provision new vnet or deploy to existing vnet')
@allowed([
'new'
'existing'
])
param vnetNewOrExisting string = 'existing'
@description('Bastion subnet IP prefix MUST be within vnet IP prefix address space')
param bastionSubnetIpPrefix string = '10.0.1.0/26'
@description('Name of Azure Bastion resource')
param bastionHostName = 'VNet-bastion'
Сохраните файл bastion.bicep.
Разверните Bicep-файл с помощью Azure CLI или Azure PowerShell:
интерфейс командной строки (CLI)
az deployment group create \
--resource-group TestRG \
--template-file bastion.bicep
PowerShell
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'bastion.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
По завершении развертывания сообщение указывает, что развертывание выполнено успешно.
Замечание
Виртуальные машины в виртуальной сети с узлом Бастиона не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Общедоступные IP-адреса можно удалить из всех виртуальных машин в виртуальных сетях, размещенных в Бастионе. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Проверка развернутых ресурсов
Используйте Azure CLI, Azure PowerShell или портал Azure для просмотра развернутых ресурсов:
интерфейс командной строки (CLI)
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
Портал
На портале Azure найдите и выберите группы ресурсов. На странице групп ресурсов выберите TestRG из списка групп ресурсов.
На странице обзораTestRG просмотрите все созданные ресурсы, включая виртуальную сеть, две виртуальные машины и узел Bastion.
Выберите виртуальную сеть VNet. На странице обзора виртуальной сети обратите внимание на определенное адресное пространство 10.0.0.0/16.
В меню слева выберите подсети. На странице Subnets обратите внимание на развернутые подсети backendSubnet и AzureBastionSubnet с назначенными значениями из файлов Bicep.