Business Digital

نشر VM Windows و Linux على Azure — درس AZ-104 2026

6 دقائق للقراءة

إطلاق VMs Azure (Windows Server 2022 + Ubuntu 24.04)، اختيار SKU، إرفاق Managed Disks، NSG، Public IP، Bastion Host، snapshots، Availability Sets مقابل Availability Zones، scale sets (VMSS).

للسياق: الدليل الرئيسي Azure AZ-104 · Tenant Azure مجّاني.

المقدّمة

VMs Azure (Virtual Machines) هي خدمة IaaS المرجعيّة. AZ-104 يختبر نشرها، إعدادها، scaling، و HA. هذا الدرس يبني الكفاءة الكاملة.

المتطلّبات

  • Tenant Azure مُهيَّأ (راجع الدرس السابق).
  • Azure CLI شغّال.
  • المستوى المتوسّط.
  • الوقت: ساعتان.

الخطوة 1 — VM SKU والأنواع

Series A      : مستوى ابتدائي، dev/test
Series B      : burstable (اقتصادي لـ workloads متغيّرة)
Series D      : general purpose، متوازن
Series E      : memory optimized
Series F      : compute optimized
Series M      : massive memory (حتى 12 To RAM)
Series N      : GPU (NV لـ graphics، NC/ND لـ ML)
Series H      : HPC

Free Tier: B1s (1 vCPU، 1 Go RAM، ~750h/شهر مجّاني لمدّة 12 شهراً).

في الاختبار: اختر SKU حسب السيناريو. تطبيق ويب قياسيّ = D2s_v3. DB في الذاكرة = E. ML training = ND.

الخطوة 2 — إطلاق VM Linux

# Resource Group
az group create --name lab-vm --location francecentral

# إنشاء VM Ubuntu 24.04 مع SSH key مُولَّد آلياً
az vm create \
  --resource-group lab-vm \
  --name ubuntu-vm \
  --image Ubuntu2404 \
  --size Standard_B1s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard \
  --nsg-rule SSH

# IP عامّة مُرتجَعة
PUBLIC_IP=$(az vm show --resource-group lab-vm --name ubuntu-vm --show-details --query publicIps -o tsv)
ssh azureuser@$PUBLIC_IP

# على الـ VM
sudo apt update && sudo apt install -y nginx
sudo systemctl enable --now nginx
echo "<h1>Hello Azure</h1>" | sudo tee /var/www/html/index.html

# فتح port 80 NSG
az vm open-port --resource-group lab-vm --name ubuntu-vm --port 80

زر http://$PUBLIC_IP — صفحة ويب مُقدَّمة.

الخطوة 3 — إطلاق VM Windows Server

az vm create \
  --resource-group lab-vm \
  --name win-vm \
  --image Win2022Datacenter \
  --size Standard_B2ms \
  --admin-username winadmin \
  --admin-password "ComplexPwd2026!" \
  --public-ip-sku Standard \
  --nsg-rule RDP

# RDP من Windows Remote Desktop client
az vm show --resource-group lab-vm --name win-vm --show-details --query publicIps -o tsv
# اتّصل بـ mstsc.exe

⚠️ VMs Windows أغلى (B2ms ~30 USD/شهر كحدّ أدنى، ليست Free Tier). أوقفها عند عدم الاستعمال.

الخطوة 4 — Managed Disks

Azure managed disks = مكافئ EBS AWS. 4 أنواع:

Standard HDD     : مغناطيسيّ، الأرخص، dev/test
Standard SSD     : SSD مدخل، web servers low traffic
Premium SSD v1   : أداء عالٍ، prod
Premium SSD v2   : جيل جديد، حتى 80K IOPS
Ultra Disk       : disk أداء فائق، حتى 160K IOPS
# إنشاء disk إضافيّ وإرفاقه
az disk create --resource-group lab-vm --name datadisk1 --size-gb 100 --sku Premium_LRS
az vm disk attach --resource-group lab-vm --vm-name ubuntu-vm --name datadisk1

# على الـ VM، formater
sudo lsblk
sudo mkfs.ext4 /dev/sdc
sudo mkdir /mnt/data
sudo mount /dev/sdc /mnt/data

التشفير at-rest: Azure Disk Encryption (BitLocker لـ Windows، dm-crypt لـ Linux)، أو Server-Side Encryption with Customer-Managed Keys.

الخطوة 5 — NSG: Network Security Group

NSG = مكافئ Security Group AWS. Stateful، allow rules.

# إنشاء NSG
az network nsg create --resource-group lab-vm --name lab-nsg

# قواعد
az network nsg rule create --resource-group lab-vm --nsg-name lab-nsg --name AllowHTTP \
  --priority 100 --direction Inbound --access Allow --protocol Tcp --destination-port-ranges 80

az network nsg rule create --resource-group lab-vm --nsg-name lab-nsg --name AllowSSH \
  --priority 110 --direction Inbound --access Allow --protocol Tcp --destination-port-ranges 22 \
  --source-address-prefixes 203.0.113.0/24

# الإرفاق بـ subnet أو NIC لـ VM

في الاختبار: NSG مُرفَق بـ subnet و NIC = قواعد مُقَيَّمة على الاثنين. الأولويّة 100-4096. Default deny inbound، allow outbound.

الخطوة 6 — Bastion Host (تأمين SSH/RDP)

Bastion = وصول SSH/RDP عبر بوّابة ويب دون كشف port 22/3389 عامّاً.

# إنشاء subnet AzureBastionSubnet (اسم إلزاميّ)
az network vnet subnet create --resource-group lab-vm --vnet-name lab-vnet --name AzureBastionSubnet --address-prefix 10.0.10.0/26

# Public IP لـ Bastion
az network public-ip create --resource-group lab-vm --name bastion-pip --sku Standard

# Bastion (~140 USD/شهر — ليست Free Tier)
az network bastion create --resource-group lab-vm --name lab-bastion --public-ip-address bastion-pip --vnet-name lab-vnet --sku Basic

لـ lab: فضّل Bastion Developer (مجّاني، اتّصال متزامن واحد، صالح للتعلّم).

في الاختبار: Bastion = best practice للوصول الإداريّ. لا Public IP على VMs حسّاسة، الوصول عبر Bastion فقط.

الخطوة 7 — Snapshots و images

# Snapshot لـ disk OS
az snapshot create --resource-group lab-vm --name ubuntu-snap-1 --source $(az vm show -g lab-vm -n ubuntu-vm --query "storageProfile.osDisk.managedDisk.id" -o tsv)

# إنشاء image مُخصَّصة من VM
az vm deallocate --resource-group lab-vm --name ubuntu-vm
az vm generalize --resource-group lab-vm --name ubuntu-vm
az image create --resource-group lab-vm --name ubuntu-baseline-image --source ubuntu-vm

# إطلاق VM جديدة من image
az vm create --resource-group lab-vm --name ubuntu-vm-2 --image ubuntu-baseline-image --size Standard_B1s --admin-username azureuser --generate-ssh-keys

⚠️ vm generalize يجعل الـ VM المصدر غير قابلة للاستعمال — افعلها دائماً على VM template، لا على VM في prod.

الخطوة 8 — Availability Sets مقابل Availability Zones

Availability Sets         : مجموعة VMs على racks/UPS مختلفة في نفس datacenter
                           SLA 99.95% (multi-VM)
                           Fault domains (2-3) + Update domains (5-20)

Availability Zones        : مجموعة VMs على datacenters مفصولة فيزيائياً (multi-AZ)
                           SLA 99.99% (multi-VM مع AZ مختلف)
                           متاحة في بعض المناطق (France Central نعم)

في الاختبار: AZ > AS لـ مرونة. استعمل AZ في كلّ مكان متاح، fallback AS إذا المنطقة بلا AZ.

# VMs في 3 AZs مختلفة
az vm create -g lab-vm -n web-01 --image Ubuntu2404 --size Standard_B1s --zone 1 --generate-ssh-keys
az vm create -g lab-vm -n web-02 --image Ubuntu2404 --size Standard_B1s --zone 2 --generate-ssh-keys
az vm create -g lab-vm -n web-03 --image Ubuntu2404 --size Standard_B1s --zone 3 --generate-ssh-keys

الخطوة 9 — VM Scale Sets (VMSS)

VMSS = مكافئ Auto Scaling Group AWS. يُوفّر N VMs متطابقة، autoscale حسب metrics.

az vmss create \
  --resource-group lab-vm \
  --name web-vmss \
  --image Ubuntu2404 \
  --instance-count 3 \
  --vm-sku Standard_B1s \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys \
  --zones 1 2 3

# Scale آليّ على CPU
az monitor autoscale create \
  --resource-group lab-vm --resource web-vmss --resource-type Microsoft.Compute/virtualMachineScaleSets \
  --name autoscale-web --min-count 2 --max-count 10 --count 3

az monitor autoscale rule create \
  --resource-group lab-vm --autoscale-name autoscale-web \
  --condition "Percentage CPU > 70 avg 5m" --scale out 2

az monitor autoscale rule create \
  --resource-group lab-vm --autoscale-name autoscale-web \
  --condition "Percentage CPU < 30 avg 5m" --scale in 1

الخطوة 10 — Cleanup إلزاميّ

# إيقاف وحذف VMs
az vm deallocate --resource-group lab-vm --name ubuntu-vm
az group delete --name lab-vm --yes --no-wait

الأخطاء المتكرّرة

الخطأ الحلّ
VM Windows فاتورة مفاجئة B2ms ~30 USD/شهر، استعمل stop/deallocate عند عدم الاستعمال
SSH timeout NSG، public IP، route table
Bastion ~140 USD/شهر للـ lab استعمل Bastion Developer مجّاني
Disk encryption غير مُفعَّل تفعيل عند الإنشاء، صعب لاحقاً
VM في AS بدلاً من AZ AZ أفضل لـ HA، فضّله في المناطق المُدَعَّمة

تعديلات للسياق الإقليميّ

الشركات الناشئة: B1s/B2s مع stop آليّ ليلاً = توفير 60%. VMSS للذروة فقط.

ESN: قوالب Bicep لـ VM standardisées (NSG، Bastion، AZ) = نشر سريع للعملاء.

البنوك: VMs في 3 AZs + Premium SSD v2 + Azure Disk Encryption + AD DS managed.

أسئلة شائعة

كم وقت لإنشاء VM؟ 1-3 دقائق Linux، 3-5 دقائق Windows.

هل يمكن تغيير SKU في running؟ لا، Stop ← Resize ← Start.

Bastion أم VPN؟ Bastion لإدارة، VPN للتطبيقات.

للتعمّق


الكلمات المفتاحيّة: Azure VM، Managed Disks، NSG، Bastion Host، Availability Zones، VMSS Scale Sets، Premium SSD v2، snapshots Azure.


تعميق

Fintech داكار: VMSS web-vmss في 3 AZs + ALB + Aurora Serverless. تكلفة 300-500 USD/شهر مع scale آليّ.

ESN أبيدجان: Bicep templates مع VM Image Builder لـ images مُخصَّصة. النشر < 10 دقائق.

بنك إقليميّ: VMs في 3 AZs + Premium SSD v2 + Azure Disk Encryption + Azure Backup + Defender for Servers Plan 2.

خطّة مهنة

0-12 شهراً: junior 800K-1.1M FCFA. 12-30: AZ-500 1.4M-2M. 30-60: AZ-305 architect 2.5M-4M. 60+: senior 400-800 USD/يوم.

أدوات تكميليّة

Bicep، Terraform، Azure DevOps، GitHub Actions، Azure Monitor، Microsoft Sentinel، Defender for Cloud، Azure Policy، Update Manager.

مقالات ذات صلة

Service ITSkillsCenter

Site ou application web sur mesure

Conception Pro + Nom de domaine 1 an + Hébergement 1 an + Formation + Support 6 mois. Accès et code livrés. À partir de 350 000 FCFA.

Demander un devis
Publicité