在本快速入門中,瞭解如何使用 Azure 入口網站、Azure CLI、Azure PowerShell、Resource Manager 範本、Bicep 範本和 Terraform 來建立 Azure 虛擬網路 (VNet)。 兩部虛擬機和一部 Azure Bastion 主機會部署,以測試相同虛擬網路中虛擬機之間的連線能力。 Azure Bastion 主機可透過 SSL 直接在 Azure 入口網站中,協助對虛擬機進行安全且順暢的 RDP 和 SSH 連線。
登入 Azure
使用您的 Azure 帳戶登入 Azure 入口網站 。
建立虛擬網路和 Azure Bastion 主機
下列程序會建立具有資源子網路、Azure Bastion 子網路和 Bastion 主機的虛擬網路:
在入口網站中,搜尋並選取 [虛擬網路]。
在 [虛擬網路] 頁面上,選取 [+ 建立]。
在 [建立虛擬網路] 的 [基本] 索引標籤上,輸入或選取下列資訊:
設定 |
價值觀 |
項目詳細數據 |
|
訂閱 |
選取您的訂用帳戶。 |
資源群組 |
請選擇 新建。
輸入 test-rg 作為名稱。
選取 [確定]。 |
實例詳細數據 |
|
名稱 |
輸入 vnet-1。 |
區域 |
選取 美國東部 2。 |
選取 [下一步],繼續前往 [安全性] 索引標籤。
在 [Azure Bastion] 區段中,選取 [啟用 Azure Bastion]。
Bastion 會使用您的瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線至虛擬網路中的 VM (使用其私人 IP 位址)。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。 如需詳細資訊,請參閱什麼是 Azure Bastion?。
備註
無論輸出資料使用量為何,每小時價格都是從部署 Bastion 的那一刻開始計費。 如需詳細資訊,請參閱價格和 SKU。 如果您要將 Bastion 部署為教學課程或測試的一部份,建議您在使用完畢後刪除此資源。
在 Azure Bastion 中,輸入或選取下列資訊:
設定 |
價值觀 |
Azure Bastion 主機名稱 |
輸入 bastion。 |
Azure Bastion 公用 IP 位址 |
選取 [建立公用 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 的 VM:
在入口網站中,搜尋並選取 [虛擬機器]。
在 [虛擬機器] 上,選取 [+ 建立],然後選取 [Azure 虛擬機器]。
在 [建立虛擬機器] 的 [基本] 索引標籤上,輸入或選取下列資訊:
設定 |
價值觀 |
項目詳細數據 |
|
訂閱 |
選取您的訂用帳戶。 |
資源群組 |
選取 test-rg。 |
實例詳細數據 |
|
虛擬機器名稱 |
輸入 vm-1。 |
區域 |
選取 美國東部 2。 |
可用性選項 |
選擇選項「不需要基礎結構備援」。 |
安全性類型 |
保留預設值 [標準]。 |
圖片 |
選取 [Ubuntu Server 22.04 LTS - x64 Gen2]。 |
VM 架構 |
保留預設值 [x64]。 |
大小 |
選擇尺寸。 |
系統管理員帳戶 |
|
驗證類型 |
選取 [密碼]。 |
用戶名稱 |
輸入azureuser。 |
密碼 |
輸入密碼。 |
確認密碼 |
重新輸入密碼。 |
輸入埠規則 |
|
公用輸入連接埠 |
選取 [無]。 |
選取 [網路] 索引標籤。輸入或選取下列資訊:
設定 |
價值觀 |
網路介面 |
|
虛擬網路 |
選取 vnet-1。 |
子網路 |
選取 subnet-1 (10.0.0.0/24)。 |
公用 IP |
選取 [無]。 |
NIC 網路安全性群組 |
選取進階。 |
設定網路安全性群組 |
請選擇 新建。
輸入 nsg-1 作為名稱。
將其餘項目保留為預設值,然後選取 [確定]。 |
將其餘設定保留為預設值,然後選取 [檢閱 + 建立]。
檢閱設定並選取 [建立]。
等待第一部虛擬機器部署,然後重複前面的步驟以使用下列設定建立第二部虛擬機器:
設定 |
價值觀 |
虛擬機器名稱 |
輸入 vm-2。 |
虛擬網路 |
選取 vnet-1。 |
子網路 |
選取 subnet-1 (10.0.0.0/24)。 |
公用 IP |
選取 [無]。 |
NIC 網路安全性群組 |
選取進階。 |
設定網路安全性群組 |
選取 nsg-1。 |
備註
在具有 Azure Bastion 主機的虛擬網路中,虛擬機器不需要公用 IP 位址。 Bastion 會提供公用 IP,而 VM 會使用私人 IP 在網路內通訊。 您可以從 Bastion 裝載的虛擬網路中的任何 VM 移除公用 IP。 如需詳細資訊,請參閱中斷公用 IP 位址與 Azure VM 的關聯。
備註
無論是未獲指派公用 IP 位址的 VM,或位於內部基本 Azure 負載平衡器後端集區的 VM,Azure 都會為其提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。
發生下列其中一個事件時,會停用預設輸出存取 IP:
- 公用 IP 位址會指派給 VM。
- 無論有沒有輸出規則,都會將 VM 放在標準負載平衡器的後端集區中。
-
Azure NAT 閘道資源會指派給 VM 的子網路。
您在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 沒有預設輸出存取。
如需 Azure 中輸出連線的詳細資訊,請參閱 Azure 中的預設對外存取與針對輸出連線,使用來源網路位址轉譯 (SNAT)。
建立資源群組
使用 New-AzResourceGroup 來建立資源群組以裝載虛擬網路。 執行下列程序代碼,在 eastus2 Azure 區域中建立名為 test-rg 的資源群組:
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
建立虛擬網路
使用 New-AzVirtualNetwork 在 test-rg 資源群組和 eastus2 位置建立名為 vnet-1 的虛擬網路,其 IP 位址前綴為 10.0.0.0/16:
$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 Bastion
Azure Bastion 會使用您的瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線至虛擬網路中的 VM (使用其私人 IP 位址)。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。 如需 Bastion 的詳細資訊,請參閱什麼是 Azure Bastion?。
無論輸出資料使用量為何,每小時價格都是從部署 Bastion 的那一刻開始計費。 如需詳細資訊,請參閱價格和 SKU。 如果您要將 Bastion 部署為教學課程或測試的一部份,建議您在使用完畢後刪除此資源。
為您的虛擬網路設定 Bastion 子網路。 此子網路專門保留用於 Bastion 資源,且必須命名為 [AzureBastionSubnet]。
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
設定組態:
$virtualNetwork | Set-AzVirtualNetwork
為 Bastion 建立公用 IP 位址。 Bastion 主機使用公用 IP 透過连接埠 443 存取 SSH 和 RDP。
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
使用 New-AzBastion 命令在 AzureBastionSubnet 中建立新的標準 SKU Bastion 主機:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
部署 Bastion 資源大約需要 10 分鐘。 當 Bastion 部署到您的虛擬網路時,您可以在下一節中建立 VM。
建立虛擬機器
使用 New-AzVM 在虛擬網路的 subnet-1 子網路中建立名為 vm-1 和 vm-2 的兩個 VM。 當系統提示您輸入認證時,請輸入 VM 的使用者名稱和密碼。
若要建立第一個 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-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
若要建立第二個 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
選項在背景中建立 VM,同時繼續執行其他工作。 例如,執行 New-AzVM @vm1 -AsJob
。 當 Azure 開始在背景中建立 VM 時,您會收到類似下列輸出的內容:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost New-AzVM
Azure 需要幾分鐘的時間來建立 VM。 當 Azure 完成建立 VM 時,它會將輸出傳回 PowerShell。
備註
具有 Bastion 主機的虛擬網路中的 VM 不需要公用 IP 位址。 Bastion 會提供公用 IP,而 VM 會使用私人 IP 在網路內通訊。 您可以從 Bastion 裝載的虛擬網路中的任何 VM 移除公用 IP。 如需詳細資訊,請參閱中斷公用 IP 位址與 Azure VM 的關聯。
備註
無論是未獲指派公用 IP 位址的 VM,或位於內部基本 Azure 負載平衡器後端集區的 VM,Azure 都會為其提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。
發生下列其中一個事件時,會停用預設輸出存取 IP:
- 公用 IP 位址會指派給 VM。
- 無論有沒有輸出規則,都會將 VM 放在標準負載平衡器的後端集區中。
-
Azure NAT 閘道資源會指派給 VM 的子網路。
您在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 沒有預設輸出存取。
如需 Azure 中輸出連線的詳細資訊,請參閱 Azure 中的預設對外存取與針對輸出連線,使用來源網路位址轉譯 (SNAT)。
建立資源群組
使用 az group create 來建立資源群組以裝載虛擬網路。 使用下列程序代碼在 eastus2 Azure 區域中建立名為 test-rg的資源群組:
az group create \
--name test-rg \
--location eastus2
建立虛擬網路和子網
使用 az network vnet create 建立名為 vnet-1 的虛擬網路,並在 test-rg 資源群組中建立名為 subnet-1 的子網:
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 Bastion
Azure Bastion 會使用您的瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線至虛擬網路中的 VM (使用其私人 IP 位址)。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。
無論輸出資料使用量為何,每小時價格都是從部署 Bastion 的那一刻開始計費。 如需詳細資訊,請參閱價格和 SKU。 如果您要將 Bastion 部署為教學課程或測試的一部份,建議您在使用完畢後刪除此資源。 如需 Bastion 的詳細資訊,請參閱什麼是 Azure Bastion?。
使用 az network vnet subnet create 建立虛擬網路的 Bastion 子網。 此子網路專門保留用於 Bastion 資源,且必須命名為 [AzureBastionSubnet]。
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
為 Bastion 建立公用 IP 位址。 此 IP 位址可用來從網際網路連線至 Bastion 主機。 使用 az network public-ip create 在 test-rg 資源群組中建立名為 public-ip 的公用 IP 位址:
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
使用 az network bastion create 在 AzureBastionSubnet 中為您的虛擬網路建立 Bastion 主機:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
部署 Bastion 資源大約需要 10 分鐘。 當 Bastion 部署到您的虛擬網路時,您可以在下一節中建立 VM。
建立虛擬機器
使用 az vm create 在虛擬網路的 subnet-1 子網中建立名為 vm-1 和 vm-2 的兩部 VM。 提示您輸入認證時,請輸入 VM 的使用者名稱和密碼。
若要建立第一個 VM,請使用下列命令:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-1 \
--image Ubuntu2204 \
--public-ip-address ""
若要建立第二個 VM,請使用下列命令:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-2 \
--image Ubuntu2204 \
--public-ip-address ""
小提示
您也可以使用 --no-wait
選項在背景中建立 VM,同時繼續執行其他工作。
可能需要數分鐘才會建立虛擬機器。 在 Azure 建立每個 VM 之後,Azure CLI 會傳回類似下列訊息的輸出:
{
"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": ""
}
備註
具有 Bastion 主機的虛擬網路中的 VM 不需要公用 IP 位址。 Bastion 會提供公用 IP,而 VM 會使用私人 IP 在網路內通訊。 您可以從 Bastion 裝載的虛擬網路中的任何 VM 移除公用 IP。 如需詳細資訊,請參閱中斷公用 IP 位址與 Azure VM 的關聯。
備註
無論是未獲指派公用 IP 位址的 VM,或位於內部基本 Azure 負載平衡器後端集區的 VM,Azure 都會為其提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。
發生下列其中一個事件時,會停用預設輸出存取 IP:
- 公用 IP 位址會指派給 VM。
- 無論有沒有輸出規則,都會將 VM 放在標準負載平衡器的後端集區中。
-
Azure NAT 閘道資源會指派給 VM 的子網路。
您在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 沒有預設輸出存取。
如需 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 ,然後選取 [ 確定]。
-
虛擬網絡 名稱:輸入新虛擬網路的名稱。
選取 審核 + 建立,然後選取 建立。
部署完成時,選取 [ 移至資源 ] 按鈕以檢閱您部署的資源。
檢閱已部署的資源
瀏覽 VNet1 的設定窗格,以探索您使用虛擬網路建立的資源:
若要了解範本中虛擬網路的 JSON 語法和屬性,請參閱 Microsoft.Network/virtualNetworks。
建立虛擬網路和 VM
本快速入門使用 Azure Resource Manager 快速入門範本中的 VNET Bicep 範本中的兩部 VM 來建立虛擬網路、資源子網和 VM。 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 儲存至本機電腦。
使用 Azure CLI 或 Azure PowerShell 部署 Bicep 檔案:
命令行介面(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 Bastion
Bastion 會使用您的瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線至虛擬網路中的 VM (使用其私人 IP 位址)。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。 如需 Bastion 的詳細資訊,請參閱什麼是 Azure Bastion?。
備註
無論輸出資料使用量為何,每小時價格都是從部署 Bastion 的那一刻開始計費。 如需詳細資訊,請參閱價格和 SKU。 如果您要將 Bastion 部署為教學課程或測試的一部份,建議您在使用完畢後刪除此資源。
使用 Azure Resource Manager 快速入門範本中的 Azure Bastion 即服務 Bicep 範本,在您的虛擬網路中部署和設定 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 檔案以 bastion.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'
。
Bicep 檔案的前 18 行現在看起來應該像下列範例:
@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 檔案。
使用 Azure CLI 或 Azure PowerShell 部署 Bicep 檔案:
命令行介面(CLI)
az deployment group create \
--resource-group TestRG \
--template-file bastion.bicep
PowerShell
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'bastion.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
當部署完成時,會顯示一條訊息,指出部署已成功。
備註
具有 Bastion 主機的虛擬網路中的 VM 不需要公用 IP 位址。 Bastion 會提供公用 IP,而 VM 會使用私人 IP 在網路內通訊。 您可以從 Bastion 裝載的虛擬網路中的任何 VM 移除公用 IP。 如需詳細資訊,請參閱中斷公用 IP 位址與 Azure VM 的關聯。
檢閱已部署的資源
使用 Azure CLI、Azure PowerShell 或 Azure 入口網站 來檢閱已部署的資源:
命令行介面(CLI)
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
入口網站
在 Azure 入口網站 中,搜尋並選取資源群組。 在 [ 資源群組] 頁面上,從資源群組清單中選取 [TestRG ]。
在 TestRG 的 [概觀] 頁面上,檢閱您建立的所有資源,包括虛擬網路、兩部 VM 和 Bastion 主機。
選取 VNet 虛擬網路。 在 VNet 的 [概觀] 頁面上,記下定義的地址空間 10.0.0.0/16。
在左側功能表上,選取 [ 子網]。 在 [子網] 頁面上,記下 backendSubnet 和 AzureBastionSubnet 的已部署子網,其中包含來自 Bicep 檔案的指派值。