Informazioni su 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 Azure Resource Manager (ARM), 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, ad esempio le macchine virtuali, di comunicare in modo sicuro tra loro e con Internet.
Usare i valori seguenti per sostituire i segnaposto delle risorse in questo articolo:
Creare un gruppo di risorse
Accedere al portale di Azure con il proprio account Azure.
Nella casella di ricerca nella parte superiore del portale, immettere Gruppo di risorse. Selezionare Gruppi di risorse nei risultati della ricerca.
Seleziona + Crea.
Nella scheda Informazioni di base di Crea un gruppo di risorse immettere o selezionare le informazioni seguenti:
| Impostazione |
Valore |
| Abbonamento |
Selezionare la sottoscrizione. |
| Gruppo di risorse |
Immettere <resource-group>. |
| Area geografica |
Selezionare regione<>. |
Selezionare Rivedi e crea.
Fare clic su Crea.
Creare una rete virtuale
Nella casella di ricerca nella parte superiore del portale immettere Rete virtuale. Selezionare Reti virtuali nei risultati della ricerca.
Seleziona + 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 |
Selezionare <gruppo di> risorse. |
|
Dettagli dell'istanza |
|
| Nome |
Immettere <virtual-network>. |
| Area geografica |
Selezionare <regione>. |
Selezionare Avanti per passare alla scheda Sicurezza.
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 |
|
Dettagli subnet |
|
| Modello di subnet |
Lasciare l'impostazione predefinita Predefinito. |
| Nome |
Immettere <subnet>. |
| Indirizzo iniziale |
Lasciare l'impostazione predefinita 10.0.0.0. |
| Dimensioni della subnet |
Lasciare l'impostazione predefinita /24 (256 indirizzi). |
Seleziona Salva.
Selezionare Rivedi e crea in fondo allo schermo e, quando la convalida ha esito positivo, selezionare Crea.
Distribuire Azure Bastion
Azure Bastion usa il browser per connettersi alle macchine virtuali (VM) nella rete virtuale tramite SSH (Secure Shell) o RDP (Remote Desktop Protocol) usando gli indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazione speciale. Per altre informazioni su Azure Bastion, vedere 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.
Nella casella di ricerca nella parte superiore del portale, immettere Bastion. Selezionare Bastions nei risultati della ricerca.
Seleziona + Crea.
Nella scheda Informazioni di base di Creare un bastion immettere o selezionare le informazioni seguenti:
| Impostazione |
Valore |
|
Dettagli di progetto |
|
| Abbonamento |
Selezionare la sottoscrizione. |
| Gruppo di risorse |
Selezionare <gruppo di> risorse. |
|
Dettagli dell'istanza |
|
| Nome |
Immettere <bastion>. |
| Area geografica |
Selezionare la regione<>. |
| Tier |
Selezionare Sviluppatore. |
|
Configurare le reti virtuali |
|
| Rete virtuale |
Selezionare <rete virtuale>. |
Selezionare Rivedi e crea.
Fare clic su Crea.
Creare macchine virtuali
La procedura seguente crea due macchine virtuali denominate <virtual-machine-1> e <virtual-machine-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 <gruppo di> risorse. |
|
Dettagli dell'istanza |
|
| Nome della macchina virtuale |
Inserire <virtual-machine-1>. |
| Area geografica |
Selezionare <regione>. |
| 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 Chiave pubblica SSH. |
| Nome utente |
Inserire azureuser. |
| Origine chiave pubblica SSH |
Selezionare Genera nuova coppia di chiavi. |
| Nome della coppia di chiavi |
Immettere <virtual-machine-1-key>. |
|
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 <rete virtuale>. |
| Subnet |
Selezionare <subnet> (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 <network-security-group> come 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 <virtual-machine-2>. |
| Origine chiave pubblica SSH |
Selezionare Genera nuova coppia di chiavi. |
| Nome della coppia di chiavi |
Immettere <virtual-machine-2-key>. |
| Rete virtuale |
Selezionare <rete virtuale>. |
| Subnet |
Selezionare <subnet> (10.0.0.0/24). |
| IP pubblico |
Seleziona Nessuno. |
| Gruppo di sicurezza della rete NIC |
Seleziona Avanzate. |
| Configura gruppo di sicurezza di rete |
Selezionare <network-security-group>. |
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 la rete virtuale. Eseguire il codice seguente per creare un gruppo di risorse denominato <gruppo> di risorsenell'area<> di Azure:
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$rg = @{
Name = $resourceGroupName
Location = $location
}
New-AzResourceGroup @rg
Creare una rete virtuale
Usare New-AzVirtualNetwork per creare una rete virtuale denominata <virtual-network> con prefisso indirizzo IP 10.0.0.0/16 nel gruppo di risorse del gruppo< di risorse e nella località dell'area><:>
# Variable declarations
$virtualNetworkName = 'vnet-1' # <virtual-network>
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$vnet = @{
Name = $virtualNetworkName
ResourceGroupName = $resourceGroupName
Location = $location
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> con prefisso indirizzo 10.0.0.0/24:
# Variable declarations
$subnetName = 'subnet-1' # <subnet>
$subnet = @{
Name = $subnetName
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 macchine virtuali nella rete virtuale tramite Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando gli indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazione speciale. Per altre informazioni su Azure 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.
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$ip = @{
ResourceGroupName = $resourceGroupName
Name = 'public-ip'
Location = $location
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
Usare il comando New-AzBastion per creare un nuovo host Bastion SKU Basic in AzureBastionSubnet:
# Variable declarations
$bastionName = 'bastion' # <bastion>
$resourceGroupName = 'test-rg' # <resource-group>
$virtualNetworkName = 'vnet-1' # <virtual-network>
$bastion = @{
Name = $bastionName
ResourceGroupName = $resourceGroupName
PublicIpAddressRgName = $resourceGroupName
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = $resourceGroupName
VirtualNetworkName = $virtualNetworkName
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
Creare la prima macchina virtuale
Creare una macchina virtuale con New-AzVM. L'esempio seguente crea una macchina virtuale denominata <virtual-machine-1> nella <rete virtuale>.
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$vm1Name = 'vm-1' # <virtual-machine-1>
$virtualNetworkName = 'vnet-1' # <virtual-network>
$subnetName = 'subnet-1' # <subnet>
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = $resourceGroupName
Location = $location
Name = $vm1Name
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = $virtualNetworkName
SubnetName = $subnetName
PublicIpAddressName = "" # No public IP address
SshKeyName = "$vm1Name-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
Creare la seconda macchina virtuale
# Variable declarations
$resourceGroupName = 'test-rg' # <resource-group>
$location = 'eastus2' # <region>
$vm2Name = 'vm-2' # <virtual-machine-2>
$virtualNetworkName = 'vnet-1' # <virtual-network>
$subnetName = 'subnet-1' # <subnet>
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = $resourceGroupName
Location = $location
Name = $vm2Name
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = $virtualNetworkName
SubnetName = $subnetName
PublicIpAddressName = "" # No public IP address
SshKeyName = "$vm2Name-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
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 in Bastion. Per ulteriori informazioni, vedere Dissociare un indirizzo IP pubblico da una macchina virtuale 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 <gruppo di risorse>nell'area<> di Azure:
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
location="eastus2" # <region>
az group create \
--name $resourceGroupName \
--location $location
Creare una rete virtuale e una subnet
Usare az network vnet create per creare una rete virtuale denominata <virtual-network> con una subnet denominata <subnet> nel <gruppo di risorse> :
# Variable declarations
virtualNetworkName="vnet-1" # <virtual-network>
resourceGroupName="test-rg" # <resource-group>
subnetName="subnet-1" # <subnet>
az network vnet create \
--name $virtualNetworkName \
--resource-group $resourceGroupName \
--address-prefix 10.0.0.0/16 \
--subnet-name $subnetName \
--subnet-prefixes 10.0.0.0/24
Distribuire Azure Bastion
Azure Bastion usa il browser per connettersi alle macchine virtuali nella rete virtuale tramite Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando gli indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazione speciale.
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 Azure 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.
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
virtualNetworkName="vnet-1" # <virtual-network>
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group $resourceGroupName \
--vnet-name $virtualNetworkName \
--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 resource-group> :
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
location="eastus2" # <region>
az network public-ip create \
--resource-group $resourceGroupName \
--name public-ip \
--sku Standard \
--location $location \
--zone 1 2 3
Usare az network bastion create per creare un host Bastion in AzureBastionSubnet per la rete virtuale:
# Variable declarations
bastionName="bastion" # <bastion>
resourceGroupName="test-rg" # <resource-group>
virtualNetworkName="vnet-1" # <virtual-network>
location="eastus2" # <region>
az network bastion create \
--name $bastionName \
--public-ip-address public-ip \
--resource-group $resourceGroupName \
--vnet-name $virtualNetworkName \
--location $location \
--sku Basic
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
Creare la prima macchina virtuale
Creare una macchina virtuale con az vm create. L'esempio seguente crea una macchina virtuale denominata <virtual-machine-1> nella <rete virtuale>. Se le chiavi SSH non esistono già in una posizione predefinita, vengono create dal comando. L'opzione --no-wait crea la macchina virtuale in background, quindi è possibile continuare con il passaggio successivo.
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
vm1Name="vm-1" # <virtual-machine-1>
virtualNetworkName="vnet-1" # <virtual-network>
subnetName="subnet-1" # <subnet>
az vm create \
--resource-group $resourceGroupName \
--name $vm1Name \
--image Ubuntu2204 \
--vnet-name $virtualNetworkName \
--subnet $subnetName \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys \
--no-wait
Creare la seconda macchina virtuale
Creare una macchina virtuale denominata <virtual-machine-2> nella <rete virtuale>.
# Variable declarations
resourceGroupName="test-rg" # <resource-group>
vm2Name="vm-2" # <virtual-machine-2>
virtualNetworkName="vnet-1" # <virtual-network>
subnetName="subnet-1" # <subnet>
az vm create \
--resource-group $resourceGroupName \
--name $vm2Name \
--image Ubuntu2204 \
--vnet-name $virtualNetworkName \
--subnet $subnetName \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys
La creazione della macchina virtuale richiede alcuni minuti.
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 in 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.
Nella pagina Crea una rete virtuale con due subnet del portale immettere o selezionare i valori seguenti:
-
Gruppo di risorse: selezionare Crea nuovo, immettere CreateVNetQS-rg per il nome del gruppo di risorse e quindi selezionare OK.
-
Nome rete virtuale: 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 di avvio rapido utilizza il modello Bicep Two VMs in virtual network 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:
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 Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando i propri indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazione speciale. Per altre informazioni su Azure 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 Bicep Azure Bastion come servizio 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: cambiare
param vnetName string sostituendo 'vnet01' con 'VNet'.
- Riga 5: cambiare
param vnetIpPrefix string sostituendo '10.1.0.0/16' con '10.0.0.0/16'.
- Riga 12: cambiare
param vnetNewOrExisting string sostituendo 'new' con 'existing'.
- Riga 15: cambiare
param bastionSubnetIpPrefix string sostituendo '10.1.1.0/26' con '10.0.1.0/26'.
- Riga 18: sostituire
param bastionHostName string con param bastionHostName = 'VNet-bastion'.
Le prime 18 righe del file Bicep ora dovrebbero 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:
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 in 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:
CLI
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
Portale
Nel 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 della rete virtuale. Nella pagina Panoramica per VNet, 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.