title | titleSuffix | description | author | ms.service | ms.topic | ms.date | ms.author | ms.custom |
---|---|---|---|---|---|---|---|---|
Create a virtual network - quickstart - Azure CLI |
Azure Virtual Network |
In this quickstart, learn to create a virtual network using the Azure CLI. A virtual network lets Azure resources communicate with each other and with the internet. |
mbender-ms |
virtual-network |
quickstart |
04/13/2022 |
mbender |
devx-track-azurecli, mode-api |
A virtual network enables Azure resources, like virtual machines (VMs), to communicate privately with each other, and with the internet.
In this quickstart, you learn how to create a virtual network. After creating a virtual network, you deploy two VMs into the virtual network. You then connect to the VMs from the internet, and communicate privately over the new virtual network.
[!INCLUDE quickstarts-free-trial-note]
[!INCLUDE azure-cli-prepare-your-environment.md]
- This quickstart requires version 2.0.28 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed.
Before you can create a virtual network, you have to create a resource group to host the virtual network. Create a resource group with az group create. This example creates a resource group named CreateVNetQS-rg in the Eastus location:
az group create \
--name CreateVNetQS-rg \
--location eastus
Create a virtual network with az network vnet create. This example creates a default virtual network named myVNet with one subnet named default:
az network vnet create \
--name myVNet \
--resource-group CreateVNetQS-rg \
--subnet-name default
Create two VMs in the virtual network.
Create a VM with az vm create.
If SSH keys don't already exist in a default key location, the command creates them. To use a specific set of keys, use the --ssh-key-value
option.
The --no-wait
option creates the VM in the background. You can continue to the next step.
This example creates a VM named myVM1:
az vm create \
--resource-group CreateVNetQS-rg \
--name myVM1 \
--image UbuntuLTS \
--generate-ssh-keys \
--public-ip-address myPublicIP-myVM1 \
--no-wait
You used the --no-wait
option in the previous step. You can go ahead and create the second VM named myVM2.
az vm create \
--resource-group CreateVNetQS-rg \
--name myVM2 \
--image UbuntuLTS \
--public-ip-address myPublicIP-myVM2 \
--generate-ssh-keys
[!INCLUDE ephemeral-ip-note.md]
The VMs take a few minutes to create. After Azure creates the VMs, the Azure CLI returns output like this:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/CreateVNetQS-rg/providers/Microsoft.Compute/virtualMachines/myVM2",
"location": "eastus",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.5",
"publicIpAddress": "40.68.254.142",
"resourceGroup": "CreateVNetQS-rg"
"zones": ""
}
To get the public IP address myVM2, use az network public-ip show:
az network public-ip show \
--resource-group CreateVNetQS-rg \
--name myPublicIP-myVM2 \
--query ipAddress \
--output tsv
In this command, replace <publicIpAddress>
with the public IP address of your myVM2 VM:
ssh <publicIpAddress>
To confirm private communication between the myVM2 and myVM1 VMs, enter ping myVM1 -c 4
.
You'll receive a reply message like this:
azureuser@myVM2:~$ ping myVM1 -c 4
PING myVM1.h0o2foz2r0tefncddcnfqm2lid.bx.internal.cloudapp.net (10.0.0.4) 56(84) bytes of data.
64 bytes from myvm1.internal.cloudapp.net (10.0.0.4): icmp_seq=1 ttl=64 time=2.77 ms
64 bytes from myvm1.internal.cloudapp.net (10.0.0.4): icmp_seq=2 ttl=64 time=1.95 ms
64 bytes from myvm1.internal.cloudapp.net (10.0.0.4): icmp_seq=3 ttl=64 time=2.19 ms
64 bytes from myvm1.internal.cloudapp.net (10.0.0.4): icmp_seq=4 ttl=64 time=1.85 ms
--- myVM1.h0o2foz2r0tefncddcnfqm2lid.bx.internal.cloudapp.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.859/2.195/2.770/0.357 ms
Exit the SSH session with the myVM2 VM.
When no longer needed, you can use az group delete to remove the resource group and all the resources it has:
az group delete \
--name CreateVNetQS-rg \
--yes
In this quickstart:
- You created a default virtual network and two VMs.
- You connected to one VM from the internet and communicated privately between the two VMs.
Private communication between VMs is unrestricted in a virtual network.
Advance to the next article to learn more about configuring different types of VM network communications:
[!div class="nextstepaction"] Filter network traffic