<?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>DEV Community: Simonpeter Ebuka</title>
    <description>The latest articles on DEV Community by Simonpeter Ebuka (@simonpeter_ebuka_00d97c7a).</description>
    <link>https://dev.to/simonpeter_ebuka_00d97c7a</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%2F2947609%2Fdf0476f2-bfa7-41d5-9183-ff136aa88af1.jpg</url>
      <title>DEV Community: Simonpeter Ebuka</title>
      <link>https://dev.to/simonpeter_ebuka_00d97c7a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/simonpeter_ebuka_00d97c7a"/>
    <language>en</language>
    <item>
      <title>Deploy a Virtual Machine Using an ARM Template on azure</title>
      <dc:creator>Simonpeter Ebuka</dc:creator>
      <pubDate>Mon, 26 May 2025 19:15:12 +0000</pubDate>
      <link>https://dev.to/simonpeter_ebuka_00d97c7a/deploy-a-virtual-machine-using-an-arm-template-on-azure-4d77</link>
      <guid>https://dev.to/simonpeter_ebuka_00d97c7a/deploy-a-virtual-machine-using-an-arm-template-on-azure-4d77</guid>
      <description>&lt;p&gt;Infrastructure as Code (IaC) is a game-changer for repeatable, scalable cloud deployments. In this guide, you'll learn how to deploy a Virtual Machine (VM) on Azure using an ARM (Azure Resource Manager) template — a powerful JSON-based tool for automating your infrastructure setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; What is an ARM Template?&lt;/li&gt;
&lt;li&gt; Prerequisites&lt;/li&gt;
&lt;li&gt; Step 1: Create the ARM Template&lt;/li&gt;
&lt;li&gt; Step 2: Deploy the Template via Azure Portal&lt;/li&gt;
&lt;li&gt; Step 3: Deploy the Template via Azure CLI&lt;/li&gt;
&lt;li&gt; Verify the Deployment&lt;/li&gt;
&lt;li&gt; Conclusion&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What is an ARM Template?
&lt;/h2&gt;

&lt;p&gt;An ARM template is a JSON file that defines the infrastructure and configuration for your project. You can use it to declaratively deploy Azure resources such as Virtual Machines, Networks, Storage, and more.&lt;br&gt;
ARM = Azure Resource Manager, which is Azure's deployment and management service.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;•An Azure Account&lt;br&gt;
•Azure CLI or access to the Azure Portal&lt;br&gt;
•Basic understanding of JSON&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Create the ARM Template
&lt;/h2&gt;

&lt;p&gt;A. On your vs code, click on open folder and create a new folder and select.&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%2Fy86nuu7fq98nq2xr3hed.png" 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%2Fy86nuu7fq98nq2xr3hed.png" alt="Image description" width="800" height="598"&gt;&lt;/a&gt;&lt;br&gt;
B. After selecting, create a file by clicking on the file sign and then name your json file using the json extension.&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%2Fc24g0bagg441j92ztk2s.png" 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%2Fc24g0bagg441j92ztk2s.png" alt="Image description" width="800" height="175"&gt;&lt;/a&gt;&lt;br&gt;
C. create your content following json file format. save after creating it. It will automatically save on the new folder created.&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%2Fyp7ddhjzwiym69uekrye.png" 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%2Fyp7ddhjzwiym69uekrye.png" alt="Image description" width="800" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Deploy the Template via Azure Portal
&lt;/h2&gt;

&lt;p&gt;1.Go to the Azure Portal&lt;br&gt;
2.Search for Deploy a custom template&lt;br&gt;
3.Choose Build your own template in the editor&lt;br&gt;
4.Paste your azuredeploy.json content&lt;br&gt;
5.Click Save&lt;br&gt;
6.Fill in required parameters (VM name, admin username, password)&lt;br&gt;
7.Click Review + Create, then 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%2Fxm29sc4khnluvncgbjbm.png" 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%2Fxm29sc4khnluvncgbjbm.png" alt="Image description" width="800" height="360"&gt;&lt;/a&gt;&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%2Fnrf0jp4pn23w2biuhqws.png" 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%2Fnrf0jp4pn23w2biuhqws.png" alt="Image description" width="800" height="617"&gt;&lt;/a&gt;&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%2F9d91kg82puwyonfy5lkt.png" 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%2F9d91kg82puwyonfy5lkt.png" alt="Image description" width="800" height="930"&gt;&lt;/a&gt;&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%2Fu1my8y1fuviby8b6wulr.png" 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%2Fu1my8y1fuviby8b6wulr.png" alt="Image description" width="800" height="693"&gt;&lt;/a&gt;&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%2Faklopn6o0s1adfc8b1on.png" 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%2Faklopn6o0s1adfc8b1on.png" alt="Image description" width="800" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Template export:
&lt;/h2&gt;

&lt;p&gt;If you want to recreate the VM next time with the same configuration, on the VM overview, &lt;br&gt;
go to automation and click export template. You can download or copy content.&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%2Fnfz7qrbbieksgmuqcay8.png" 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%2Fnfz7qrbbieksgmuqcay8.png" alt="Image description" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arm template upload via azure portal.&lt;/strong&gt;&lt;br&gt;
Another way to create resources using arm template on the azure portal is the use of the upload option. follow below steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;search for deploy a custom template and enter&lt;/li&gt;
&lt;li&gt;Build your own template in the editor&lt;/li&gt;
&lt;li&gt;upload file&lt;/li&gt;
&lt;li&gt;Fili up the parameters&lt;/li&gt;
&lt;li&gt;Review and create&lt;/li&gt;
&lt;/ol&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%2Fgxrwyj53kfm2h34j7iyc.png" 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%2Fgxrwyj53kfm2h34j7iyc.png" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&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%2Fz2p4ddhvv6i88zehpiwa.png" 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%2Fz2p4ddhvv6i88zehpiwa.png" alt="Image description" width="800" height="681"&gt;&lt;/a&gt;&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%2Ft7odvlvcf55gbz0bcpnp.png" 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%2Ft7odvlvcf55gbz0bcpnp.png" alt="Image description" width="800" height="213"&gt;&lt;/a&gt;&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%2Fl2fxnei85govur77o9sw.png" 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%2Fl2fxnei85govur77o9sw.png" alt="Image description" width="800" height="585"&gt;&lt;/a&gt;&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%2F5xtyob2v9gqv2kbeilrx.png" 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%2F5xtyob2v9gqv2kbeilrx.png" alt="Image description" width="800" height="683"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources deployed&lt;/strong&gt;&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%2Fega4wvid35t6d38hb6qc.png" 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%2Fega4wvid35t6d38hb6qc.png" alt="Image description" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Deploy the Template via Azure CLI
&lt;/h2&gt;

&lt;p&gt;If you prefer command-line, you can also deploy using the Azure CLI:&lt;br&gt;
First of all you need to install azure CLI. Using this link: &lt;a href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?view=azure-cli-latest&amp;amp;tabs=azure-cli&amp;amp;pivots=msi" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?view=azure-cli-latest&amp;amp;tabs=azure-cli&amp;amp;pivots=msi&lt;/a&gt;&lt;br&gt;
Install the latest version and run below azure CLI&lt;/p&gt;

&lt;h1&gt;
  
  
  Log in to Azure
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;az login. This command opens a web browser to authenticate your account. After authentication, on your terminal, select git bash to run below vm create commands.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;az vm create &lt;code&gt;&lt;br&gt;
  --resource-group RG1&lt;/code&gt;&lt;br&gt;
  --name MyVM &lt;code&gt;&lt;br&gt;
  --image Ubuntu2204&lt;/code&gt;&lt;br&gt;
  --admin-username azureuser `&lt;br&gt;
  --generate-ssh-keys&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%2F3t8180wyz3x012darvoc.png" 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%2F3t8180wyz3x012darvoc.png" alt="Image description" width="800" height="472"&gt;&lt;/a&gt;&lt;br&gt;
If VM is successfully created, you will see below image. If not failed, you will get error an message. &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%2Fgyrv8aznrxpeqdc6f19b.png" 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%2Fgyrv8aznrxpeqdc6f19b.png" alt="Image description" width="800" height="258"&gt;&lt;/a&gt;&lt;br&gt;
Verify the Deployment&lt;br&gt;
Once deployed:&lt;br&gt;
•Go to Azure Portal → Resource Groups → RG1&lt;br&gt;
•You should see a VM and related resources (depending on your full template setup)&lt;br&gt;
•You can also SSH into the VM (if you configure a public IP and open port 22)&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%2Fxm401qaftg8wcqa0ckhu.png" 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%2Fxm401qaftg8wcqa0ckhu.png" alt="Image description" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Check out these command lines
&lt;/h2&gt;

&lt;p&gt;**#to start a VM&lt;br&gt;
az vm start --resource-group RG1 --name MyVM&lt;/p&gt;

&lt;h1&gt;
  
  
  to stop a VM
&lt;/h1&gt;

&lt;p&gt;az vm stop --resource-group RG1 --name MyVM&lt;/p&gt;

&lt;h1&gt;
  
  
  to delete a VM
&lt;/h1&gt;

&lt;p&gt;az vm delete --resource-group RG1 --name MyVM –yes**&lt;/p&gt;

&lt;p&gt;to delete the VM just created, let us run commadn line &lt;strong&gt;az vm delete --resource-group RG1 --name MyVM&lt;/strong&gt;&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%2Fws7rwuazuv2a26yo5ti0.png" 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%2Fws7rwuazuv2a26yo5ti0.png" alt="Image description" width="800" height="234"&gt;&lt;/a&gt;&lt;br&gt;
To delete the resource group run this command &lt;strong&gt;az group delete --name RG1 --yes --no-wait.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To confirm deletion was successful, you can run az group show --name RG1. It will show resource group not found. You can also check via the 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%2Fwbyr34ein63auq8n9ojh.png" 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%2Fwbyr34ein63auq8n9ojh.png" alt="Image description" width="800" height="194"&gt;&lt;/a&gt;&lt;br&gt;
Use below link to find many azure command lines.&lt;br&gt;
&lt;a href="https://docs.google.com/document/d/1tC5e8LCrlR-2nLL33VF3nzIOXAXQ0K4FMxRNTx_qyaw/edit?tab=t.0" rel="noopener noreferrer"&gt;https://docs.google.com/document/d/1tC5e8LCrlR-2nLL33VF3nzIOXAXQ0K4FMxRNTx_qyaw/edit?tab=t.0&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;You’ve just learned how to:&lt;br&gt;
•Write a basic ARM template&lt;br&gt;
•Deploy it through Azure Portal and Azure CLI&lt;br&gt;
•Automate VM deployments with Infrastructure as Code&lt;br&gt;
ARM templates give you the flexibility and control to provision complex environments with a single JSON file.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Step by step process of deploying a static website on azure.</title>
      <dc:creator>Simonpeter Ebuka</dc:creator>
      <pubDate>Wed, 21 May 2025 16:00:05 +0000</pubDate>
      <link>https://dev.to/simonpeter_ebuka_00d97c7a/step-by-step-process-of-deploying-a-static-website-on-azure-4bnc</link>
      <guid>https://dev.to/simonpeter_ebuka_00d97c7a/step-by-step-process-of-deploying-a-static-website-on-azure-4bnc</guid>
      <description>&lt;p&gt;Setting up CI/CD pipelines to automatically deploy your app to Azure App Service not only saves time but also ensures smoother, faster, and more reliable releases. In this guide, you’ll learn how to:&lt;br&gt;
• Deploy a web app to Azure App Service&lt;br&gt;
• Connect it to GitHub for CI/CD&lt;br&gt;
• Enable automatic deployment on commit&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
Prerequisites
&lt;/li&gt;
&lt;li&gt;
Step 1: Create a Web App Service Plan on Azure
&lt;/li&gt;
&lt;li&gt;
Step 2: Create a Web App Service on Azure
&lt;/li&gt;
&lt;li&gt;
Step 3: Add a PHP File in VS Code
&lt;/li&gt;
&lt;li&gt;
Step 4: Create a Repository on GitHub
&lt;/li&gt;
&lt;li&gt;
Step 5: Push Your Code to GitHub
&lt;/li&gt;
&lt;li&gt;
Step 6: Configure CI/CD from GitHub
&lt;/li&gt;
&lt;li&gt;
Making Future Changes
&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Prerequisites
&lt;/h1&gt;

&lt;p&gt;Before you start, make sure you have the following:&lt;br&gt;
• An Azure account&lt;br&gt;
• A GitHub account&lt;br&gt;
• Git installed locally&lt;br&gt;
• A simple web app (php.)&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1: Create a web App service plan on Azure
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt; Go to the Azure Portal&lt;/li&gt;
&lt;li&gt; Search for Web Services Plan&lt;/li&gt;
&lt;li&gt; Click + Create&lt;/li&gt;
&lt;li&gt; Fill in the required fields:
o   Resource Group: chose or create a resource group
o   Name: Your preferred name 
o   Operating system: Linux
o   Region: Closest to your users
o   Pricing plan: chose your preferred plan&lt;/li&gt;
&lt;li&gt; Click Review + Create and then Create&lt;/li&gt;
&lt;/ol&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%2F6j5r4xf7lpq6mg2tmzyq.png" 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%2F6j5r4xf7lpq6mg2tmzyq.png" alt="Image description" width="444" height="323"&gt;&lt;/a&gt;&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%2Fpwjo0clncjmdhgih5e7m.png" 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%2Fpwjo0clncjmdhgih5e7m.png" alt="Image description" width="582" height="868"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 2: Create a web App service on Azure
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt; Go to the Azure Portal&lt;/li&gt;
&lt;li&gt; Search for Web Services&lt;/li&gt;
&lt;li&gt; Under create drop down, select web app&lt;/li&gt;
&lt;li&gt; Fill in the required fields:&lt;/li&gt;
&lt;li&gt; Resource Group: chose or create a resource group&lt;/li&gt;
&lt;li&gt; Name: Your preferred name &lt;/li&gt;
&lt;li&gt; Runtime Stack: Choose your tech (e.G php)&lt;/li&gt;
&lt;li&gt; Region: Closest to your users&lt;/li&gt;
&lt;li&gt; Operating system: Linux&lt;/li&gt;
&lt;li&gt;Click Review + Create and then Create&lt;/li&gt;
&lt;/ol&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%2Fprln2mtgzewvf7fd1cox.png" 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%2Fprln2mtgzewvf7fd1cox.png" alt="Image description" width="800" height="238"&gt;&lt;/a&gt;&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%2F62v0xbcyf3hln1vvc2d5.png" 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%2F62v0xbcyf3hln1vvc2d5.png" alt="Image description" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once successfully created, go resource, copy the domain default link and open on a new web page. The web will be running waiting for your content deployment.&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%2Fgwg2tunhcrhnlb86i0d0.png" 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%2Fgwg2tunhcrhnlb86i0d0.png" alt="Image description" width="755" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 3: add a php file on your vs code
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt; Open your vs code&lt;/li&gt;
&lt;li&gt; Add a folder &lt;/li&gt;
&lt;li&gt; Create a file name (e.g index.php)&lt;/li&gt;
&lt;li&gt; Copy the code and paste inside the idex.php file created.&lt;/li&gt;
&lt;li&gt; Save.&lt;/li&gt;
&lt;/ol&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%2Ftheh2mf4xvnodfo6jlwf.png" 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%2Ftheh2mf4xvnodfo6jlwf.png" alt="Image description" width="625" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step4: Create a Repository on Git hub
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Create a new Repo&lt;/li&gt;
&lt;li&gt;Fill in the repo&lt;/li&gt;
&lt;li&gt;Create &lt;/li&gt;
&lt;/ol&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%2Fvnyxxu97zgsaddidumxl.png" 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%2Fvnyxxu97zgsaddidumxl.png" alt="Image description" width="800" height="197"&gt;&lt;/a&gt;&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%2F821sktlr9ppxajwdw4i2.png" 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%2F821sktlr9ppxajwdw4i2.png" alt="Image description" width="800" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 5: Push your code to Github
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt; Git init&lt;/li&gt;
&lt;li&gt; git add index.php&lt;/li&gt;
&lt;li&gt; git commit -m "first commit"&lt;/li&gt;
&lt;li&gt; git branch -M master&lt;/li&gt;
&lt;li&gt; git remote add origin &lt;a href="https://github.com/Ebukaeze16/ebuka-web-ap.git" rel="noopener noreferrer"&gt;https://github.com/Ebukaeze16/ebuka-web-ap.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; git push -u origin main&lt;/li&gt;
&lt;li&gt; check your github to confirm if it was successfully pushed&lt;/li&gt;
&lt;/ol&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%2Fix8sifa8wpxx0pfu63ln.png" 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%2Fix8sifa8wpxx0pfu63ln.png" alt="Image description" width="800" height="680"&gt;&lt;/a&gt;&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%2Fzs00j2q3kh42a6ee0ahp.png" 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%2Fzs00j2q3kh42a6ee0ahp.png" alt="Image description" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 6: Configure CI/CD from GitHub
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt; Go to your Azure App services (ebuka-web-a)&lt;/li&gt;
&lt;li&gt; On the left panel, go to deployment center&lt;/li&gt;
&lt;li&gt; In the source dropdown menu, select Github&lt;/li&gt;
&lt;li&gt; Authorize and choose:
a.  Organization
b.  Repository&lt;/li&gt;
&lt;li&gt; After authorization, proceed to select your Github information like your account name, repo name and branch and then save&lt;/li&gt;
&lt;/ol&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%2F25cpmyma5uahpixlyia7.png" 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%2F25cpmyma5uahpixlyia7.png" alt="Image description" width="800" height="464"&gt;&lt;/a&gt;&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%2Foxgj92e51o48x0zb3l8f.png" 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%2Foxgj92e51o48x0zb3l8f.png" alt="Image description" width="800" height="333"&gt;&lt;/a&gt;&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%2Fpnt0dx5sn2r09ob10ktd.png" 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%2Fpnt0dx5sn2r09ob10ktd.png" alt="Image description" width="800" height="681"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6.Once complete, on the overview page, copy the default domain URL and paste on a web page to view the deployed app running.&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%2Fuimjaycbvbzbghtpevr0.png" 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%2Fuimjaycbvbzbghtpevr0.png" alt="Image description" width="800" height="63"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On the Github portal, you can see it running on the action tab&lt;/li&gt;
&lt;/ol&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%2Fm5x9hv3a41zn6hvvh6vi.png" 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%2Fm5x9hv3a41zn6hvvh6vi.png" alt="Image description" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8.To make any changes, you can go to vs code, on the php file add your change and do the following;&lt;br&gt;
a.  Git add . (this add all the file)&lt;br&gt;
b.  Git commit -m “add your comment”&lt;br&gt;
c.  Git pull origin master&lt;br&gt;
d.  Git push origin master&lt;br&gt;
e.  Git push&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%2F7g7lv6wkclj65urzrnos.png" 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%2F7g7lv6wkclj65urzrnos.png" alt="Image description" width="721" height="522"&gt;&lt;/a&gt;&lt;br&gt;
From the Azure portal and Github portal, you can also see the new update made.&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%2Fzzzgjf95kspyloh36eb2.png" 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%2Fzzzgjf95kspyloh36eb2.png" alt="Image description" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;You’ve now:&lt;br&gt;
• Created an Azure Web App&lt;br&gt;
• Connected GitHub to deploy automatically&lt;br&gt;
• Triggered a CI/CD deployment with a simple push&lt;br&gt;
• Did file modification and push again&lt;br&gt;
This setup makes it super easy to keep your live website in sync with your GitHub repository. Automate your deployments and focus on what matters most — building great apps.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Step by step process of deploying a static website on azure.</title>
      <dc:creator>Simonpeter Ebuka</dc:creator>
      <pubDate>Thu, 15 May 2025 17:25:58 +0000</pubDate>
      <link>https://dev.to/simonpeter_ebuka_00d97c7a/step-by-step-process-of-deploying-a-static-website-on-azure-3290</link>
      <guid>https://dev.to/simonpeter_ebuka_00d97c7a/step-by-step-process-of-deploying-a-static-website-on-azure-3290</guid>
      <description>&lt;h2&gt;
  
  
  📑 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is Azure Blob Static Website Hosting?&lt;/li&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;Step 1: Upload Your Website Files in VS Code&lt;/li&gt;
&lt;li&gt;Step 2: Create a Storage Account&lt;/li&gt;
&lt;li&gt;Step 3: Enable Static Website Hosting&lt;/li&gt;
&lt;li&gt;Step 4: Upload Your Website Files to Azure&lt;/li&gt;
&lt;li&gt;Step 5: Test Your Website&lt;/li&gt;
&lt;li&gt; Bonus: Set a Custom Domain (Optional)&lt;/li&gt;
&lt;li&gt;
Conclusion________________________________________ ##  What is Azure Blob Static Website Hosting?
Azure Blob Storage can serve static content like HTML, CSS, JS, and images directly to your users—no backend required. It’s perfect for portfolios, blogs, single-page apps, or documentation sites.
________________________________________
• ##  Prerequisites&lt;/li&gt;
&lt;li&gt;An Azure account&lt;/li&gt;
&lt;li&gt;A simple static website (HTML/CSS/JS files)&lt;/li&gt;
&lt;li&gt;Internet access and the &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Visual Studio Code (VS Code)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Upload Your Website Files in VS Code
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; Open a vs code and upload the static website file you want to deploy.&lt;/li&gt;
&lt;li&gt;  On the vs code, click on new terminal then proceed to click on file.&lt;/li&gt;
&lt;li&gt; New folder and select the website file you want to work on and save.&lt;/li&gt;
&lt;li&gt; Run without debugging to see what you have locally. and select any browser and run it. you should be able to view it on the browser. &lt;/li&gt;
&lt;/ol&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%2F3vx1lrx0r1kjrqtya39s.png" 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%2F3vx1lrx0r1kjrqtya39s.png" alt="Image description" width="800" height="675"&gt;&lt;/a&gt;&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%2F783q3pn7j74wh1wwf9xp.png" 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%2F783q3pn7j74wh1wwf9xp.png" alt="Image description" width="800" height="421"&gt;&lt;/a&gt;&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%2Faf2g79h1kbnr6p07vxb7.png" 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%2Faf2g79h1kbnr6p07vxb7.png" alt="Image description" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create a Storage Account
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; Navigate to the Azure Portal&lt;/li&gt;
&lt;li&gt; Click Create a resource → Search for Storage account&lt;/li&gt;
&lt;li&gt; Click Create&lt;/li&gt;
&lt;li&gt; Fill out the form:
o   Choose Subscription, Resource Group
o   Enter a globally unique name for your storage account (e.g., mystaticweb123)
o   Choose a region (e.g., East US)
o   Leave other settings as default&lt;/li&gt;
&lt;li&gt; Click Review + Create → Create
________________________________________&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After creation, go to resource. On the overview page, click capabilities, click on the static website to configure 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%2F6pfemeb8886jrnz2fx3d.png" 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%2F6pfemeb8886jrnz2fx3d.png" alt="Image description" width="800" height="394"&gt;&lt;/a&gt;&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%2Fmxel42niaxzz7feap3lm.png" 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%2Fmxel42niaxzz7feap3lm.png" alt="Image description" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Enable Static Website Hosting
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; Once the deployment is complete, go to the Storage Account &lt;/li&gt;
&lt;li&gt; On the overview page, click capabilities, click on the static website to configure it.&lt;/li&gt;
&lt;li&gt; Set Static website to Enabled&lt;/li&gt;
&lt;li&gt; Enter:
o   Index document name: index.html
o   Error document path: error.html (optional)&lt;/li&gt;
&lt;li&gt; Click Save&lt;/li&gt;
&lt;/ol&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%2F15p34g07xqtd6qpc9s37.png" 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%2F15p34g07xqtd6qpc9s37.png" alt="Image description" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll now see a Primary endpoint URL—this is your website URL&lt;/p&gt;

&lt;p&gt;On the static website page, you will enable the static website, write the index document name as index.html. the error document path, write error.html. if a user is browsing is browsing your page and the page is not found, it will route the user to this error.html&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%2Fq6hsmvd344z1xme5utkt.png" 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%2Fq6hsmvd344z1xme5utkt.png" alt="Image description" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After saving, it will display the primary end point as seen on the below screenshot.&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%2Fyk0fk2d8hjsh78t0r5ga.png" 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%2Fyk0fk2d8hjsh78t0r5ga.png" alt="Image description" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy the URL and paste on a new page. It will show the requested content does not exist and that is because we do not have a web content here yet.&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%2Fjoz7n70t6u9pq0s1jzz0.png" 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%2Fjoz7n70t6u9pq0s1jzz0.png" alt="Image description" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what we do at this stage is to move that our web code files to azure to render it. Below steps shows how to do it.&lt;br&gt;
Step 4: Upload Your Website Files&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; In the same storage account, go to Containers&lt;/li&gt;
&lt;li&gt; Click on the special container named $web&lt;/li&gt;
&lt;li&gt; Click Upload&lt;/li&gt;
&lt;li&gt; Upload your index.html, styles.css, and any other static files
Make sure files go directly into $web and not a folder inside it.&lt;/li&gt;
&lt;/ol&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%2Fsvschfkidoqlr0petkrq.png" 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%2Fsvschfkidoqlr0petkrq.png" alt="Image description" width="800" height="310"&gt;&lt;/a&gt;&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%2Fybngdjldhy6jbsryww67.png" 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%2Fybngdjldhy6jbsryww67.png" alt="Image description" width="800" height="235"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;resources uploaded shown below &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%2Frzesgx2dwb390cxje6cr.png" 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%2Frzesgx2dwb390cxje6cr.png" alt="Image description" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Test Your Website
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Return to the &lt;strong&gt;Static website&lt;/strong&gt; blade&lt;/li&gt;
&lt;li&gt;Copy the &lt;strong&gt;primary endpoint URL&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Paste it into your browser
## Conclusion
That’s it! You've hosted a static website on Azure Blob Storage using just the Portal—no code, no command line, just a few clicks.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;That’s it! You've hosted a static website on Azure Blob Storage using just the Portal—no code, no command line, just a few clicks.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Creating and Connecting to a Linux Virtual Machine Scale Set (VMSS) on Azure</title>
      <dc:creator>Simonpeter Ebuka</dc:creator>
      <pubDate>Sun, 11 May 2025 15:36:24 +0000</pubDate>
      <link>https://dev.to/simonpeter_ebuka_00d97c7a/creating-and-connecting-to-a-linux-virtual-machine-scale-set-vmss-on-azure-114m</link>
      <guid>https://dev.to/simonpeter_ebuka_00d97c7a/creating-and-connecting-to-a-linux-virtual-machine-scale-set-vmss-on-azure-114m</guid>
      <description>&lt;p&gt;Azure Virtual Machine Scale Sets (VMSS) offer a powerful, scalable way to manage multiple identical virtual machines. Whether you're running a containerized app or a high-availability backend, VMSS can simplify scaling and ensure performance.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll show you how to deploy a Linux VMSS, configure it step by step, and securely connect to your instances via SSH.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt; Table of Contents&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What is a Virtual Machine Scale Set (VMSS)?
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Deploying a Linux VMSS in Azure
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Generating SSH Keys
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Connecting to VMSS Instances via SSH
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Autoscaling and Load Balancing
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Spot VMs for Cost Optimization
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;h1&gt;
  
  
  What is a Virtual Machine Scale Set (VMSS)?
&lt;/h1&gt;

&lt;p&gt;A Virtual Machine Scale Set is an Azure resource that allows you to provision and manage a group of identical virtual machines. With VMSS, you can:&lt;/p&gt;

&lt;p&gt;Automatically scale based on real-time demand&lt;/p&gt;

&lt;p&gt;Maintain high availability across multiple zones&lt;/p&gt;

&lt;p&gt;Easily manage software updates across all VMs&lt;/p&gt;

&lt;p&gt;It’s ideal for scenarios like hosting web apps, microservices, or distributed compute workloads that benefit from horizontal scaling.&lt;/p&gt;

&lt;h1&gt;
  
  
  Deploying a Linux VMSS in Azure
&lt;/h1&gt;

&lt;p&gt;Let’s walk through how to create a VMSS using the Azure Portal.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1: Sign in to the Azure Portal
&lt;/h1&gt;

&lt;p&gt;Visit &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;https://portal.azure.com&lt;/a&gt; and log in with your Microsoft credentials.&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%2Fnyo3olbc3gk93p2zafoj.png" 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%2Fnyo3olbc3gk93p2zafoj.png" alt="Image description" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Start a New VMSS Deployment&lt;br&gt;
Search for "Virtual Machine Scale Sets" in the top search bar and click Create to begin setup.&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%2F8oyrxhukj60vhvattp2q.png" 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%2F8oyrxhukj60vhvattp2q.png" alt="Image description" width="800" height="363"&gt;&lt;/a&gt;&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%2Fzsiykwib1qv80kxred4i.png" 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%2Fzsiykwib1qv80kxred4i.png" alt="Image description" width="800" height="953"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Basic Configuration&lt;br&gt;
Under the Basics tab:&lt;/p&gt;

&lt;p&gt;Subscription: Choose your active subscription.&lt;/p&gt;

&lt;p&gt;Resource Group: Create a new one or use an existing group.&lt;/p&gt;

&lt;p&gt;Region: Select a region (e.g., East US).&lt;/p&gt;

&lt;p&gt;VMSS Name: Name your scale set (e.g., MyLinuxVMSS).&lt;/p&gt;

&lt;p&gt;Availability Zones: Optional — pick any zone or none.&lt;/p&gt;

&lt;p&gt;Orchestration Mode: Set to Uniform for identical VM behavior.&lt;/p&gt;

&lt;p&gt;Security Type: Leave as Standard.&lt;/p&gt;

&lt;h1&gt;
  
  
  Scaling Options:
&lt;/h1&gt;

&lt;p&gt;Start with Manual.&lt;/p&gt;

&lt;p&gt;You can later configure predictive autoscaling to simulate performance.&lt;/p&gt;

&lt;p&gt;For Scale-In Policy, choose how instances are removed (e.g., oldest first).&lt;/p&gt;

&lt;h1&gt;
  
  
  VM Image &amp;amp; Size:
&lt;/h1&gt;

&lt;p&gt;Use Ubuntu 20.04 LTS (or any Linux distro).&lt;/p&gt;

&lt;p&gt;Select a size like Standard B1ms for testing.&lt;/p&gt;

&lt;p&gt;Instance count: Start with 2 or more.&lt;/p&gt;

&lt;h1&gt;
  
  
  Authentication:
&lt;/h1&gt;

&lt;p&gt;Use SSH Public Key&lt;/p&gt;

&lt;p&gt;Set a username (e.g., azureuser)&lt;/p&gt;

&lt;p&gt;You'll paste the public key after generating your SSH pair.&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%2Fjei2al7s7wz9c0e2l8qi.png" 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%2Fjei2al7s7wz9c0e2l8qi.png" alt="Image description" width="800" height="794"&gt;&lt;/a&gt;&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%2Feekr3aksf2kdt6ygr3ks.png" 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%2Feekr3aksf2kdt6ygr3ks.png" alt="Image description" width="800" height="921"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 4: Disk Setup&lt;br&gt;
OS Disk: Choose either Standard SSD or Premium SSD.&lt;/p&gt;

&lt;p&gt;Data Disks: Optional, based on app needs.&lt;/p&gt;

&lt;p&gt;You can leave other options as default.&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%2Fas7ti8pjnmth0e3icsdn.png" 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%2Fas7ti8pjnmth0e3icsdn.png" alt="Image description" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 5: Networking Settings&lt;br&gt;
Virtual Network: Select existing or create new.&lt;/p&gt;

&lt;p&gt;Subnet: Use the default or define one.&lt;/p&gt;

&lt;p&gt;NIC Settings: Ensure each VM connects properly.&lt;/p&gt;

&lt;p&gt;Public IP: Enable to allow external access.&lt;/p&gt;

&lt;p&gt;Open Ports: Allow SSH (22) and HTTP (80) as needed.&lt;/p&gt;

&lt;h1&gt;
  
  
  Load Balancer:
&lt;/h1&gt;

&lt;p&gt;Choose Azure Load Balancer to distribute traffic.&lt;/p&gt;

&lt;p&gt;Create a new one (e.g., MyVMSSLoadBalancer)&lt;/p&gt;

&lt;p&gt;Set IP Type to Public&lt;/p&gt;

&lt;p&gt;Protocol: TCP&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%2Fefkx7uvekcqg9k5sibn1.png" 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%2Fefkx7uvekcqg9k5sibn1.png" alt="Image description" width="800" height="523"&gt;&lt;/a&gt;&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%2Fsvb5kx8598w04g227io6.png" 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%2Fsvb5kx8598w04g227io6.png" alt="Image description" width="800" height="696"&gt;&lt;/a&gt;&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%2Fe6hu9k8btr21rb739ipp.png" 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%2Fe6hu9k8btr21rb739ipp.png" alt="Image description" width="800" height="364"&gt;&lt;/a&gt;&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%2Fxrvsi6kh86ex089wf0bv.png" 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%2Fxrvsi6kh86ex089wf0bv.png" alt="Image description" width="800" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 6: Review and Create&lt;br&gt;
Check over your configuration, then click Create to begin deployment.&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%2Fphglsjrtj6r8935hlprp.png" 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%2Fphglsjrtj6r8935hlprp.png" alt="Image description" width="800" height="695"&gt;&lt;/a&gt;&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%2F30h8ns92abk3gr42eku6.png" 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%2F30h8ns92abk3gr42eku6.png" alt="Image description" width="800" height="728"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Generating SSH Keys
&lt;/h1&gt;

&lt;p&gt;If you don’t have SSH keys already:&lt;/p&gt;

&lt;p&gt;Run this command on your terminal:&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
Copy&lt;br&gt;
Edit&lt;br&gt;
ssh-keygen -t rsa -b 2048 -f ~/.ssh/myVMSSKey&lt;br&gt;
Copy the contents of ~/.ssh/myVMSSKey.pub and paste it in the SSH Public Key field during VMSS setup.&lt;/p&gt;

&lt;p&gt;🔗 Connecting to VMSS Instances via SSH&lt;br&gt;
Step 1: Find Your Public IP&lt;br&gt;
Go to your deployed VMSS → Instances tab → Note the Public IP.&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%2Fjd4d7znwjrms78bultev.png" 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%2Fjd4d7znwjrms78bultev.png" alt="Image description" width="800" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Connect via Terminal&lt;br&gt;
Use this command to connect:&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
Copy&lt;br&gt;
Edit&lt;br&gt;
ssh -i ~/.ssh/myVMSSKey azureuser@&lt;br&gt;
Replace  with your instance's actual IP.&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%2Fssmmjjxjm5rhvhowqz72.png" 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%2Fssmmjjxjm5rhvhowqz72.png" alt="Image description" width="800" height="503"&gt;&lt;/a&gt;&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%2F6edzehgbq2jdx8oxavzx.png" 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%2F6edzehgbq2jdx8oxavzx.png" alt="Image description" width="800" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also connect via the load balancer frontend IP, which rotates traffic across all VM instances.&lt;/p&gt;

&lt;h1&gt;
  
  
  Autoscaling and Load Balancing
&lt;/h1&gt;

&lt;p&gt;Azure lets you define autoscaling rules based on CPU usage, memory thresholds, or other metrics.&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%2Fpezmpxx13sq6805aud73.png" 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%2Fpezmpxx13sq6805aud73.png" alt="Image description" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This ensures your app scales up under high load and scales down during off-peak times.&lt;/p&gt;

&lt;h1&gt;
  
  
  Spot VMs for Cost Optimization
&lt;/h1&gt;

&lt;p&gt;Want to save money?&lt;/p&gt;

&lt;p&gt;Consider using Spot VMs, which are up to 90% cheaper than regular VMs — but with the trade-off that Azure may evict them when demand is high.&lt;/p&gt;

&lt;h1&gt;
  
  
  Key Points:
&lt;/h1&gt;

&lt;p&gt;Cheap: Great for batch jobs and test environments.&lt;/p&gt;

&lt;p&gt;Evictable: Azure can terminate them with little notice.&lt;/p&gt;

&lt;p&gt;Use Cases: Ideal for workloads that tolerate interruptions.&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%2Fcd0z66pehyyuxiostt6f.png" 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%2Fcd0z66pehyyuxiostt6f.png" alt="Image description" width="800" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Wrapping Up
&lt;/h1&gt;

&lt;p&gt;And there you have it — a full walkthrough on setting up a Linux Virtual Machine Scale Set on Azure, from deployment to SSH access and beyond.&lt;/p&gt;

&lt;p&gt;VMSS is an excellent tool to ensure your infrastructure is scalable, resilient, and ready for production workloads.&lt;/p&gt;

&lt;p&gt;Have any questions or want to share your VMSS setup? Drop a comment below 👇&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
