Skip to main content
AzureGetting Startedbeginner

Getting Started: Your First Azure Project

A beginner-friendly guide to launching your first Azure project, covering account setup, resource groups, VMs, storage, and App Service deployment.

CloudToolStack Team22 min readPublished Feb 22, 2026

Prerequisites

  • A Microsoft account and credit card (free tier available)
  • Basic familiarity with command-line terminals
  • No prior cloud experience required

Welcome to Azure

Microsoft Azure is the world's second-largest cloud computing platform, offering over 200 services spanning compute, storage, networking, databases, AI, DevOps, and much more. Whether you are a developer building your first cloud application, an IT professional migrating on-premises workloads, or a student learning cloud fundamentals, Azure provides the tools and services you need to build, deploy, and manage applications at any scale.

This guide walks you through your first hands-on experience with Azure, from creating your account to deploying a real application. By the end, you will have created a resource group, launched a virtual machine, set up a storage account, deployed a web application on App Service, and learned how to monitor your resources and manage costs. Each section includes step-by-step instructions with both Azure portal and CLI commands so you can follow along using whichever method you prefer.

Cloud computing can feel overwhelming at first due to the sheer number of services and concepts involved. This guide is designed to build your confidence incrementally; we start with simple concepts and gradually introduce more complex ideas. Every resource you create in this guide can be cleaned up at the end to avoid unexpected charges.

Azure Free Account

Azure offers a free account that includes $200 in credit for the first 30 days, plus 12 months of popular free services (including a B1s virtual machine, 5 GB of blob storage, and 250 GB of SQL Database). Many services also have an always-free tier. This guide is designed to work entirely within the free tier, so you can follow along without any cost. Visit azure.microsoft.com/free to create your free account.

Setting Up Your Azure Account

Creating an Azure account requires a Microsoft account (Outlook, Hotmail, or any email linked to a Microsoft account) and a credit or debit card for identity verification. You will not be charged unless you explicitly upgrade from the free tier or exceed your free credits.

Account Creation Steps

  1. Navigate to azure.microsoft.com/free and click "Start free"
  2. Sign in with your Microsoft account or create a new one
  3. Complete identity verification with a phone number
  4. Enter payment information (for identity verification only; you will not be charged)
  5. Accept the terms and conditions
  6. You will be redirected to the Azure portal at portal.azure.com

Installing the Azure CLI

The Azure Command-Line Interface (CLI) is a cross-platform tool for managing Azure resources from the terminal. While the Azure portal provides a graphical interface, the CLI is essential for automation, scripting, and working efficiently with Azure. Throughout this guide, we provide both portal instructions and CLI commands.

Terminal: Install and configure the Azure CLI
# macOS (using Homebrew)
brew install azure-cli

# Windows (using winget)
winget install Microsoft.AzureCLI

# Linux (Ubuntu/Debian)
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

# Verify installation
az version

# Log in to your Azure account
az login

# If you have multiple subscriptions, set the default
az account list --output table
az account set --subscription "<subscription-name-or-id>"

# Verify your current context
az account show --output table

Understanding the Azure Portal

The Azure portal (portal.azure.com) is the web-based management interface for all Azure services. It provides a unified dashboard where you can create, configure, monitor, and manage every aspect of your Azure environment. Understanding the portal layout will help you navigate efficiently as you work through this guide.

Portal Layout

ElementLocationPurpose
Search BarTop centerSearch for any service, resource, or documentation. The fastest way to navigate.
Left SidebarLeft edgeQuick access to favorites: Dashboard, All Services, Resource Groups, etc.
Cloud ShellTop bar (terminal icon)Browser-based terminal with Azure CLI and PowerShell pre-installed.
NotificationsTop bar (bell icon)Shows deployment progress, alerts, and system messages.
Directory + SubscriptionTop bar (filter icon)Switch between Azure AD tenants and filter visible subscriptions.
Cost ManagementSearch or sidebarView current spending, budgets, and cost forecasts.

Azure Cloud Shell

Azure Cloud Shell provides a browser-based terminal directly in the portal with the Azure CLI, PowerShell, Terraform, kubectl, and other tools pre-installed. It is perfect for running CLI commands when you do not have the CLI installed locally. Cloud Shell automatically authenticates with your Azure account and persists files in an Azure File Share. Click the terminal icon in the top bar to launch it.

Resource Groups & Organization

A resource group is the fundamental organizational unit in Azure. Every Azure resource (virtual machine, storage account, database, web app) must belong to exactly one resource group. Think of a resource group as a folder that contains related resources for a particular application, environment, or project. Resource groups provide logical grouping, lifecycle management (deleting a resource group deletes all resources inside it), and a scope for access control and cost tracking.

Resource Group Best Practices

  • Group by lifecycle: Resources that are created and deleted together should be in the same resource group. For example, a web app, its database, and its storage account belong together.
  • Use consistent naming: Follow a naming convention likerg-<project>-<environment>. For example:rg-myapp-dev, rg-myapp-prod.
  • Choose the right region: The resource group's region stores its metadata. Resources inside the group can be in different regions, but the group's region matters for metadata residency and compliance.
  • Apply tags: Use tags to add metadata like cost center, owner, project name, and environment. Tags enable cost reporting and governance across resource groups.
Terminal: Create and manage resource groups
# Create a resource group for this tutorial
az group create \
  --name rg-getting-started \
  --location eastus \
  --tags project=tutorial environment=learning owner=yourname

# List all resource groups in your subscription
az group list --output table

# Show details of a specific resource group
az group show --name rg-getting-started --output json

# List all resources in the resource group (empty for now)
az resource list --resource-group rg-getting-started --output table

Creating Your First Virtual Machine

Azure Virtual Machines (VMs) are one of the most fundamental compute services in Azure. A VM gives you full control over the operating system, installed software, and configuration; it is the closest equivalent to a physical server in the cloud. While many modern applications use platform services like App Service or containers, VMs remain essential for applications that require custom OS configurations, specific software installations, or full server-level access.

Choosing a VM Size

Azure offers hundreds of VM sizes optimized for different workloads. For this tutorial, we will use the Standard_B1s size, which is a burstable VM included in the free tier. In production, you would select a size based on your CPU, memory, storage, and networking requirements.

SeriesOptimized ForExample Use Cases
B-seriesBurstable (economical for low-CPU workloads)Dev/test, small websites, microservices
D-seriesGeneral purpose (balanced CPU and memory)Web servers, application servers, small databases
E-seriesMemory optimizedIn-memory caches, large databases, analytics
F-seriesCompute optimizedBatch processing, gaming servers, scientific modeling
N-seriesGPU acceleratedMachine learning, rendering, video encoding
Terminal: Create a Linux virtual machine
# Create a Linux VM with SSH key authentication
az vm create \
  --resource-group rg-getting-started \
  --name vm-tutorial-linux \
  --image Ubuntu2204 \
  --size Standard_B1s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard \
  --tags project=tutorial

# The command will output the public IP address
# Connect via SSH
ssh azureuser@<public-ip-address>

# View VM details
az vm show \
  --resource-group rg-getting-started \
  --name vm-tutorial-linux \
  --show-details \
  --output table

# Open port 80 for web traffic (if you want to run a web server)
az vm open-port \
  --resource-group rg-getting-started \
  --name vm-tutorial-linux \
  --port 80 \
  --priority 1000

# Stop the VM when not in use (to save costs)
az vm deallocate \
  --resource-group rg-getting-started \
  --name vm-tutorial-linux

# Start the VM again
az vm start \
  --resource-group rg-getting-started \
  --name vm-tutorial-linux

VM Costs

Virtual machines are billed per second while they are running. Even if you are not actively using a VM, it incurs charges until you deallocate it (not just stop the OS). The az vm deallocate command releases the compute resources and stops billing. A stopped-but-not-deallocated VM still incurs compute charges. Set up auto-shutdown schedules for development VMs to avoid unexpected costs.

Setting Up Azure Storage

Azure Storage is a massively scalable, highly durable cloud storage service. A storage account provides access to four storage services: Blob Storage (for unstructured data like files, images, videos), File Storage (managed SMB file shares), Queue Storage (message queues), and Table Storage (NoSQL key-value store). Blob Storage is the most commonly used service and is the focus of this section.

Storage Account Types

Account TypeSupported ServicesReplication OptionsBest For
Standard general-purpose v2Blob, File, Queue, TableLRS, GRS, ZRS, GZRS, RA-GRS, RA-GZRSMost scenarios (recommended default)
Premium block blobsBlock blobs, append blobsLRS, ZRSHigh transaction rates, low latency
Premium file sharesFile shares onlyLRS, ZRSEnterprise file shares, high IOPS
Premium page blobsPage blobs onlyLRSUnmanaged VM disks (legacy)
Terminal: Create a storage account and upload files
# Create a standard storage account
# Note: storage account names must be globally unique, 3-24 lowercase letters/numbers
az storage account create \
  --resource-group rg-getting-started \
  --name stgettingstarted001 \
  --location eastus \
  --sku Standard_LRS \
  --kind StorageV2 \
  --access-tier Hot \
  --tags project=tutorial

# Create a blob container
az storage container create \
  --account-name stgettingstarted001 \
  --name my-first-container \
  --auth-mode login

# Upload a file to the container
echo "Hello from Azure Storage!" > hello.txt
az storage blob upload \
  --account-name stgettingstarted001 \
  --container-name my-first-container \
  --name hello.txt \
  --file hello.txt \
  --auth-mode login

# List blobs in the container
az storage blob list \
  --account-name stgettingstarted001 \
  --container-name my-first-container \
  --auth-mode login \
  --output table

# Download the blob
az storage blob download \
  --account-name stgettingstarted001 \
  --container-name my-first-container \
  --name hello.txt \
  --file downloaded-hello.txt \
  --auth-mode login

# View storage account properties
az storage account show \
  --resource-group rg-getting-started \
  --name stgettingstarted001 \
  --query '{Name:name, Kind:kind, Sku:sku.name, Location:primaryLocation}' \
  --output table

Azure Storage Explorer

Azure Storage Explorer is a free desktop application that provides a graphical interface for managing your Azure Storage accounts, blobs, files, queues, and tables. It supports drag-and-drop file uploads, bulk operations, and connection to storage accounts across multiple subscriptions. Download it from azure.microsoft.com/features/storage-explorer for a more visual alternative to the CLI.

Deploying with Azure App Service

Azure App Service is a fully managed platform for building, deploying, and scaling web applications. Unlike a virtual machine where you manage the OS, runtime, and infrastructure, App Service handles all of that for you; you just deploy your code and it runs. App Service supports .NET, Node.js, Python, Java, PHP, Ruby, and custom containers, making it the easiest way to get a web application running on Azure.

App Service Plans

An App Service Plan defines the compute resources (CPU, memory, features) available to your web apps. The plan determines the pricing tier and the region where your app runs. Multiple web apps can share the same App Service Plan.

Terminal: Deploy a web app to App Service
# Create an App Service Plan (Free tier for this tutorial)
az appservice plan create \
  --resource-group rg-getting-started \
  --name asp-tutorial \
  --sku F1 \
  --is-linux

# Create a web app with Node.js runtime
az webapp create \
  --resource-group rg-getting-started \
  --plan asp-tutorial \
  --name myapp-tutorial-001 \
  --runtime "NODE:20-lts"

# Deploy from a GitHub repository
az webapp deployment source config \
  --resource-group rg-getting-started \
  --name myapp-tutorial-001 \
  --repo-url https://github.com/Azure-Samples/nodejs-docs-hello-world \
  --branch main \
  --manual-integration

# View the deployed app (opens in browser)
az webapp browse \
  --resource-group rg-getting-started \
  --name myapp-tutorial-001

# View app logs for troubleshooting
az webapp log tail \
  --resource-group rg-getting-started \
  --name myapp-tutorial-001

# Configure environment variables (app settings)
az webapp config appsettings set \
  --resource-group rg-getting-started \
  --name myapp-tutorial-001 \
  --settings NODE_ENV=production PORT=8080

# Scale up the App Service Plan (when you need more resources)
# Note: Free tier does not support scaling; this shows the command for reference
# az appservice plan update --resource-group rg-getting-started --name asp-tutorial --sku B1

Deployment Methods

App Service supports multiple deployment methods. Each has its own advantages depending on your workflow and automation needs.

  • Git deployment: Push code directly to App Service using a Git remote URL. App Service builds and deploys automatically on push.
  • GitHub/Azure DevOps integration: Configure continuous deployment from a repository. Every push to the configured branch triggers a build and deploy.
  • ZIP deploy: Upload a ZIP file containing your built application. Useful for CI/CD pipelines.
  • Docker container: Deploy a custom Docker image from Azure Container Registry, Docker Hub, or any private registry.
  • Azure CLI: Use az webapp up for quick deployments directly from your local project directory.
Terminal: Quick deploy with az webapp up
# Navigate to your project directory and deploy in one command
# az webapp up automatically detects the runtime, creates resources, and deploys
cd my-node-app

az webapp up \
  --resource-group rg-getting-started \
  --name myapp-tutorial-001 \
  --runtime "NODE:20-lts" \
  --location eastus

# This single command:
# 1. Creates an App Service Plan (if needed)
# 2. Creates a Web App (if needed)
# 3. Packages and deploys your code
# 4. Enables logging

Networking Basics

Understanding Azure networking fundamentals is important even for beginners because every resource you create exists within a networking context. Virtual machines are deployed into Virtual Networks (VNets), App Service apps can be integrated with VNets for private connectivity, and storage accounts can be restricted to specific networks. This section covers the essential networking concepts you need to understand as a beginner.

Key Networking Concepts

ConceptWhat It IsAnalogy
Virtual Network (VNet)An isolated network in Azure for your resourcesYour private office building network
SubnetA segment within a VNetA floor or department within the building
Network Security Group (NSG)Firewall rules for allowing/denying trafficSecurity guards checking badges at each floor
Public IP AddressAn internet-routable IP assigned to a resourceThe building's street address
Private IP AddressAn internal IP within a VNetAn internal extension number
DNSTranslates domain names to IP addressesA phone directory
Terminal: Explore networking for your VM
# When you created the VM, Azure automatically created networking resources
# Let's explore them

# List all networking resources in the resource group
az network nsg list --resource-group rg-getting-started --output table
az network vnet list --resource-group rg-getting-started --output table
az network public-ip list --resource-group rg-getting-started --output table

# View NSG rules (firewall rules) for the VM
az network nsg rule list \
  --resource-group rg-getting-started \
  --nsg-name vm-tutorial-linuxNSG \
  --output table

# View the VM's network interface
az network nic show \
  --resource-group rg-getting-started \
  --name vm-tutorial-linuxVMNic \
  --query '{PrivateIP:ipConfigurations[0].privateIpAddress, Subnet:ipConfigurations[0].subnet.id}' \
  --output json

Monitoring Your Resources

Azure provides built-in monitoring for all resources through Azure Monitor. Even as a beginner, it is important to understand how to check the health and performance of your resources. Every Azure resource automatically collects platform metrics (like CPU usage, memory, request count) that you can view in the Azure portal without any additional configuration.

Viewing Metrics in the Portal

Navigate to any resource in the Azure portal and click "Metrics" in the left menu. This opens the metrics explorer where you can select metrics, choose aggregations (average, max, min, count), set time ranges, and create charts. You can pin these charts to your Azure Dashboard for a quick operational overview.

Setting Up Basic Alerts

Alerts notify you when something requires attention. For your tutorial resources, set up a simple alert to be notified if your VM's CPU exceeds a threshold.

Terminal: Set up basic monitoring and alerts
# View available metrics for your VM
az monitor metrics list-definitions \
  --resource /subscriptions/<sub-id>/resourceGroups/rg-getting-started/providers/Microsoft.Compute/virtualMachines/vm-tutorial-linux \
  --query "[].{Name:name.value, Description:displayDescription}" \
  --output table

# Query CPU metrics for the last hour
az monitor metrics list \
  --resource /subscriptions/<sub-id>/resourceGroups/rg-getting-started/providers/Microsoft.Compute/virtualMachines/vm-tutorial-linux \
  --metric "Percentage CPU" \
  --aggregation Average \
  --interval PT5M \
  --output table

# Create an action group for email notifications
az monitor action-group create \
  --resource-group rg-getting-started \
  --name ag-tutorial-alerts \
  --short-name Tutorial \
  --email-receiver name="MyEmail" email-address="your-email@example.com"

# Create a CPU alert for the VM
az monitor metrics alert create \
  --resource-group rg-getting-started \
  --name "alert-vm-high-cpu" \
  --description "Alert when VM CPU exceeds 80% for 5 minutes" \
  --scopes /subscriptions/<sub-id>/resourceGroups/rg-getting-started/providers/Microsoft.Compute/virtualMachines/vm-tutorial-linux \
  --condition "avg Percentage CPU > 80" \
  --window-size 5m \
  --evaluation-frequency 1m \
  --severity 3 \
  --action ag-tutorial-alerts

Azure Advisor

Azure Advisor is a free, built-in recommendation engine that analyzes your resource configuration and usage patterns to provide personalized suggestions for improving reliability, security, performance, operational excellence, and cost. Check Azure Advisor regularly; search for "Advisor" in the portal search bar. It often identifies quick wins like unused resources, oversized VMs, or missing security configurations that are especially common in new Azure environments.

Cleaning Up & Managing Costs

One of the most important habits to develop as a cloud practitioner is cleaning up resources when they are no longer needed. Unlike on-premises infrastructure where idle servers have a fixed sunk cost, cloud resources incur ongoing charges for as long as they exist. This section shows you how to clean up the resources from this tutorial and introduces cost management practices you should adopt from day one.

Cleaning Up Tutorial Resources

Terminal: Delete all tutorial resources
# The easiest way to clean up: delete the entire resource group
# This deletes ALL resources inside it (VM, storage, networking, etc.)
az group delete \
  --name rg-getting-started \
  --yes \
  --no-wait

# Verify the resource group is being deleted
az group show --name rg-getting-started --query properties.provisioningState

# List remaining resource groups to confirm cleanup
az group list --output table

Double-Check Before Deleting

Deleting a resource group is irreversible; all resources inside it are permanently destroyed. Always verify you are deleting the correct resource group, especially in environments with multiple resource groups. Use az resource list --resource-group <name> to see what will be deleted before confirming. In production environments, consider using resource locks to prevent accidental deletion of critical resources.

Cost Management Best Practices for Beginners

  • Set up budget alerts: Create a budget in Azure Cost Management and configure alerts at 50%, 80%, and 100% of your spending limit. This gives you early warning before costs exceed expectations.
  • Use auto-shutdown for VMs: Configure auto-shutdown on development VMs to automatically deallocate them outside of working hours. Navigate to your VM in the portal and look for "Auto-shutdown" in the left menu.
  • Review Azure Advisor cost recommendations: Advisor identifies underutilized resources and suggests right-sizing or deletion.
  • Use the free tier wisely: Many Azure services include free monthly allowances. Familiarize yourself with these limits to keep costs at zero during learning.
  • Tag everything: Apply tags to all resources from day one. Tags likeproject, environment, and owner make it easy to identify which resources are for which purpose and who is responsible for them.
  • Check spending daily: During your first month with Azure, check Cost Management daily to build awareness of how different services accrue charges.
Terminal: Set up a budget alert
# Create a monthly budget of $10 for your subscription
az consumption budget create \
  --budget-name "LearningBudget" \
  --amount 10 \
  --category Cost \
  --time-grain Monthly \
  --start-date 2024-01-01 \
  --end-date 2024-12-31

# View current cost summary
az consumption usage list \
  --start-date 2024-01-01 \
  --end-date 2024-01-31 \
  --query "[].{Service:consumedService, Cost:pretaxCost, Currency:currency}" \
  --output table

Next Steps

Congratulations, you have completed your first Azure project! You have learned how to create and manage resource groups, deploy virtual machines, work with storage accounts, deploy web applications with App Service, explore networking, set up monitoring, and manage costs. These foundational skills apply to virtually every Azure project you will work on.

Here are recommended next steps to continue your Azure learning journey:

  • Azure AD & RBAC: Learn how to manage identities and control who can access your resources with role-based access control.
  • Virtual Machine deep dive: Explore VM sizes, availability sets, managed disks, and VM Scale Sets for production workloads.
  • Azure Storage tiers: Understand Hot, Cool, Cold, and Archive storage tiers for cost-optimized data management.
  • Infrastructure as Code: Learn ARM templates or Bicep to automate resource provisioning instead of using CLI commands manually.
  • Azure Well-Architected Framework: Study the five pillars of well-architected cloud solutions to build production-ready systems.

Key Takeaways

  1. 1Azure free account includes $200 credit for 30 days plus 12 months of popular free services.
  2. 2Resource groups organize all related resources and simplify cleanup and cost tracking.
  3. 3Azure Virtual Machines provide flexible compute with Windows and Linux options.
  4. 4Azure Storage accounts provide blob, file, queue, and table storage in one service.
  5. 5Azure App Service deploys web applications without managing infrastructure.
  6. 6Always delete resource groups when done to avoid unexpected charges.

Frequently Asked Questions

Is the Azure free account really free?
Yes. You get $200 in credits for the first 30 days to explore any Azure service. After that, 55+ services remain free for 12 months within usage limits (B1S VM, 5 GB Blob storage, etc.). Some services like App Service F1 and Azure Functions consumption plan are always free.
What is a resource group?
A resource group is a logical container for Azure resources. All resources in a group share the same lifecycle, so you can deploy, update, and delete them together. Use resource groups to organize by project, environment, or application. Deleting a resource group deletes everything in it.
How do I avoid unexpected Azure charges?
Create a cost alert in Azure Cost Management when you set up your account. Use resource groups so you can delete all resources at once. Check the Cost Analysis blade regularly. Remember that stopped VMs still incur disk charges. Delete resource groups entirely when done learning.
Which Azure region should I use?
For learning, choose a region close to you for lower latency. East US and West Europe are popular choices with the widest service availability. Some services and VM sizes are only available in specific regions.
What is Azure Cloud Shell?
Azure Cloud Shell is a browser-based terminal with Azure CLI and Azure PowerShell pre-installed. Access it from the Azure portal toolbar. It includes persistent 5 GB storage, pre-configured authentication, and common developer tools, with no local installation required.

Written by CloudToolStack Team

Cloud engineers and architects with hands-on experience across AWS, Azure, and GCP. We write guides based on real-world production patterns, not just documentation rewrites.

Disclaimer: This guide is for educational purposes. Cloud services change frequently; always refer to official documentation for the latest information. AWS, Azure, and GCP are trademarks of their respective owners.