Questo argomento di avvio rapido illustra come creare una rete virtuale di Azure usando il portale di Azure, l'interfaccia della riga di comando di Azure, Azure PowerShell, il modello di Resource Manager, il modello Bicep e Terraform. Due macchine virtuali e un host Azure Bastion vengono distribuiti per testare la connettività tra le macchine virtuali nella stessa rete virtuale. L'host Azure Bastion facilita la connettività RDP e SSH sicura e facile alle macchine virtuali direttamente nel portale di Azure tramite SSL.
Una rete virtuale rappresenta il blocco costitutivo fondamentale per le reti private di Azure. La rete virtuale di Azure consente alle risorse di Azure come le macchine virtuali di comunicare in modo sicuro tra loro e con Internet.
Accedere ad Azure
Accedere al portale di Azure con il proprio account Azure.
Creare una rete virtuale e un host Azure Bastion
La procedura seguente consente di creare una rete virtuale con una subnet di risorse, una subnet di Azure Bastion e un host Bastion:
Nel portale cercare e selezionare Reti virtuali.
Nella pagina Reti virtuali selezionare + Crea.
Nella scheda Informazioni di base di Crea rete virtuale immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la sottoscrizione. |
Gruppo di risorse |
Seleziona Crea nuovo.
Immettere test-rg per il nome.
Selezionare OK. |
Dettagli dell'istanza |
|
Nome |
Inserire vnet-1. |
Area geografica |
Selezionare Stati Uniti orientali 2. |
Selezionare Avanti per passare alla scheda Sicurezza.
Nella sezione Azure Bastion, selezionare Abilita Azure Bastion.
Bastion usa il browser per connettersi alle macchine virtuali nella rete virtuale tramite SSH (Secure Shell) o RDP (Remote Desktop Protocol) usando i relativi indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazioni speciali. Per altre informazioni, vedere Informazioni su Azure Bastion.
Annotazioni
La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion nel corso di un'esercitazione o di un test, è consigliabile eliminare questa risorsa dopo averla usata.
In Azure Bastion immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Nome host Azure Bastion |
Immettere bastion. |
Indirizzo IP pubblico di Azure Bastion |
Selezionare Crea un indirizzo IP pubblico.
Immettere public-ip-bastion in Nome.
Selezionare OK. |
Selezionare Avanti per passare alla scheda Indirizzi IP.
Nella casella dello spazio indirizzi in Subnet, selezionare la subnet predefinita.
In Modifica subnet immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Scopo della subnet |
Lasciare l'impostazione predefinita Predefinito. |
Nome |
Immettere subnet-1. |
IPv4 |
|
Intervallo di indirizzi IPv4 |
Lasciare l'impostazione predefinita 10.0.0.0/16. |
Indirizzo iniziale |
Lasciare l'impostazione predefinita 10.0.0.0. |
Misura |
Lasciare l'impostazione predefinita /24 (256 indirizzi). |
Seleziona Salva.
Selezionare Rivedi e crea nella parte inferiore della finestra. Al termine della convalida, selezionare Crea.
Creare macchine virtuali
La procedura seguente crea due macchine virtuali denominate vm-1 e vm-2 nella rete virtuale:
Nel portale, cercare e selezionare Macchine virtuali.
In Macchine virtuali selezionare + Crea e quindi selezionare Macchina virtuale di Azure.
Nella scheda Informazioni di base di Crea una macchina virtuale, immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la sottoscrizione. |
Gruppo di risorse |
Selezionare test-rg. |
Dettagli dell'istanza |
|
Nome della macchina virtuale |
Immettere vm-1. |
Area geografica |
Selezionare Stati Uniti orientali 2. |
Opzioni di disponibilità |
Selezionare La ridondanza dell'infrastruttura non è richiesta. |
Tipo di sicurezza |
Lasciare l'impostazione predefinita Standard. |
Immagine |
Selezionare Ubuntu Server 22.04 LTS - x64 Gen2. |
Architettura della macchina virtuale |
Lasciare il valore predefinito x64. |
Misura |
Selezionare una dimensione. |
Account dell'amministratore |
|
Tipo di autenticazione |
selezionare Password. |
Nome utente |
Inserire azureuser. |
Parola chiave |
Immettere una password. |
Conferma la password |
Immettere nuovamente la password. |
Regole delle porte in ingresso |
|
Porte di ingresso pubbliche |
Seleziona Nessuno. |
Selezionare la scheda Rete. Immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Interfaccia di rete |
|
Rete virtuale |
Selezionare vnet-1. |
Sottorete |
Selezionare subnet-1 (10.0.0.0/24). |
IP pubblico |
Seleziona Nessuno. |
Gruppo di sicurezza della rete NIC |
Seleziona Avanzate. |
Configura gruppo di sicurezza di rete |
Seleziona Crea nuovo.
Immettere nsg-1 per il nome.
Lasciare invariate le impostazioni predefinite e selezionare OK. |
Lasciare invariate le impostazioni predefinite e selezionare Rivedi e crea.
Rivedere le impostazioni e selezionare Crea.
Attendere che la prima macchina virtuale venga distribuita e ripetere i passaggi precedenti per creare una seconda macchina virtuale con le impostazioni seguenti:
Impostazione |
Valore |
Nome della macchina virtuale |
Immettere vm-2. |
Rete virtuale |
Selezionare vnet-1. |
Sottorete |
Selezionare subnet-1 (10.0.0.0/24). |
IP pubblico |
Seleziona Nessuno. |
Gruppo di sicurezza della rete NIC |
Seleziona Avanzate. |
Configura gruppo di sicurezza di rete |
Selezionare nsg-1. |
Annotazioni
Le macchine virtuali in una rete virtuale con un host Azure Bastion non necessitano di indirizzi IP pubblici. Bastion fornisce l'indirizzo IP pubblico e le macchine virtuali usano indirizzi IP privati per comunicare all'interno della rete. È possibile rimuovere gli indirizzi IP pubblici da qualsiasi macchina virtuale in reti virtuali ospitate da Bastion. Per altre informazioni, vedere Annullare l'associazione di un indirizzo IP pubblico da una macchina virtuale di Azure.
Annotazioni
Azure fornisce un IP di accesso in uscita predefinito per le macchine virtuali a cui non è stato assegnato un indirizzo IP pubblico o che si trovano nel pool back-end di un servizio del bilanciamento del carico di base di Azure. Il meccanismo dell'IP di accesso in uscita predefinito fornisce un IP in uscita non configurabile.
L'IP di accesso in uscita predefinito è disabilitato quando si verifica uno degli eventi seguenti:
- Alla macchina virtuale viene assegnato un indirizzo IP pubblico.
- La macchina virtuale è posizionata nel pool back-end di un servizio di bilanciamento del carico standard, con o senza regole in uscita.
- Una risorsa del gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.
Le macchine virtuali che crei utilizzando i set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile non hanno accesso predefinito in uscita.
Per altre informazioni sulle connessioni in uscita in Azure, vedere Accesso in uscita predefinito in Azure e Uso di Source Network Address Translation (SNAT) per le connessioni in uscita.
Creare un gruppo di risorse
Usare New-AzResourceGroup per creare un gruppo di risorse per ospitare la rete virtuale. Eseguire il codice seguente per creare un gruppo di risorse denominato test-rg nell'area di Azure eastus2 :
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
Creare una rete virtuale
Usare New-AzVirtualNetwork per creare una rete virtuale denominata vnet-1 con prefisso indirizzo IP 10.0.0.0/16 nel gruppo di risorse test-rg e nella località eastus2 :
$vnet = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Azure distribuisce le risorse in una subnet all'interno di una rete virtuale. Usare Add-AzVirtualNetworkSubnetConfig per creare una configurazione della subnet denominata subnet-1 con prefisso indirizzo 10.0.0.0/24:
$subnet = @{
Name = 'subnet-1'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Associare la configurazione della subnet alla rete virtuale usando Set-AzVirtualNetwork:
$virtualNetwork | Set-AzVirtualNetwork
Distribuire Azure Bastion
Azure Bastion usa il browser per connettersi alle VM nella rete virtuale tramite Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando i relativi indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazioni speciali. Per altre informazioni su Bastion, vedere Che cos'è Azure Bastion?.
La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion nel corso di un'esercitazione o di un test, è consigliabile eliminare questa risorsa dopo averla usata.
Configurare una subnet Bastion per la rete virtuale. Questa subnet è riservata esclusivamente alle risorse Bastion e deve essere denominata AzureBastionSubnet.
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Impostare la configurazione:
$virtualNetwork | Set-AzVirtualNetwork
Creare un indirizzo IP pubblico per Bastion. L'host Bastion usa l'indirizzo IP pubblico per accedere a SSH e RDP sulla porta 443.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
Usare il comando New-AzBastion per creare un nuovo host Bastion SKU Standard in AzureBastionSubnet:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
La distribuzione delle risorse Bastion richiede circa 10 minuti. È possibile creare macchine virtuali nella sezione successiva mentre Bastion viene distribuito nella rete virtuale.
Creare macchine virtuali
Usare New-AzVM per creare due macchine virtuali denominate vm-1 e vm-2 nella subnet subnet-1 della rete virtuale. Quando vengono richieste le credenziali, immettere nomi utente e password per le macchine virtuali.
Per creare la prima macchina virtuale, usare il codice seguente:
# 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
Per creare la seconda macchina virtuale, usare il codice seguente:
# 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
Suggerimento
È possibile usare l'opzione -AsJob
per creare una macchina virtuale in background mentre si continua con altre attività. Ad esempio, eseguire New-AzVM @vm1 -AsJob
. Quando Azure inizia a creare la macchina virtuale in background, si ottiene un output simile al seguente:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost New-AzVM
Per creare le macchine virtuali, Azure richiede alcuni minuti. Al termine della creazione delle macchine virtuali, Azure restituisce l'output in PowerShell.
Annotazioni
Le macchine virtuali in una rete virtuale con un host Bastion non necessitano di indirizzi IP pubblici. Bastion fornisce l'indirizzo IP pubblico e le macchine virtuali usano indirizzi IP privati per comunicare all'interno della rete. È possibile rimuovere gli indirizzi IP pubblici da qualsiasi macchina virtuale in reti virtuali ospitate da Bastion. Per altre informazioni, vedere Annullare l'associazione di un indirizzo IP pubblico da una macchina virtuale di Azure.
Annotazioni
Azure fornisce un IP di accesso in uscita predefinito per le macchine virtuali a cui non è stato assegnato un indirizzo IP pubblico o che si trovano nel pool back-end di un servizio del bilanciamento del carico di base di Azure. Il meccanismo dell'IP di accesso in uscita predefinito fornisce un IP in uscita non configurabile.
L'IP di accesso in uscita predefinito è disabilitato quando si verifica uno degli eventi seguenti:
- Alla macchina virtuale viene assegnato un indirizzo IP pubblico.
- La macchina virtuale è posizionata nel pool back-end di un servizio di bilanciamento del carico standard, con o senza regole in uscita.
- Una risorsa del gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.
Le macchine virtuali che crei utilizzando i set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile non hanno accesso predefinito in uscita.
Per altre informazioni sulle connessioni in uscita in Azure, vedere Accesso in uscita predefinito in Azure e Uso di Source Network Address Translation (SNAT) per le connessioni in uscita.
Creare un gruppo di risorse
Usare az group create per creare un gruppo di risorse per ospitare la rete virtuale. Usare il codice seguente per creare un gruppo di risorse denominato test-rg nell'area di Azure eastus2 :
az group create \
--name test-rg \
--location eastus2
Creare una rete virtuale e una subnet
Usare az network vnet create per creare una rete virtuale denominata vnet-1 con una subnet denominata subnet-1 nel gruppo di risorse 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
Distribuire Azure Bastion
Azure Bastion usa il browser per connettersi alle VM nella rete virtuale tramite Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando i relativi indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazioni speciali.
La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion nel corso di un'esercitazione o di un test, è consigliabile eliminare questa risorsa dopo averla usata. Per altre informazioni su Bastion, vedere Che cos'è Azure Bastion?.
Usare az network vnet subnet create per creare una subnet Bastion per la rete virtuale. Questa subnet è riservata esclusivamente alle risorse Bastion e deve essere denominata AzureBastionSubnet.
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Creare un indirizzo IP pubblico per Bastion. Questo indirizzo IP viene usato per connettersi all'host Bastion da Internet. Usare az network public-ip create per creare un indirizzo IP pubblico denominato public-ip nel gruppo di risorse test-rg :
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Usare az network bastion create per creare un host Bastion in AzureBastionSubnet per la rete virtuale:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
La distribuzione delle risorse Bastion richiede circa 10 minuti. È possibile creare macchine virtuali nella sezione successiva mentre Bastion viene distribuito nella rete virtuale.
Creare macchine virtuali
Usare az vm create per creare due macchine virtuali denominate vm-1 e vm-2 nella subnet subnet-1 della rete virtuale. Quando vengono richieste le credenziali, immettere i nomi utente e le password per le macchine virtuali.
Per creare la prima macchina virtuale, usare il comando seguente:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-1 \
--image Ubuntu2204 \
--public-ip-address ""
Per creare la seconda macchina virtuale, usare il comando seguente:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-2 \
--image Ubuntu2204 \
--public-ip-address ""
Suggerimento
È anche possibile usare l'opzione --no-wait
per creare una macchina virtuale in background mentre si continua con altre attività.
La creazione delle macchine virtuali può richiedere alcuni minuti. Dopo aver creato ogni macchina virtuale, l'interfaccia della riga di comando di Azure restituisce un output simile al messaggio seguente:
{
"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": ""
}
Annotazioni
Le macchine virtuali in una rete virtuale con un host Bastion non necessitano di indirizzi IP pubblici. Bastion fornisce l'indirizzo IP pubblico e le macchine virtuali usano indirizzi IP privati per comunicare all'interno della rete. È possibile rimuovere gli indirizzi IP pubblici da qualsiasi macchina virtuale in reti virtuali ospitate da Bastion. Per altre informazioni, vedere Annullare l'associazione di un indirizzo IP pubblico da una macchina virtuale di Azure.
Annotazioni
Azure fornisce un IP di accesso in uscita predefinito per le macchine virtuali a cui non è stato assegnato un indirizzo IP pubblico o che si trovano nel pool back-end di un servizio del bilanciamento del carico di base di Azure. Il meccanismo dell'IP di accesso in uscita predefinito fornisce un IP in uscita non configurabile.
L'IP di accesso in uscita predefinito è disabilitato quando si verifica uno degli eventi seguenti:
- Alla macchina virtuale viene assegnato un indirizzo IP pubblico.
- La macchina virtuale è posizionata nel pool back-end di un servizio di bilanciamento del carico standard, con o senza regole in uscita.
- Una risorsa del gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.
Le macchine virtuali che crei utilizzando i set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile non hanno accesso predefinito in uscita.
Per altre informazioni sulle connessioni in uscita in Azure, vedere Accesso in uscita predefinito in Azure e Uso di Source Network Address Translation (SNAT) per le connessioni in uscita.
Rivedere il modello
Il modello usato in questa guida di avvio rapido è incluso nei modelli di avvio rapido di 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')]"
}
}
]
}
}
]
}
Il modello definisce le risorse di Azure seguenti:
Implementare il modello
Distribuire il modello di Resource Manager in Azure:
Selezionare Distribuisci in Azure per accedere ad Azure e aprire il modello. Il modello crea una rete virtuale con due subnet.
Nel portale, nella pagina Crea un Rete virtuale con due subnet immettere o selezionare i valori seguenti:
-
Gruppo di risorse: selezionare Crea nuovo, immettere CreateVNetQS-rg come nome del gruppo di risorse e quindi selezionare OK.
-
Rete virtuale Nome: immettere un nome per la nuova rete virtuale.
Seleziona Rivedi e crea e quindi seleziona Crea.
Al termine della distribuzione, selezionare il pulsante Vai alla risorsa per esaminare le risorse distribuite.
Esaminare le risorse distribuite
Esplorare le risorse create con la rete virtuale esplorando i riquadri delle impostazioni per VNet1:
Per altre informazioni sulla sintassi JSON e sulle proprietà di una rete virtuale in un modello, vedere Microsoft.Network/virtualNetworks.
Creare la rete virtuale e le macchine virtuali
Questa guida introduttiva usa il modello Two VNET Bicep da Modelli di avvio rapido di Azure Resource Manager per creare la rete virtuale, la subnet delle risorse e le macchine virtuali. Il modello Bicep definisce le risorse di Azure seguenti:
Esaminare il file 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
Distribuire il modello Bicep
Salvare il file Bicep nel computer locale come main.bicep.
Distribuire il file Bicep usando l'interfaccia della riga di comando di Azure o Azure PowerShell:
Interfaccia a riga di comando (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
Al termine della distribuzione, un messaggio indica che la distribuzione è riuscita.
Distribuire Azure Bastion
Bastion usa il browser per connettersi alle macchine virtuali nella rete virtuale tramite SSH (Secure Shell) o RDP (Remote Desktop Protocol) usando i relativi indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazioni speciali. Per altre informazioni su Bastion, vedere Che cos'è Azure Bastion?.
Annotazioni
La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion nel corso di un'esercitazione o di un test, è consigliabile eliminare questa risorsa dopo averla usata.
Usare il modello Azure Bastion as a Service Bicep da Modelli di avvio rapido di Azure Resource Manager per distribuire e configurare Bastion nella rete virtuale. Questo modello Bicep definisce le risorse di Azure seguenti:
Esaminare il file 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
}
}
}
]
}
}
Distribuire il modello Bicep
Salvare il file Bicep nel computer locale come bastion.bicep.
Usare un editor di testo o di codice per apportare le modifiche seguenti nel file:
- Riga 2: Passare
param vnetName string
da 'vnet01'
a 'VNet'
.
- Riga 5: Passare
param vnetIpPrefix string
da '10.1.0.0/16'
a '10.0.0.0/16'
.
- Riga 12: passare
param vnetNewOrExisting string
da 'new'
a 'existing'
.
- Riga 15: passare
param bastionSubnetIpPrefix string
da '10.1.1.0/26'
a '10.0.1.0/26'
.
- Riga 18: passare
param bastionHostName string
a param bastionHostName = 'VNet-bastion'
.
Le prime 18 righe del file Bicep dovrebbero ora essere simili all'esempio seguente:
@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'
Salvare il file bastion.bicep .
Distribuire il file Bicep usando l'interfaccia della riga di comando di Azure o Azure PowerShell:
Interfaccia a riga di comando (CLI)
az deployment group create \
--resource-group TestRG \
--template-file bastion.bicep
PowerShell
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'bastion.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
Al termine della distribuzione, un messaggio indica che la distribuzione è riuscita.
Annotazioni
Le macchine virtuali in una rete virtuale con un host Bastion non necessitano di indirizzi IP pubblici. Bastion fornisce l'indirizzo IP pubblico e le macchine virtuali usano indirizzi IP privati per comunicare all'interno della rete. È possibile rimuovere gli indirizzi IP pubblici da qualsiasi macchina virtuale in reti virtuali ospitate da Bastion. Per altre informazioni, vedere Annullare l'associazione di un indirizzo IP pubblico da una macchina virtuale di Azure.
Esaminare le risorse distribuite
Usare l'interfaccia della riga di comando di Azure, Azure PowerShell o il portale di Azure per esaminare le risorse distribuite:
Interfaccia a riga di comando (CLI)
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
Portale
Nella portale di Azure cercare e selezionare gruppi di risorse.
Nella pagina Gruppi di risorse selezionare TestRG nell'elenco dei gruppi di risorse.
Nella pagina Panoramica di TestRG esaminare tutte le risorse create, tra cui la rete virtuale, le due macchine virtuali e l'host Bastion.
Selezionare la rete virtuale di rete virtuale. Nella pagina Panoramica per la rete virtuale prendere nota dello spazio indirizzi definito 10.0.0.0/16.
Nel menu a sinistra selezionare Subnet. Nella pagina Subnet prendere nota delle subnet distribuite di backendSubnet e AzureBastionSubnet con i valori assegnati dai file Bicep.