Hands-on Azure Administrator practice | Microsoft Azure
As part of my AZ-104 Microsoft Azure Administrator preparation, I completed Microsoft Learn Lab 04: Implement Virtual Networking. The lab brought together virtual networks, subnet planning, ARM templates, network security, and DNS.
1. Create a virtual network and subnets
I created CoreServicesVnet in resource group az104-rg5, using address space 10.20.0.0/16. I added SharedServicesSubnet (10.20.10.0/24) and DatabaseSubnet (10.20.20.0/24). Planning address ranges and separating workloads into subnets helps keep an Azure network organized and scalable.
Note: Complete the name and address information for each subnet. Be sure to select Add for each new subnet. Be sure to delete the default subnet - either before or after creating the other subnets.

Once you have reviewed and created it, wait for the virtual network to deploy, and then select Go to resource.
2. Export and modify an ARM template
I exported the virtual network ARM template and parameters, then modified the files to define ManufacturingVnet. The target address space was 10.30.0.0/16, with SensorSubnet1 (10.30.20.0/24) and SensorSubnet2 (10.30.21.0/24). This was a practical introduction to repeatable infrastructure deployment using ARM templates.

Note: Before proceeding, ensure you have the template.json file.
3. Deploy the custom template
I used Azure Custom deployment to load the edited template, supply the deployment parameters, and deploy the second virtual network. The key lesson: reusable templates reduce repetitive portal work, but names, parameters, and subnet prefixes must be checked carefully before deployment.

Ensure your resource group has a unique name. Take note that I am using rg5 instead.
Wait for the template to deploy, then confirm (in the portal) that the Manufacturing virtual network and subnets were created.
Note: If you have to deploy more than one time, you may find that some resources were successfully completed and the deployment is failing. You can manually remove those resources and try again. my resource group in this exercise is rg5.
4. Configure NSGs and ASGs
I created the application security group asg-web and the network security group myNSGSecure, then associated the NSG with SharedServicesSubnet. I also worked with inbound and outbound security rules. NSGs filter network traffic, while ASGs let rules refer to groups of application workloads rather than relying only on individual IP addresses. Rules should follow least privilege and allow only required traffic.
*Note: * You would associate the ASG with virtual machine(s). These machines will be affected by the inbound NSG rule we created in the next task.
Note: In the screenshot above, I resolved the name to a simple domain. Keep following the guided link in the post, and you will be good.
5. Configure public and private DNS
I created the public DNS zone ednet.com and configured a www A record pointing to 10.1.1.4. I also created the private DNS zone private.contoso.com and linked it to ManufacturingVnet. Public DNS supports public name resolution; private DNS supports name resolution for resources in linked virtual networks.
6. Verify name resolution
I used nslookup to check www.ednet.com and observed it resolving to 10.1.1.4 in the lab. This confirms the result shown in my test environment; it does not, by itself, demonstrate that the address is publicly reachable.
Key takeaways
• Plan non-overlapping IP address spaces and subnet ranges.
• Use ARM templates to make deployments repeatable.
• Use NSGs and ASGs to manage access in a structured way.
• Use public and private DNS zones for the appropriate name-resolution scope.
• Validate deployments and test connectivity rather than assuming configuration is correct.
This lab strengthened my understanding of the building blocks behind Azure networking and gave me useful hands-on practice for the AZ-104 exam and cloud administration work.
Lab reference: https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_04-Implement_Virtual_Networking.html



















Top comments (0)