I den här snabbstarten lär du dig hur du skapar ett virtuellt Azure-nätverk (VNet) med hjälp av Azure-portalen, Azure CLI, Azure PowerShell, Resource Manager-mallen, Bicep-mallen och Terraform. Två virtuella datorer och en Azure Bastion-värd distribueras för att testa anslutningen mellan de virtuella datorerna i samma virtuella nätverk. Azure Bastion-värden tillhandahåller säker och sömlös RDP- och SSH-anslutningar till de virtuella datorerna direkt i Azure-portalen via SSL.
Ett virtuellt nätverk är den grundläggande byggstenen för privata nätverk i Azure. Med Azure Virtual Network kan Azure-resurser som virtuella datorer kommunicera säkert med varandra och Internet.
Logga in på Azure
Logga in på Azure-portalen med ditt Azure-konto.
Skapa ett virtuellt nätverk och en Azure Bastion-värd
Följande procedur skapar ett virtuellt nätverk med ett resursundernät, ett Azure Bastion-undernät och en Bastion-värd:
I portalen söker du efter och väljer Virtuella nätverk.
På sidan Virtuella nätverk väljer du + Skapa.
På fliken Grundläggande i Skapa virtuellt nätverk anger du eller väljer följande information:
Inställning |
Värde |
Projektinformation |
|
Prenumeration |
Välj din prenumeration. |
Resursgrupp |
Välj Skapa ny.
Ange test-rg som namn.
Välj OK. |
Instansinformation |
|
Namn |
Ange vnet-1. |
Region |
Välj East US 2. |
Välj Nästa för att fortsätta till fliken Säkerhet .
I avsnittet Azure Bastion väljer du Aktivera Azure Bastion.
Bastion använder webbläsaren för att ansluta till virtuella datorer i ditt virtuella nätverk via Secure Shell (SSH) eller Remote Desktop Protocol (RDP) med hjälp av sina privata IP-adresser. De virtuella datorerna behöver inte offentliga IP-adresser, klientprogramvara eller särskild konfiguration. Mer information finns i Vad är Azure Bastion?.
Anmärkning
Timprissättningen startar när Bastion aktiveras, oavsett utgående dataanvändning. Mer information finns i Priser och SKU:er. Om du implementerar Bastion som en del av en handledning eller test, rekommenderar vi att du raderar denna resurs efter att du har använt den klart.
I Azure Bastion anger eller väljer du följande information:
Inställning |
Värde |
Azure Bastion-värdnamn |
Ange bastion. |
Offentlig IP-adress för Azure Bastion |
Välj Skapa en offentlig IP-adress.
Ange public-ip-bastion i Namn.
Välj OK. |
Välj Nästa för att fortsätta till fliken IP-adresser .
I rutan adressutrymme i Undernät väljer du standardundernätet .
I Redigera undernät anger eller väljer du följande information:
Inställning |
Värde |
Undernätssyfte |
Låt standardvärdet Standard vara kvar. |
Namn |
Ange undernät-1. |
IPv4 |
|
IPv4-adressintervall |
Låt standardvärdet vara 10.0.0.0/16. |
Startadress |
Låt standardvärdet vara 10.0.0.0. |
Storlek |
Lämna standardvärdet /24 (256 adresser). |
Välj Spara.
Välj Granska + skapa längst ned i fönstret. När valideringen har godkänts väljer du Skapa.
Skapa virtuella datorer
Följande procedur skapar två virtuella datorer med namnet vm-1 och vm-2 i det virtuella nätverket:
I portalen söker du efter och väljer Virtuella datorer.
I Virtuella datorer väljer du + Skapa och sedan Virtuell Azure-dator.
På fliken Grundläggande i Skapa en virtuell dator anger eller väljer du följande information:
Inställning |
Värde |
Projektinformation |
|
Prenumeration |
Välj din prenumeration. |
Resursgrupp |
Välj test-rg. |
Instansinformation |
|
Namn på virtuell maskin |
Ange vm-1. |
Region |
Välj East US 2. |
Tillgängliga alternativ |
Välj Ingen infrastrukturredundans krävs. |
Säkerhetstyp |
Låt standardvärdet Standard vara kvar. |
Bild |
Välj Ubuntu Server 22.04 LTS – x64 Gen2. |
VM-arkitektur |
Låt standardvärdet x64 vara kvar. |
Storlek |
Välj en storlek. |
Administratörskonto |
|
Autentiseringstyp |
Välj Lösenord. |
Användarnamn |
Ange azureuser. |
Lösenord |
Ange ett lösenord. |
Bekräfta lösenord |
Ange lösenordet igen. |
Regler för inkommande portar |
|
Offentliga inkommande portar |
Välj Ingen. |
Välj fliken Nätverk . Ange eller välj följande information:
Inställning |
Värde |
Nätverksgränssnitt |
|
Virtuellt nätverk |
Välj vnet-1. |
Subnät |
Välj undernät-1 (10.0.0.0/24). |
Offentlig IP-adress |
Välj Ingen. |
NIC-nätverkssäkerhetsgrupp |
Välj Avancerat. |
Konfigurera nätverkssäkerhetsgrupp |
Välj Skapa ny.
Ange nsg-1 som namn.
Låt resten vara som standard och välj OK. |
Låt resten av inställningarna vara som standard och välj Granska + skapa.
Granska inställningarna och välj Skapa.
Vänta tills den första virtuella datorn distribueras och upprepa sedan föregående steg för att skapa en andra virtuell dator med följande inställningar:
Inställning |
Värde |
Namn på virtuell maskin |
Ange vm-2. |
Virtuellt nätverk |
Välj vnet-1. |
Subnät |
Välj undernät-1 (10.0.0.0/24). |
Offentlig IP-adress |
Välj Ingen. |
NIC-nätverkssäkerhetsgrupp |
Välj Avancerat. |
Konfigurera nätverkssäkerhetsgrupp |
Välj nsg-1. |
Anmärkning
Virtuella datorer i ett virtuellt nätverk med en Azure Bastion-värd behöver inte offentliga IP-adresser. Bastion tillhandahåller den offentliga IP-adressen och de virtuella datorerna använder privata IP-adresser för att kommunicera i nätverket. Du kan ta bort offentliga IP-adresser från alla virtuella datorer i virtuella Bastion-värdbaserade nätverk. Mer information finns i Koppla bort en offentlig IP-adress från en virtuell Azure-dator.
Anmärkning
Azure tillhandahåller en standard-IP för utgående åtkomst för virtuella datorer som antingen inte har tilldelats någon offentlig IP-adress eller som finns i serverdelspoolen för en intern grundläggande Azure-lastbalanserare. Standardmekanismen för utgående IP-åtkomst tillhandahåller en utgående IP-adress som inte kan konfigureras.
Standard-IP för utgående åtkomst inaktiveras när någon av följande händelser inträffar:
- En offentlig IP-adress tilldelas till den virtuella datorn.
- Den virtuella datorn placeras i serverdelspoolen för en standardlastbalanserare, med eller utan regler för utgående trafik.
- En Azure NAT Gateway-resurs tilldelas till den virtuella datorns undernät.
Virtuella datorer som du skapar med hjälp av virtuella maskinskalsatser i flexibelt orkestreringsläge saknar standardiserad utgående åtkomst.
Mer information om utgående anslutningar i Azure finns i Standardutgående åtkomst i Azure och Använda SNAT (Source Network Address Translation) för utgående anslutningar.
Skapa en resursgrupp
Använd New-AzResourceGroup för att skapa en resursgrupp som värd för det virtuella nätverket. Kör följande kod för att skapa en resursgrupp med namnet test-rg i Azure-regionen eastus2 :
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
Skapa ett virtuellt nätverk
Använd New-AzVirtualNetwork för att skapa ett virtuellt nätverk med namnet vnet-1 med IP-adressprefixet 10.0.0.0/16 i resursgruppen test-rg och eastus2 :
$vnet = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Azure distribuerar resurser till ett undernät i ett virtuellt nätverk. Använd Add-AzVirtualNetworkSubnetConfig för att skapa en undernätskonfiguration med namnet subnet-1 med adressprefixet 10.0.0.0/24:
$subnet = @{
Name = 'subnet-1'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Associera undernätskonfigurationen med det virtuella nätverket med hjälp av Set-AzVirtualNetwork:
$virtualNetwork | Set-AzVirtualNetwork
Distribuera Azure Bastion
Azure Bastion använder webbläsaren för att ansluta till virtuella datorer i ditt virtuella nätverk via Secure Shell (SSH) eller Remote Desktop Protocol (RDP) med hjälp av sina privata IP-adresser. De virtuella datorerna behöver inte offentliga IP-adresser, klientprogramvara eller särskild konfiguration. Mer information om Bastion finns i Vad är Azure Bastion?.
Timprissättningen startar när Bastion aktiveras, oavsett utgående dataanvändning. Mer information finns i Priser och SKU:er. Om du implementerar Bastion som en del av en handledning eller test, rekommenderar vi att du raderar denna resurs efter att du har använt den klart.
Konfigurera ett Bastion-undernät för ditt virtuella nätverk. Det här undernätet är endast reserverat för Bastion-resurser och måste ha namnet AzureBastionSubnet.
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Ange konfigurationen:
$virtualNetwork | Set-AzVirtualNetwork
Skapa en offentlig IP-adress för Bastion. Bastion-värden använder den publika IP-adressen för åtkomst till SSH och RDP via port 443.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
Använd kommandot New-AzBastion för att skapa en ny Standard SKU Bastion-värd i AzureBastionSubnet:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
Det tar cirka 10 minuter att distribuera Bastion-resurserna. Du kan skapa virtuella datorer i nästa avsnitt medan Bastion distribueras till ditt virtuella nätverk.
Skapa virtuella datorer
Använd New-AzVM för att skapa två virtuella datorer med namnet vm-1 och vm-2 i undernätet-1 i det virtuella nätverket. När du uppmanas att ange autentiseringsuppgifter anger du användarnamn och lösenord för de virtuella datorerna.
Använd följande kod för att skapa den första virtuella datorn:
# 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
Använd följande kod för att skapa den andra virtuella datorn:
# 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
Tips/Råd
Du kan använda alternativet -AsJob
för att skapa en virtuell dator i bakgrunden medan du fortsätter med andra uppgifter. Kör till exempel New-AzVM @vm1 -AsJob
. När Azure börjar skapa den virtuella datorn i bakgrunden får du ungefär följande utdata:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost New-AzVM
Azure tar några minuter att skapa de virtuella datorerna. När Azure har skapat de virtuella datorerna returneras utdata till PowerShell.
Anmärkning
Virtuella datorer i ett virtuellt nätverk med en Bastion-värd behöver inte offentliga IP-adresser. Bastion tillhandahåller den offentliga IP-adressen och de virtuella datorerna använder privata IP-adresser för att kommunicera i nätverket. Du kan ta bort offentliga IP-adresser från alla virtuella datorer i virtuella Bastion-värdbaserade nätverk. Mer information finns i Koppla bort en offentlig IP-adress från en virtuell Azure-dator.
Anmärkning
Azure tillhandahåller en standard-IP för utgående åtkomst för virtuella datorer som antingen inte har tilldelats någon offentlig IP-adress eller som finns i serverdelspoolen för en intern grundläggande Azure-lastbalanserare. Standardmekanismen för utgående IP-åtkomst tillhandahåller en utgående IP-adress som inte kan konfigureras.
Standard-IP för utgående åtkomst inaktiveras när någon av följande händelser inträffar:
- En offentlig IP-adress tilldelas till den virtuella datorn.
- Den virtuella datorn placeras i serverdelspoolen för en standardlastbalanserare, med eller utan regler för utgående trafik.
- En Azure NAT Gateway-resurs tilldelas till den virtuella datorns undernät.
Virtuella datorer som du skapar med hjälp av virtuella maskinskalsatser i flexibelt orkestreringsläge saknar standardiserad utgående åtkomst.
Mer information om utgående anslutningar i Azure finns i Standardutgående åtkomst i Azure och Använda SNAT (Source Network Address Translation) för utgående anslutningar.
Skapa en resursgrupp
Använd az group create för att skapa en resursgrupp som värd för det virtuella nätverket. Använd följande kod för att skapa en resursgrupp med namnet test-rg i Azure-regionen eastus2 :
az group create \
--name test-rg \
--location eastus2
Skapa ett virtuellt nätverk och undernät
Använd az network vnet create för att skapa ett virtuellt nätverk med namnet vnet-1 med ett undernät med namnet subnet-1 i resursgruppen 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
Distribuera Azure Bastion
Azure Bastion använder webbläsaren för att ansluta till virtuella datorer i ditt virtuella nätverk via Secure Shell (SSH) eller Remote Desktop Protocol (RDP) med hjälp av sina privata IP-adresser. De virtuella datorerna behöver inte offentliga IP-adresser, klientprogramvara eller särskild konfiguration.
Timprissättningen startar när Bastion aktiveras, oavsett utgående dataanvändning. Mer information finns i Priser och SKU:er. Om du implementerar Bastion som en del av en handledning eller test, rekommenderar vi att du raderar denna resurs efter att du har använt den klart. Mer information om Bastion finns i Vad är Azure Bastion?.
Använd az network vnet subnet create för att skapa ett Bastion-undernät för ditt virtuella nätverk. Det här undernätet är endast reserverat för Bastion-resurser och måste ha namnet AzureBastionSubnet.
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Skapa en offentlig IP-adress för Bastion. Den här IP-adressen används för att ansluta till Bastion-värden från Internet. Använd az network public-ip create för att skapa en offentlig IP-adress med namnet public-ip i resursgruppen test-rg :
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Använd az network bastion create för att skapa en Bastion-värd i AzureBastionSubnet för ditt virtuella nätverk:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
Det tar cirka 10 minuter att distribuera Bastion-resurserna. Du kan skapa virtuella datorer i nästa avsnitt medan Bastion distribueras till ditt virtuella nätverk.
Skapa virtuella datorer
Använd az vm create för att skapa två virtuella datorer med namnet vm-1 och vm-2 i undernätet-1 i det virtuella nätverket. När du uppmanas att ange autentiseringsuppgifter anger du användarnamn och lösenord för de virtuella datorerna.
Använd följande kommando för att skapa den första virtuella datorn:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-1 \
--image Ubuntu2204 \
--public-ip-address ""
Använd följande kommando för att skapa den andra virtuella datorn:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-2 \
--image Ubuntu2204 \
--public-ip-address ""
Tips/Råd
Du kan också använda alternativet --no-wait
för att skapa en virtuell dator i bakgrunden medan du fortsätter med andra uppgifter.
Det tar några minuter att skapa de virtuella datorerna. När Azure har skapat varje virtuell dator returnerar Azure CLI utdata som liknar följande meddelande:
{
"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": ""
}
Anmärkning
Virtuella datorer i ett virtuellt nätverk med en Bastion-värd behöver inte offentliga IP-adresser. Bastion tillhandahåller den offentliga IP-adressen och de virtuella datorerna använder privata IP-adresser för att kommunicera i nätverket. Du kan ta bort offentliga IP-adresser från alla virtuella datorer i virtuella Bastion-värdbaserade nätverk. Mer information finns i Koppla bort en offentlig IP-adress från en virtuell Azure-dator.
Anmärkning
Azure tillhandahåller en standard-IP för utgående åtkomst för virtuella datorer som antingen inte har tilldelats någon offentlig IP-adress eller som finns i serverdelspoolen för en intern grundläggande Azure-lastbalanserare. Standardmekanismen för utgående IP-åtkomst tillhandahåller en utgående IP-adress som inte kan konfigureras.
Standard-IP för utgående åtkomst inaktiveras när någon av följande händelser inträffar:
- En offentlig IP-adress tilldelas till den virtuella datorn.
- Den virtuella datorn placeras i serverdelspoolen för en standardlastbalanserare, med eller utan regler för utgående trafik.
- En Azure NAT Gateway-resurs tilldelas till den virtuella datorns undernät.
Virtuella datorer som du skapar med hjälp av virtuella maskinskalsatser i flexibelt orkestreringsläge saknar standardiserad utgående åtkomst.
Mer information om utgående anslutningar i Azure finns i Standardutgående åtkomst i Azure och Använda SNAT (Source Network Address Translation) för utgående anslutningar.
Granska mallen
Mallen som du använder i den här snabbstarten kommer från Azure-snabbstartsmallar.
{
"$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')]"
}
}
]
}
}
]
}
Mallen definierar följande Azure-resurser:
Använd mallen
Distribuera Resource Manager-mallen till Azure:
Välj Distribuera till Azure för att logga in på Azure och öppna mallen. Mallen skapar ett virtuellt nätverk med två undernät.
På portalen går du till sidan Skapa ett virtuellt nätverk med två undernät och anger eller väljer följande värden:
-
Resursgrupp: Välj Skapa ny, ange CreateVNetQS-rg som resursgruppnamn och välj sedan OK.
-
Namn på virtuellt nätverk: Ange ett namn för det nya virtuella nätverket.
Välj Granska + skapa och välj sedan Skapa.
När distributionen är klar väljer du knappen Gå till resurs för att granska de resurser som du har distribuerat.
Granska distribuerade resurser
Utforska de resurser som du skapade med det virtuella nätverket genom att bläddra i inställningsrutorna för VNet1:
Mer information om JSON-syntaxen och egenskaperna för ett virtuellt nätverk i en mall finns i Microsoft.Network/virtualNetworks.
Skapa det virtuella nätverket och de virtuella datorerna
Den här snabbstarten använder Bicep-mallen Två virtuella datorer i VNET från Azure Resource Manager-snabbstartsmallar för att skapa det virtuella nätverket, resursundernätet och de virtuella datorerna. Bicep-mallen definierar följande Azure-resurser:
Granska Bicep-filen:
@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
Distribuera Bicepmallen
Spara Bicep-filen på den lokala datorn som main.bicep.
Distribuera Bicep-filen med hjälp av antingen Azure CLI eller Azure PowerShell:
Kommandoradsgränssnitt (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
När distributionen är klar visas ett meddelande om att distributionen lyckades.
Distribuera Azure Bastion
Bastion använder webbläsaren för att ansluta till virtuella datorer i ditt virtuella nätverk via Secure Shell (SSH) eller Remote Desktop Protocol (RDP) med hjälp av sina privata IP-adresser. De virtuella datorerna behöver inte offentliga IP-adresser, klientprogramvara eller särskild konfiguration. Mer information om Bastion finns i Vad är Azure Bastion?.
Anmärkning
Timprissättningen startar när Bastion aktiveras, oavsett utgående dataanvändning. Mer information finns i Priser och SKU:er. Om du implementerar Bastion som en del av en handledning eller test, rekommenderar vi att du raderar denna resurs efter att du har använt den klart.
Använd Azure Bastion som en Bicep-tjänstmall från Azure Resource Manager-snabbstartsmallar för att distribuera och konfigurera Bastion i ditt virtuella nätverk. Den här Bicep-mallen definierar följande Azure-resurser:
Granska Bicep-filen:
@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
}
}
}
]
}
}
Distribuera Bicepmallen
Spara Bicep-filen på den lokala datorn som bastion.bicep.
Använd en text- eller kodredigerare för att göra följande ändringar i filen:
- Rad 2: Ändra
param vnetName string
från 'vnet01'
till 'VNet'
.
- Rad 5: Ändra
param vnetIpPrefix string
från '10.1.0.0/16'
till '10.0.0.0/16'
.
- Rad 12: Ändra
param vnetNewOrExisting string
från 'new'
till 'existing'
.
- Rad 15: Ändra
param bastionSubnetIpPrefix string
från '10.1.1.0/26'
till '10.0.1.0/26'
.
- Rad 18: Ändra
param bastionHostName string
till param bastionHostName = 'VNet-bastion'
.
De första 18 raderna i Bicep-filen bör nu se ut så här:
@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'
Spara filen bastion.bicep .
Distribuera Bicep-filen med hjälp av antingen Azure CLI eller Azure PowerShell:
Kommandoradsgränssnitt (CLI)
az deployment group create \
--resource-group TestRG \
--template-file bastion.bicep
PowerShell
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'bastion.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
När distributionen är klar visas ett meddelande om att distributionen lyckades.
Anmärkning
Virtuella datorer i ett virtuellt nätverk med en Bastion-värd behöver inte offentliga IP-adresser. Bastion tillhandahåller den offentliga IP-adressen och de virtuella datorerna använder privata IP-adresser för att kommunicera i nätverket. Du kan ta bort offentliga IP-adresser från alla virtuella datorer i virtuella Bastion-värdbaserade nätverk. Mer information finns i Koppla bort en offentlig IP-adress från en virtuell Azure-dator.
Granska distribuerade resurser
Använd Azure CLI, Azure PowerShell eller Azure Portal för att granska de distribuerade resurserna:
Kommandoradsgränssnitt (CLI)
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
Portal
I Azure-portalen söker du efter och väljer resursgrupper. På sidan Resursgrupper väljer du TestRG i listan över resursgrupper.
På sidan Översikt för TestRG granskar du alla resurser som du har skapat, inklusive det virtuella nätverket, de två virtuella datorerna och bastionvärden.
Välj det virtuella VNet-nätverket . På sidan Översikt för VNet noterar du det definierade adressutrymmet 10.0.0.0/16.
På den vänstra menyn väljer du Undernät. På sidan Undernät noterar du de distribuerade undernäten i backendSubnet och AzureBastionSubnet med de tilldelade värdena från Bicep-filerna.