Из этого краткого руководства вы узнаете, как создать виртуальную сеть Azure с помощью портала Azure, Azure CLI, Azure PowerShell, шаблона Resource Manager, шаблона Bicep и Terraform. Две виртуальные машины и узел Бастиона Azure развертываются для тестирования подключения между виртуальными машинами в одной виртуальной сети. Узел Azure Bastion обеспечивает безопасное и беспрепятственное подключение RDP и SSH к виртуальным машинам прямо через портал Azure по протоколу SSL.
Виртуальная сеть — это базовый стандартный блок для частных сетей в Azure. Виртуальная сеть Azure позволяет ресурсам Azure, таким как виртуальные машины, безопасно взаимодействовать друг с другом и Интернетом.
Вход в Azure
Войдите на портал Azure с помощью своей учетной записи Azure.
Создание виртуальной сети и узла Бастиона Azure
Следующая процедура создает виртуальную сеть с подсетью ресурсов, подсетью Бастиона Azure и узлом Бастиона:
На портале найдите и выберите "Виртуальные сети".
На странице Виртуальные сети выберите команду + Создать.
На вкладке "Основы" создайте виртуальную сеть, введите или выберите следующие сведения:
Настройки |
Ценность |
Сведения о проекте |
|
Подписка |
Выберите подписку. |
Группа ресурсов |
Выберите Создать новое.
Введите test-rg для имени.
Нажмите кнопку ОК. |
Сведения об инстанции |
|
Имя |
Введите vnet-1. |
Регион |
Выберите регион Восточная часть США 2. |
Нажмите кнопку "Далее ", чтобы перейти на вкладку "Безопасность ".
В разделе Azure Bastion выберите Включить Azure Bastion.
Бастион использует браузер для подключения к виртуальным машинам в виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения см. в статье "Что такое Бастион Azure?".
Замечание
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
В Azure Bastion введите или выберите следующие сведения:
Настройки |
Ценность |
Имя хоста Azure Bastion |
Введите бастион. |
Общедоступный IP-адрес Бастиона Azure |
Выберите " Создать общедоступный IP-адрес".
Введите public-ip-bastion в поле "Имя".
Нажмите кнопку ОК. |
Нажмите Далее, чтобы перейти на вкладку IP-адреса.
В поле адресного пространства в подсетях выберите подсеть по умолчанию .
В разделе "Изменить подсеть" введите или выберите следующие сведения:
Настройки |
Ценность |
Назначение подсети |
Оставьте значение Default по умолчанию. |
Имя |
Введите subnet-1. |
IPv4 |
|
Диапазон адресов IPv4 |
Оставьте значение по умолчанию 10.0.0.0/16. |
Начальный адрес |
Оставьте значение по умолчанию 10.0.0.0. |
Размер |
Оставьте значение по умолчанию /24 (256 адресов). |
Нажмите кнопку "Сохранить".
Выберите "Проверка и создание " в нижней части окна. После завершения проверки нажмите кнопку Создать.
Создание виртуальных машин
Следующая процедура создает две виртуальные машины с именем vm-1 и vm-2 в виртуальной сети:
На портале найдите и выберите "Виртуальные машины".
На виртуальных машинах нажмите кнопку +Создать и выберите виртуальную машину 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 для имени.
Оставьте остальные значения по умолчанию и нажмите кнопку "ОК". |
Оставьте остальные параметры по умолчанию и нажмите кнопку "Просмотр и создание".
Проверьте параметры и выберите Создать.
Дождитесь развертывания первой виртуальной машины, а затем повторите предыдущие действия, чтобы создать вторую виртуальную машину со следующими параметрами:
Настройки |
Ценность |
Название виртуальной машины |
Введите vm-2. |
Виртуальная сеть |
Выберите 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 использует браузер для подключения к виртуальным машинам в виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе см. в статье "Что такое Бастион 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 уровня "Стандартный" в 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 минут. В следующем разделе можно создать виртуальные машины, пока Bastion развертывается в вашей виртуальной сети.
Создание виртуальных машин
Используйте New-AzVM для создания двух виртуальных машин с именем vm-1 и vm-2 в подсети подсети 1 виртуальной сети. При появлении запроса на ввод учетных данных введите имена пользователей и пароли для виртуальных машин.
Чтобы создать первую виртуальную машину, используйте следующий код:
# 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 a network interface for the VM. ##
$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 VM. ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus2'
VM = $vmConfig
}
New-AzVM @vm
Чтобы создать вторую виртуальную машину, используйте следующий код:
# 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 a network interface for the VM. ##
$nic = @{
Name = "nic-2"
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration. ##
$vmsz = @{
VMName = "vm-2"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "vm-2"
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 VM. ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus2'
VM = $vmConfig
}
New-AzVM @vm
Подсказка
Вы можете использовать -AsJob
этот параметр, чтобы создать виртуальную машину в фоновом режиме при продолжении других задач. Например, выполните команду New-AzVM @vm1 -AsJob
. Когда Azure начинает создание виртуальной машины в фоновом режиме, вы получите примерно следующее:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost New-AzVM
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 использует браузер для подключения к виртуальным машинам в виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации.
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним. Дополнительные сведения о Бастионе см. в статье "Что такое Бастион 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
Развертывание ресурсов Бастиона занимает около 10 минут. В следующем разделе можно создать виртуальные машины, пока Bastion развертывается в вашей виртуальной сети.
Создание виртуальных машин
Используйте az vm create , чтобы создать две виртуальные машины с именем vm-1 и vm-2 в подсети подсети виртуальной сети 1 . При появлении запроса на ввод учетных данных введите имена пользователей и пароли для виртуальных машин.
Чтобы создать первую виртуальную машину, используйте следующую команду:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-1 \
--image Ubuntu2204 \
--public-ip-address ""
Чтобы создать вторую виртуальную машину, используйте следующую команду:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-2 \
--image Ubuntu2204 \
--public-ip-address ""
Подсказка
Вы также можете использовать --no-wait
параметр для создания виртуальной машины в фоновом режиме, пока вы продолжите работу с другими задачами.
Создание виртуальных машин может занять несколько минут. После создания каждой виртуальной машины Azure интерфейс командной строки Azure возвращает выходные данные, аналогичные следующему сообщению:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-2",
"location": "eastus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.5",
"publicIpAddress": "",
"resourceGroup": "test-rg"
"zones": ""
}
Замечание
Виртуальные машины в виртуальной сети с узлом Бастиона не требуют общедоступных 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 "Две виртуальные машины в VNET" из шаблонов быстрого запуска 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?".
Замечание
Почасовая тарификация начинается с момента развертывания Бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера 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 просмотрите все созданные ресурсы, включая виртуальную сеть, две виртуальные машины и узел Бастион.
Выберите виртуальную сеть VNet. На странице обзора виртуальной сети обратите внимание на определенное адресное пространство 10.0.0.0/16.
В меню слева выберите подсети. На странице Subnets обратите внимание на развернутые подсети backendSubnet и AzureBastionSubnet с назначенными значениями из файлов Bicep.