<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem:      Faith Aneke Adaora</title>
    <description>The latest articles on Forem by      Faith Aneke Adaora (@adaoraa).</description>
    <link>https://forem.com/adaoraa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3767482%2Fa841e0a2-f244-4d1c-a963-ac5a157666b6.jpeg</url>
      <title>Forem:      Faith Aneke Adaora</title>
      <link>https://forem.com/adaoraa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/adaoraa"/>
    <language>en</language>
    <item>
      <title>🧹 Part 6: Resource Cleanup &amp; Cost Control -Decommissioning Azure Infrastructure</title>
      <dc:creator>     Faith Aneke Adaora</dc:creator>
      <pubDate>Fri, 10 Apr 2026 19:18:54 +0000</pubDate>
      <link>https://forem.com/adaoraa/part-6-resource-cleanup-cost-control-decommissioning-azure-infrastructure-nfn</link>
      <guid>https://forem.com/adaoraa/part-6-resource-cleanup-cost-control-decommissioning-azure-infrastructure-nfn</guid>
      <description>&lt;h2&gt;
  
  
  Overview: 🧹 Clean Up (Avoid Unexpected Azure Costs)
&lt;/h2&gt;

&lt;p&gt;Every good cloud engineer knows this:&lt;br&gt;
&lt;strong&gt;If you don’t clean up, you keep paying and Azure resources continue running and billing until they are deleted.&lt;/strong&gt;&lt;br&gt;
So the final step in this guided project was to properly remove everything i have created.&lt;/p&gt;

&lt;p&gt;This ensures:&lt;br&gt;
&lt;strong&gt;•No unexpected charges&lt;br&gt;
•No orphaned resources&lt;br&gt;
•A clean environment&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Procedure
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔓 Step 1: Remove Delete Locks
&lt;/h3&gt;

&lt;p&gt;Earlier in the project,i protected the VM with a Delete lock.&lt;br&gt;
Hence, before deleting anything that lock must be removed.&lt;br&gt;
Here’s what i did:&lt;/p&gt;

&lt;h4&gt;
  
  
  ✔ Removing the VM Lock
&lt;/h4&gt;

&lt;p&gt;1.Navigated to Virtual Machines&lt;br&gt;
2.Selected guided-project-vm&lt;br&gt;
3.Opened Settings → Locks&lt;br&gt;
4.Deleted the VM-delete-lock&lt;br&gt;
5.Confirmed removal&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh41552jzzs9ze0quf84.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh41552jzzs9ze0quf84.jpeg" alt="delete lock" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the lock was removed,the VM became eligible for deletion.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✔ Removing the Resource Group Lock (If Applied)
&lt;/h4&gt;

&lt;p&gt;I also applied a lock at the Resource Group level, i :&lt;br&gt;
1.Navigated to Resource Groups&lt;br&gt;
2.Selected the project resource group&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqxlhqkfjus666k8f98z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqxlhqkfjus666k8f98z.jpeg" alt=" " width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Opened Settings → Locks&lt;br&gt;
4.Deleted the Resource Group delete lock&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3l3cnz731kyt5oxvous.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3l3cnz731kyt5oxvous.jpeg" alt="Rg lock" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5.Confirmed removal.&lt;/p&gt;

&lt;h4&gt;
  
  
  💡 Reminder
&lt;/h4&gt;

&lt;p&gt;Always remove locks before attempting to delete resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  🗑️ Step 2: Delete the Resource Group
&lt;/h3&gt;

&lt;p&gt;One of the biggest advantages of using resource groups is that you can delete everything at once.&lt;br&gt;
Where instead of deleting:&lt;br&gt;
•The VM&lt;br&gt;
•The VNet&lt;br&gt;
•The Storage account&lt;br&gt;
•The NSG&lt;br&gt;
•The Subnets individually…&lt;/p&gt;

&lt;p&gt;I simply:&lt;br&gt;
1.Navigated to Resource Groups&lt;br&gt;
2.Selected guided-project-rg&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmovxjmc4ffbui7o953q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmovxjmc4ffbui7o953q.jpeg" alt="project-rg" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Chose Delete resource group&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcsrfb663lr545liezxm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcsrfb663lr545liezxm.jpeg" alt="Delete rg" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Entered the resource group name to confirm.&lt;br&gt;
5.Confirmed removal&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdee7xtcwzux4wguhxokr.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdee7xtcwzux4wguhxokr.jpeg" alt="enter rg name " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within a few minutes, Azure removed all associated resources.&lt;br&gt;
Clean. Efficient. Complete.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ Important Note: The NetworkWatcherRG Check
&lt;/h3&gt;

&lt;p&gt;🔗 Azure sometimes automatically creates a resource group called &lt;strong&gt;¥NetworkWatcherRG&lt;/strong&gt;,if it already existed before the project, do NOT delete it.&lt;br&gt;
🔗 If it was created during this guided project, then it should also be removed using the same deletion process.&lt;br&gt;
🔗 Always verify before deleting shared system resource groups.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Final Outcome’
&lt;/h3&gt;

&lt;p&gt;At this point:&lt;br&gt;
☑️ •All locks removed&lt;br&gt;
☑️ •All project resources deleted&lt;br&gt;
☑️ •No active billable services remaining&lt;br&gt;
☑️ •Environment fully cleaned&lt;/p&gt;

&lt;p&gt;This concludes the Azure Management Tasks Guided Project.&lt;/p&gt;

&lt;p&gt;From:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✔ Environment setup&lt;br&gt;
✔ Networking updates&lt;br&gt;
✔ VM management&lt;br&gt;
✔ Storage configuration&lt;br&gt;
✔ Tags &amp;amp; governance&lt;br&gt;
✔ Cleanup &amp;amp; cost control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a full administrative lifecycle, end to end.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>🔒 Part 5 : Managing Tags &amp; Resource Locks in Azure</title>
      <dc:creator>     Faith Aneke Adaora</dc:creator>
      <pubDate>Thu, 09 Apr 2026 20:24:41 +0000</pubDate>
      <link>https://forem.com/adaoraa/part-5-managing-tags-resource-locks-in-azure-4o88</link>
      <guid>https://forem.com/adaoraa/part-5-managing-tags-resource-locks-in-azure-4o88</guid>
      <description>&lt;h2&gt;
  
  
  🏷️ Overview
&lt;/h2&gt;

&lt;p&gt;After configuring networking, scaling the VM, and managing storage,the final responsibility was governance.&lt;br&gt;
This is because in real-world environments, deploying resources isn’t enough,you must:&lt;br&gt;
• Organize them&lt;br&gt;
• Monitor ownership&lt;br&gt;
• Prevent accidental deletion&lt;/p&gt;

&lt;p&gt;Hence, this phase focused on tags and resource locks which are two simple but powerful Azure management tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 The Scenario
&lt;/h3&gt;

&lt;p&gt;The Azure admin had two concerns:&lt;br&gt;
1.Prevent accidental deletion of the VM running as an FTP server.&lt;br&gt;
2.Quickly identify which department owns which resource.&lt;br&gt;
This is where governance best practices come in.&lt;/p&gt;

&lt;h3&gt;
  
  
  🖥️ Managing Tags and Locks on the Virtual Machine
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Step 1: 🏷️ Adding Tags to the VM
&lt;/h4&gt;

&lt;p&gt;Tags allow you to categorize and group resources using key-value pairs.&lt;br&gt;
• Where inside the guided-project-vm&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbieetn6wb5cj46p3dhbr.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbieetn6wb5cj46p3dhbr.jpeg" alt="virtual machine " width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•I added two tags:&lt;br&gt;
Name          Value&lt;br&gt;
Department    Customer Service&lt;br&gt;
Purpose       FTP Server&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkedxq5cbuycb70xq80hi.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkedxq5cbuycb70xq80hi.jpeg" alt="Tags" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This makes it easy to:&lt;br&gt;
•Filter resources by department&lt;br&gt;
•Track cost allocation&lt;br&gt;
•Identify resource purpose instantly&lt;br&gt;
Tags are small but powerful for reporting and organization.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2: 🔒 Adding a Resource Lock to Prevent Deletion
&lt;/h4&gt;

&lt;p&gt;Next, I secured the VM.&lt;br&gt;
Where inside Settings → Locks, I:&lt;br&gt;
•Selected + Add&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzhfovv4nbur2k26bip3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzhfovv4nbur2k26bip3.jpeg" alt="+Add" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Named the lock VM-delete-lock&lt;br&gt;
•Chose Lock type: Delete&lt;br&gt;
•Added a note explaining the reason&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rcyjtkiqx3ehtkqs7j2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rcyjtkiqx3ehtkqs7j2.jpeg" alt="name the locks" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  What this means
&lt;/h6&gt;

&lt;p&gt;The VM can still be modified but it cannot be deleted unless the lock is removed first.&lt;br&gt;
This is critical for production workloads where one accidental click won’t take down the FTP server.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3: 🌐 Adding Tags to Network Resources
&lt;/h4&gt;

&lt;p&gt;Governance shouldn’t stop at compute.&lt;br&gt;
Next, I moved to the virtual network (guided-project-vnet) &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgc62cxtnqjwuysn7qxt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgc62cxtnqjwuysn7qxt.jpeg" alt="vnet" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and added:&lt;br&gt;
Name             Value&lt;br&gt;
Department       IT&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr1elbh3bczhu2drjr4z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr1elbh3bczhu2drjr4z.jpeg" alt="add tags" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Key Note💡 1:
&lt;/h4&gt;

&lt;p&gt;Now both&lt;br&gt;
•The VM&lt;br&gt;
•The Virtual Network are clearly categorized and traceable and this improves:&lt;br&gt;
•Visibility&lt;br&gt;
•Cost tracking&lt;br&gt;
•Operational clarity&lt;/p&gt;

&lt;h4&gt;
  
  
  Key Note💡 2:
&lt;/h4&gt;

&lt;p&gt;Tags and Locks Matter because:&lt;br&gt;
In large environments with hundreds of resources,&lt;br&gt;
•Tags help with cost management and reporting.&lt;br&gt;
•Locks prevent critical service disruptions.&lt;br&gt;
•Governance reduces operational risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Conclusion
&lt;/h2&gt;

&lt;p&gt;Cloud administration is not just about building infrastructure.&lt;br&gt;
It’s about managing it responsibly.&lt;/p&gt;

&lt;p&gt;Therefore at this stage of the guided project, i have:&lt;br&gt;
•Organized resources using tags.&lt;br&gt;
•Protected critical infrastructure with delete locks.&lt;br&gt;
•Improved visibility across departments.&lt;br&gt;
•Strengthened governance practices.&lt;/p&gt;

&lt;p&gt;This concludes the Azure Management Tasks guided project.&lt;br&gt;
🔗 From networking…&lt;br&gt;
🔗 To compute…&lt;br&gt;
🔗 To storage…&lt;br&gt;
🔗 To governance…&lt;br&gt;
🔑 A full administrative lifecycle.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🗄️ Part 4 : Managing Azure Storage - Containers, Access Tiers &amp; Secure Access Control</title>
      <dc:creator>     Faith Aneke Adaora</dc:creator>
      <pubDate>Thu, 09 Apr 2026 19:34:33 +0000</pubDate>
      <link>https://forem.com/adaoraa/managing-azure-storage-containers-access-tiers-secure-access-control-g71</link>
      <guid>https://forem.com/adaoraa/managing-azure-storage-containers-access-tiers-secure-access-control-g71</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;With the virtual network and VM fully configured,the next responsibility shifted to storage management.&lt;/p&gt;

&lt;p&gt;This part of the project focused on three critical things:&lt;/p&gt;

&lt;h4&gt;
  
  
  •Storing data efficiently
&lt;/h4&gt;

&lt;h4&gt;
  
  
  •Optimizing storage cost
&lt;/h4&gt;

&lt;h4&gt;
  
  
  •Controlling and revoking access securely
&lt;/h4&gt;

&lt;p&gt;Here’s how I handled it 👇&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure 1: 📦 Creating a Storage Container &amp;amp; Uploading a Blob
&lt;/h3&gt;

&lt;p&gt;Inside the existing storage account (guided-project-rg), I:&lt;br&gt;
•Navigated to Data storage → Containers&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgz5ca5f76hdulwo01cap.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgz5ca5f76hdulwo01cap.jpeg" alt="new container " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Created a new container called storage-container&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02qdvtfu3i1k9rg269e3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02qdvtfu3i1k9rg269e3.jpeg" alt="named the container " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Uploaded a test image file&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fts59pr95nc3o2q1of7p0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fts59pr95nc3o2q1of7p0.jpeg" alt="uploaded a file " width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once uploaded, Azure automatically assigned it the Hot access tier which is ideal for frequently accessed data.&lt;br&gt;
But since this was just a test file, keeping it in Hot storage wasn’t cost-efficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure 2:❄️ Changing the Access Tier (Cost Optimization)
&lt;/h3&gt;

&lt;p&gt;To optimize cost:&lt;br&gt;
•I selected the uploaded blob&lt;br&gt;
•Clicked Change tier&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnymv693z02loy02av9fr.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnymv693z02loy02av9fr.jpeg" alt="Change tier" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Switched it from Hot → Cold&lt;br&gt;
•Saved the configuration&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlip2428owxqffhduf75.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlip2428owxqffhduf75.jpeg" alt="Switch from hot to cold" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This reinforced an important cloud concept (storage tiers directly impacting cost),where not all data needs premium, high-frequency access.&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure 3: 📁 Creating a File Share
&lt;/h3&gt;

&lt;p&gt;Beyond blob storage, I also needed to configure Azure Files for shared access scenarios.Inside the same storage account:&lt;br&gt;
•I navigated to File shares&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyos984s9izy2w4nhf8ar.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyos984s9izy2w4nhf8ar.jpeg" alt="File share" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Created a new share called file-share&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4bg5zrmi8mgyopzusdq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4bg5zrmi8mgyopzusdq.jpeg" alt="create a new share" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Enabled backup (for this lab)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuy6h6ib32o0gdfxmortl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuy6h6ib32o0gdfxmortl.jpeg" alt="Enable backup " width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Uploaded a file into the share&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faddzn0ex8nb008ehrm6q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faddzn0ex8nb008ehrm6q.jpeg" alt="uploaded a file " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now the environment supported both:&lt;br&gt;
•Blob storage (object-based)&lt;br&gt;
•File shares (SMB-style shared storage)&lt;/p&gt;

&lt;p&gt;Which are two different storage solutions and two different use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure 4: 🔐 Generating a Shared Access Signature (SAS Token)
&lt;/h3&gt;

&lt;p&gt;Next came secure access control, where instead of giving full account access,i generated a Shared Access Signature (SAS) for the uploaded blob.&lt;/p&gt;

&lt;h5&gt;
  
  
  The Configuration included are :
&lt;/h5&gt;

&lt;p&gt;•Signing method: Account key&lt;br&gt;
•Signing key: Key 1&lt;br&gt;
•Permissions: Read only&lt;br&gt;
•Protocol: HTTPS only&lt;br&gt;
•Custom expiration time&lt;/p&gt;

&lt;p&gt;Once generated, i copied the Blob SAS URL into a new browser tab and it successfully displayed the image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kw62vdvd8dyudcyqg3g.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kw62vdvd8dyudcyqg3g.jpeg" alt="Generate SAS" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That link allowed temporary limited access.&lt;br&gt;
This is powerful because:&lt;br&gt;
•No need to share account keys&lt;br&gt;
•Access is time-bound&lt;br&gt;
•Permissions are granular&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure 5: 🔁 Rotating Access Keys (Revoking Access)
&lt;/h3&gt;

&lt;p&gt;Granting access is only half the story,revoking access is just as important.Since the SAS token was signed using Key 1,i invalidated it by:&lt;br&gt;
•Navigating to Security + networking → Access keys&lt;br&gt;
•Selecting Rotate key for Key 1&lt;br&gt;
•Confirming the regeneration&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feemfr64al3mvr4pacu3r.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feemfr64al3mvr4pacu3r.jpeg" alt="Rotate key " width="800" height="466"&gt;&lt;/a&gt;&lt;br&gt;
After the key rotation, I refreshed the SAS URL tab.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☑️ Result
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Authentication failed,access successfully revoked and this demonstrated a critical Azure security concept.&lt;/li&gt;
&lt;li&gt;Rotating storage account keys immediately invalidates all SAS tokens generated with that key.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📊 Final Outcome
&lt;/h3&gt;

&lt;p&gt;By the end of this exercise, i had:&lt;br&gt;
•Created and configured blob storage&lt;br&gt;
•Optimized cost using access tiers&lt;br&gt;
•Deployed Azure File Shares&lt;br&gt;
•Generated secure, time-limited access&lt;br&gt;
•Revoked access by rotating keys&lt;/p&gt;

&lt;h3&gt;
  
  
  🔑 Conclusion
&lt;/h3&gt;

&lt;p&gt;This part of the guided project strengthened my understanding of:&lt;br&gt;
•Storage architecture&lt;br&gt;
•Access governance&lt;br&gt;
•Cost management&lt;br&gt;
•Real-world administrative control&lt;br&gt;
Where cloud storage isn’t just about uploading files.It’s about managing lifecycle, security, and access responsibly.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>🖥️ Part 3: Managing the Virtual Machine - Migration, Scaling &amp; Cost Optimization</title>
      <dc:creator>     Faith Aneke Adaora</dc:creator>
      <pubDate>Thu, 09 Apr 2026 13:54:13 +0000</pubDate>
      <link>https://forem.com/adaoraa/managing-the-virtual-machine-migration-scaling-cost-optimization-5507</link>
      <guid>https://forem.com/adaoraa/managing-the-virtual-machine-migration-scaling-cost-optimization-5507</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;As the environment continued to evolve, networking was only one piece of the puzzle.&lt;/p&gt;

&lt;p&gt;With the new &lt;strong&gt;ftpSubnet&lt;/strong&gt; created and secured in Part 2, the next step was ensuring the virtual machine could properly support its workload.&lt;/p&gt;

&lt;p&gt;This phase moved beyond networking and focused on VM management ,i.e aligning subnet placement, compute power,storage and cost optimization to ensure performance, security, and efficiency.&lt;/p&gt;

&lt;p&gt;Here’s how I handled it 👇&lt;/p&gt;

&lt;h3&gt;
  
  
  🔄 Step 1: Migrating the VM to the New Subnet
&lt;/h3&gt;

&lt;p&gt;Since the new subnet had stricter network rules (allowing only SSH – Port 22), the VM had to be placed inside it.&lt;/p&gt;

&lt;p&gt;I navigated to:&lt;br&gt;
•Virtual Machines&lt;br&gt;
•Selected guided-project-vm&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tev20qtftr9d0ivvqkk.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tev20qtftr9d0ivvqkk.jpeg" alt="virtual machine " width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Stopped the VM (Azure requires deallocation for subnet changes)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12qmkl0e65co0norjelq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12qmkl0e65co0norjelq.jpeg" alt="stop the vm" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Waited until it showed Stopped (deallocated)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchgltg2wpol3mww6zgrx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchgltg2wpol3mww6zgrx.jpeg" alt="deallocated " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
•Opened Networking&lt;br&gt;
•Selected the Network Interface / IP configuration&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin4tdqg8n34yhsprspk7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin4tdqg8n34yhsprspk7.jpeg" alt="network interface " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Changed the subnet to ftpSubnet&lt;br&gt;
•Clicked Apply&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlr9brgqbxz7tglggqe0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlr9brgqbxz7tglggqe0.jpeg" alt="Subnet to ftp" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Note
&lt;/h3&gt;

&lt;p&gt;The VM was now operating inside the secured subnet environment&lt;br&gt;
✅ Network segmentation&lt;br&gt;
✅ Security alignment&lt;/p&gt;

&lt;h3&gt;
  
  
  📈 Step 2: Vertically Scaling the VM
&lt;/h3&gt;

&lt;p&gt;With the VM transitioning into an FTP server role, it needed more processing power.&lt;/p&gt;

&lt;p&gt;From the VM blade:&lt;br&gt;
•I selected Size under Availability + Scale&lt;br&gt;
•Chose a higher SKU (e.g., D2s_v5)&lt;br&gt;
•Clicked Resize&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t0tl0830ri6nx4oicgy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t0tl0830ri6nx4oicgy.jpeg" alt="Resize" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Note
&lt;/h3&gt;

&lt;p&gt;✅ Vertical scaling allows us to increase CPU and memory without redeploying the VM.&lt;br&gt;
✅ Now the machine could handle more concurrent connections and file transfers.&lt;br&gt;
✅ Performance upgraded 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  💾 Step 3: Attaching a New Data Disk
&lt;/h3&gt;

&lt;p&gt;An FTP server without sufficient storage is a problem waiting to happen.&lt;br&gt;
So I attached a new managed disk:&lt;br&gt;
•Opened Disks&lt;br&gt;
•Selected Create and attach a new disk&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxnu5pyyn6jjpakwiqo6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxnu5pyyn6jjpakwiqo6.jpeg" alt="new disk" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Named it ftp-data-disk&lt;br&gt;
•Set size to 20 GB&lt;br&gt;
•Applied changes&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdf59z5l2ug5x069i06pb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdf59z5l2ug5x069i06pb.jpeg" alt="Apply changes" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Note
&lt;/h3&gt;

&lt;p&gt;✅ The VM now had dedicated storage for uploads and file transfers.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⏱️ Step 4: Configuring Automatic Shutdown (Cost Control)
&lt;/h3&gt;

&lt;p&gt;Running a VM 24/7 can quietly increase cloud costs.&lt;br&gt;
Since the admin only needed the FTP server during working hours, I configured automatic shutdown:&lt;br&gt;
•Navigated to Auto-shutdown&lt;br&gt;
•Set scheduled shutdown to 7:15 PM (UTC)&lt;br&gt;
•Saved configuration&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8vh1frqjbou4g5hlb51.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8vh1frqjbou4g5hlb51.jpeg" alt="Auto shutdown " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Note
&lt;/h3&gt;

&lt;p&gt;✅ Now,the VM automatically powers down daily thereby reducing unnecessary compute charges.&lt;br&gt;
✅ Cost optimization is also in action 💡&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 Final Outcome
&lt;/h2&gt;

&lt;p&gt;By the end of this task, I had:&lt;br&gt;
✅•Migrated the VM to a secured subnet&lt;br&gt;
✅•Increased its compute capacity&lt;br&gt;
✅•Expanded its storage&lt;br&gt;
✅•Implemented automated cost control&lt;/p&gt;

&lt;p&gt;This exercise reinforced something important:&lt;br&gt;
Azure management isn’t just about deploying resources,it’s about maintaining,optimizing, and securing them over time.&lt;/p&gt;

&lt;p&gt;That’s what real cloud administration looks like.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>storage</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>🛡️ Part 2: Managing the Virtual Network -Segmentation and Traffic Control</title>
      <dc:creator>     Faith Aneke Adaora</dc:creator>
      <pubDate>Thu, 09 Apr 2026 12:35:07 +0000</pubDate>
      <link>https://forem.com/adaoraa/part-2-azure-management-tasks-hands-on-guided-project-49k7</link>
      <guid>https://forem.com/adaoraa/part-2-azure-management-tasks-hands-on-guided-project-49k7</guid>
      <description>&lt;h2&gt;
  
  
  📝 Overview
&lt;/h2&gt;

&lt;p&gt;After deploying the environment in Part 1, the next phase focused on managing and governing Azure resources.&lt;/p&gt;

&lt;p&gt;Cloud engineering doesn’t stop at deployment,proper administration ensures security, efficiency, and operational stability.&lt;/p&gt;

&lt;p&gt;In this multi-part series (Part 2 – Part 6), I’ll be covering:&lt;/p&gt;

&lt;h4&gt;
  
  
  •Updating the Virtual Network
&lt;/h4&gt;

&lt;h4&gt;
  
  
  •Managing Virtual Machines
&lt;/h4&gt;

&lt;h4&gt;
  
  
  •Controlling Storage Access
&lt;/h4&gt;

&lt;h4&gt;
  
  
  •Managing Tags and Resource Locks
&lt;/h4&gt;

&lt;p&gt;In this article (Part 2), I’ll focus specifically on Updating the Virtual Network, with an emphasis on improving network segmentation for tighter security control.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌐 Updating the Virtual Network: Securing SFTP Traffic with a Dedicated Subnet
&lt;/h2&gt;

&lt;p&gt;When managing cloud environments, security and structure go hand in hand.&lt;br&gt;
As part of my Azure Management Tasks guided project, I needed to improve the network design by creating a dedicated subnet specifically for SFTP traffic. &lt;/p&gt;

&lt;p&gt;Instead of allowing traffic to mix within the main subnet,I segmented the network and applied tighter security controls using a Network Security Group (NSG).&lt;/p&gt;

&lt;p&gt;Here’s how I did it 👇&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 The Goal
&lt;/h3&gt;

&lt;h5&gt;
  
  
  •Create a new subnet inside an existing Virtual Network
&lt;/h5&gt;

&lt;h5&gt;
  
  
  •Restrict traffic using a Network Security Group
&lt;/h5&gt;

&lt;h5&gt;
  
  
  •Allow only secure SFTP (SSH – Port 22) traffic
&lt;/h5&gt;

&lt;h5&gt;
  
  
  •Associate the NSG with the subnet
&lt;/h5&gt;

&lt;p&gt;This ensures better isolation, tighter access control, and improved security posture.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ Step 1: Creating a Dedicated Subnet
&lt;/h3&gt;

&lt;p&gt;I logged into the Azure Portal and navigated to Virtual Networks.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidhf8iu5ippoen7pxp5l.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidhf8iu5ippoen7pxp5l.jpeg" alt="Virtual Network " width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside my existing VNet (guided-project-vnet), I:&lt;br&gt;
•Opened Subnets&lt;br&gt;
•Clicked + Subnet&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lh6mi98emcdkw917zr2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lh6mi98emcdkw917zr2.jpeg" alt="+ Subnet" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Named it ftpSubnet&lt;br&gt;
•Left the remaining settings as default&lt;br&gt;
•Selected Add&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftnhaf51uod0ej0862p0e.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftnhaf51uod0ej0862p0e.jpeg" alt="create the subnet" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just like that, the new subnet was created.&lt;br&gt;
This subnet will only handle SFTP traffic, separating it from other workloads in the environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 Step 2: Creating a Network Security Group
&lt;/h3&gt;

&lt;p&gt;Next, I needed to control what traffic could reach this subnet.&lt;/p&gt;

&lt;p&gt;From the Azure portal:&lt;br&gt;
•I searched for Network Security Groups from the virtual network section &lt;br&gt;
•Clicked + Create&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqy0thl55hqv0qsqzohfk.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqy0thl55hqv0qsqzohfk.jpeg" alt="+ create" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Selected my resource group (guided-project-rg)&lt;br&gt;
•Named the NSG ftpNSG&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzf8pamono626la4xb7y.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzf8pamono626la4xb7y.jpeg" alt="select RG" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Reviewed and deployed it&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1vafrz53muaggurmkb3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1vafrz53muaggurmkb3.jpeg" alt="Deployment" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once deployment was complete, I opened the resource to configure inbound rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚦 Step 3: Allowing Secure SFTP Traffic
&lt;/h3&gt;

&lt;p&gt;Inside the NSG:&lt;br&gt;
•I navigated to Inbound security rules&lt;br&gt;
•Clicked + Add&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7qc2hnv24c87zh0c04v.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7qc2hnv24c87zh0c04v.jpeg" alt=" +Add " width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Changed the destination port from 8080 to 22&lt;br&gt;
•Selected TCP&lt;br&gt;
•Named the rule ftpInbound&lt;br&gt;
•Clicked Add&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluhvjvxcjs6wbi1kgko2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluhvjvxcjs6wbi1kgko2.jpeg" alt=" put necessary settings " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, only SSH/SFTP traffic on Port 22 is allowed inbound.&lt;br&gt;
No unnecessary open ports. No over-permissive rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Step 4: Associating the NSG with the Subnet
&lt;/h3&gt;

&lt;p&gt;Finally, I needed to enforce the rule.&lt;br&gt;
I went back to:&lt;br&gt;
•Virtual Network&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3japdf03jainfl37sgxt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3japdf03jainfl37sgxt.jpeg" alt=" search virtual network " width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Selected guided-project-vnet&lt;br&gt;
•Opened Subnets&lt;br&gt;
•Selected ftpSubnet&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwy8ldpwsr47xh2quc98.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwy8ldpwsr47xh2quc98.jpeg" alt="select the vnet " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;•Attached ftpNSG under the Security section&lt;br&gt;
•Saved the configuration&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ndk6vhejcz5pscisqsg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ndk6vhejcz5pscisqsg.jpeg" alt="Save configuration " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now the subnet is officially protected.&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 The Outcome
&lt;/h3&gt;

&lt;p&gt;By the end of this task:&lt;/p&gt;

&lt;h5&gt;
  
  
  •A new subnet was created for SFTP traffic
&lt;/h5&gt;

&lt;h5&gt;
  
  
  •A Network Security Group was deployed
&lt;/h5&gt;

&lt;h5&gt;
  
  
  •Port 22 was securely configured
&lt;/h5&gt;

&lt;h5&gt;
  
  
  •The NSG was successfully associated with the subnet
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumgm1ko7o68v43t8p9xj.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumgm1ko7o68v43t8p9xj.jpeg" alt="Result" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Conclusion
&lt;/h3&gt;

&lt;p&gt;The environment is now more segmented, controlled, and secure.&lt;br&gt;
This is the kind of practical Azure management task that strengthens real-world cloud engineering skills  not just theory, but actual infrastructure design decisions.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>🏗️ Part 1: Azure Project Setup - Resource Group, VNet, VM &amp; Storage</title>
      <dc:creator>     Faith Aneke Adaora</dc:creator>
      <pubDate>Thu, 09 Apr 2026 06:45:52 +0000</pubDate>
      <link>https://forem.com/adaoraa/azure-project-setup-resource-group-vnet-vm-storage-1pk4</link>
      <guid>https://forem.com/adaoraa/azure-project-setup-resource-group-vnet-vm-storage-1pk4</guid>
      <description>&lt;h2&gt;
  
  
  📝OVERVIEW
&lt;/h2&gt;

&lt;p&gt;In Azure,management tasks are the set of ongoing operational activities required to govern, secure, and maintain cloud resources after they have been deployed.&lt;/p&gt;

&lt;p&gt;Before performing management tasks in Azure, it’s important to first build a structured cloud environment. In this part, I provisioned the foundational resources required for the project:&lt;br&gt;
&lt;strong&gt;•Resource Group&lt;br&gt;
•Virtual Network (VNet)&lt;br&gt;
•Virtual Machine (VM)&lt;br&gt;
•Storage Account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This setup ensures proper organization, secure networking, scalable compute, and reliable storage before moving into advanced management operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔹 PROCEDURE
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ Create a Resource Group
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Purpose:
&lt;/h4&gt;

&lt;p&gt;This organize project resources for easy management and cleanup.&lt;/p&gt;

&lt;h4&gt;
  
  
  Steps:
&lt;/h4&gt;

&lt;p&gt;1.In the Azure portal search bar, type Resource groups.&lt;br&gt;
2.Select Resource groups under Services.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fanrecqids7lraieduu31.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fanrecqids7lraieduu31.jpeg" alt="Resource Group " width="800" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Select Create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjczhm1gv4pnken526oml.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjczhm1gv4pnken526oml.jpeg" alt="+ create " width="800" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Enter guided-project-rg as the Resource group name or any other unique name of your choice .&lt;br&gt;
5.Leave the default Region.&lt;br&gt;
6.Select Review + create → Create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbb1nrfgjzan4k9nlsfjn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbb1nrfgjzan4k9nlsfjn.jpeg" alt="enter name" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7.Return to the Home page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd82nk464jo8f0e9tlz41.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd82nk464jo8f0e9tlz41.jpeg" alt="see resource group created " width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Create a Virtual Network
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Purpose:
&lt;/h4&gt;

&lt;p&gt;This Provide network infrastructure for the virtual machine.&lt;/p&gt;

&lt;h4&gt;
  
  
  Steps:
&lt;/h4&gt;

&lt;p&gt;1.Search for Virtual networks in the Azure portal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiaxipp6xoxq27p5mgx91.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiaxipp6xoxq27p5mgx91.jpeg" alt="virtual network " width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.Select Create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylezfn1d1fkhpg4l9s7x.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylezfn1d1fkhpg4l9s7x.jpeg" alt="+ create" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Confirm Subscription and Resource group (guided-project-rg).&lt;br&gt;
4.Enter guided-project-vnet as the Virtual network name.&lt;br&gt;
5.Select Review + create → Create.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrxljl4wlfh3qtx3tol7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrxljl4wlfh3qtx3tol7.jpeg" alt="enter unique name " width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6.Wait for deployment to complete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecpoylmwswgijj3wfetd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecpoylmwswgijj3wfetd.jpeg" alt="deployment complete " width="800" height="511"&gt;&lt;/a&gt;&lt;br&gt;
7.Return to Home.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Create a Virtual Machine
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Purpose:
&lt;/h4&gt;

&lt;p&gt;This Deploys a Linux-based virtual machine for compute resources.&lt;/p&gt;

&lt;h4&gt;
  
  
  Steps:
&lt;/h4&gt;

&lt;p&gt;1.Search for Virtual machines.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1x7jbs5yok0osc88zfz5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1x7jbs5yok0osc88zfz5.jpeg" alt="virtual machine " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.Select Create → Virtual machine.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpt9kg9jbtlymy04ebv6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpt9kg9jbtlymy04ebv6.jpeg" alt="+ create " width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Select guided-project-rg as the Resource group or the new Resource group of your choice .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fst8zv0cwuhwmfqyatm52.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fst8zv0cwuhwmfqyatm52.jpeg" alt="select resource group " width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Enter guided-project-vm as the VM name or any unique name of your choice .&lt;br&gt;
5.Choose an Ubuntu image (e.g., Ubuntu Server 24.04 LTS - x64 Gen2).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76nltj68hmbd5xmy16pp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76nltj68hmbd5xmy16pp.jpeg" alt="complete registration " width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6.Under Administrator account:&lt;br&gt;
•Authentication type: Password&lt;br&gt;
•Username: guided-project-admin&lt;br&gt;
•Set and confirm password&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrd6f4n65s9ujzek40qr.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrd6f4n65s9ujzek40qr.jpeg" alt="password details " width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7.Leave other settings as default.&lt;br&gt;
8.Select Review + create → Create.&lt;br&gt;
9.After deployment, return to Home.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9i0p3zfh4zelihl98az.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9i0p3zfh4zelihl98az.jpeg" alt="deployment" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Create a Storage Account
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Purpose:
&lt;/h4&gt;

&lt;p&gt;This Provides cloud storage for project data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Steps:
&lt;/h4&gt;

&lt;p&gt;1.Search for Storage accounts.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F259p2mpt3vlzjae3iw3i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F259p2mpt3vlzjae3iw3i.jpeg" alt="Search storage" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.Select + Create.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7zer6jy4f9fdffm1t2t.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7zer6jy4f9fdffm1t2t.jpeg" alt="+ create " width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Confirm Subscription and Resource group (guided-project-rg).&lt;br&gt;
4.Enter a globally unique storage account name.&lt;br&gt;
5.Select Review + create → Create.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jq1gjs1gu6b7pvqh8kd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jq1gjs1gu6b7pvqh8kd.jpeg" alt="complete registration " width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6.Wait for deployment to complete.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa04s6g6rhybqal9qyypf.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa04s6g6rhybqal9qyypf.jpeg" alt="deployment complete " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7.Return to Home.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔹 RESULTS
&lt;/h2&gt;

&lt;p&gt;✔ Resource group created for organized management.&lt;br&gt;
✔ Virtual network deployed with default subnet.&lt;br&gt;
✔ Ubuntu virtual machine successfully provisioned.&lt;br&gt;
✔ Storage account created for data storage.&lt;br&gt;
✔ Environment ready for the next phase of the guided project.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>microsoft</category>
      <category>startup</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
