<?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: Oluwanifesimi</title>
    <description>The latest articles on Forem by Oluwanifesimi (@adeyemo).</description>
    <link>https://forem.com/adeyemo</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%2F3283119%2F48066588-c8c5-4ac2-9e6d-990361fb96ba.jpeg</url>
      <title>Forem: Oluwanifesimi</title>
      <link>https://forem.com/adeyemo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/adeyemo"/>
    <language>en</language>
    <item>
      <title>Steps to Containerize a Software Application</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Mon, 10 Nov 2025 18:56:52 +0000</pubDate>
      <link>https://forem.com/adeyemo/steps-to-containerize-a-software-application-4a9a</link>
      <guid>https://forem.com/adeyemo/steps-to-containerize-a-software-application-4a9a</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Containerization has revolutionized modern software development by streamlining how applications are built, deployed, and maintained. In this guide, you'll learn how to containerize a simple Node.js Todo List Manager using Docker. By encapsulating the app and its dependencies into a container, you’ll gain consistency across environments, simplify deployment workflows, and enhance scalability.&lt;br&gt;
Whether you're exploring Docker for the first time or brushing up on containerization fundamentals, this hands-on project will walk you through transitioning an app from a local setup to a fully containerized solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You’ll Need&lt;/strong&gt;&lt;br&gt;
Before diving in, make sure your system is equipped with the following tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Desktop (latest version): For building, running, and managing containers.&lt;/li&gt;
&lt;li&gt;Git client: To clone the project repository and handle version control.&lt;/li&gt;
&lt;li&gt;Code editor or IDE: Preferably Visual Studio Code for editing project files.&lt;/li&gt;
&lt;li&gt;(Optional but helpful) Basic familiarity with terminal or command-line usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1 : Get the app&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Steps to Get the App and Run it in Visual Studio Code&lt;/li&gt;
&lt;li&gt;Open Visual Studio Code&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launch VS Code on your computer.&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%2Fsbk1mnsyxd21lbzqhxgs.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%2Fsbk1mnsyxd21lbzqhxgs.png" alt="code" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the Terminal&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Terminal at the top menu and select new terminal&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%2Fk4pzuiikz865pwo3x7r3.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%2Fk4pzuiikz865pwo3x7r3.png" alt="terminal" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the Application Repository&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the terminal, type the following command and press Enter:&lt;br&gt;
&lt;strong&gt;git clone&lt;/strong&gt; &lt;a href="https://github.com/docker/getting-started-app.git" rel="noopener noreferrer"&gt;https://github.com/docker/getting-started-app.git&lt;/a&gt;&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%2Fcpae8ooy8qkikbiml7k6.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%2Fcpae8ooy8qkikbiml7k6.png" alt="git clone" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate into the App Folder &lt;strong&gt;cd getting-started-app&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the Folder in VS Code (Optional) &lt;strong&gt;code .&lt;/strong&gt;&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%2F03kll1xixfsoww5sq106.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%2F03kll1xixfsoww5sq106.png" alt="cd" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View the contents of the cloned repository. You should see the following files and sub-directories.&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%2Fj3bwd747j46rii6fnk0k.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%2Fj3bwd747j46rii6fnk0k.png" alt="content" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 : Build image&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To build the image, you'll need to use a Dockerfile. A Dockerfile is simply a text-based file with no file extension that contains a script of instructions. Docker uses this script to build a container image.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the getting-started-app directory, the same location as the package.json file, create a file named Dockerfile with the following contents:&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This Dockerfile starts off with a node:lts-alpine base image, a light-weight Linux image that comes with Node.js and the Yarn package manager pre-installed. It copies all of the source code into the image, installs the necessary dependencies, and starts the application.&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%2Fcvrxqp6cc5xs7cixfcum.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%2Fcvrxqp6cc5xs7cixfcum.png" alt="Image" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build the image using the following commands:&lt;br&gt;
&lt;strong&gt;docker build -t getting-started-app .&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F0bh03beon41anpvcflxy.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%2F0bh03beon41anpvcflxy.png" alt="build" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Start an app container&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that you have an image, you can run the application in a container using the docker run command.&lt;br&gt;
Run your container using the docker run command and specify the name of the image you just created:&lt;br&gt;
&lt;strong&gt;docker run -d -p 127.0.0.1:3000:3000 getting-started&lt;/strong&gt;&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%2Fql8u7sdyaw0dw0zvdrod.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%2Fql8u7sdyaw0dw0zvdrod.png" alt="run" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After a few seconds, open your web browser to &lt;a href="http://127.0.0.1:3000" rel="noopener noreferrer"&gt;http://127.0.0.1:3000&lt;/a&gt;. You should see your app.
&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%2F4pfguycxduo2hk06ou1r.png" alt="localhost" width="800" height="330"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Upon completing this project, you’ll have elevated a basic Node.js Todo List Manager into a fully containerized application. Along the way, you’ll build practical expertise in Docker — mastering commands, crafting images, and managing containers. These are essential capabilities for today’s DevOps practices and cloud-native development. More than just a technical exercise, this project empowers you to confidently deploy applications that are scalable, portable, and production-ready in diverse environments.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>docker</category>
      <category>containers</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Advanced Linux Administration: User and Permission Control in a Simulated Business Environment</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Thu, 06 Nov 2025 15:52:22 +0000</pubDate>
      <link>https://forem.com/adeyemo/advanced-linux-administration-user-and-permission-control-in-a-simulated-business-environment-4j3a</link>
      <guid>https://forem.com/adeyemo/advanced-linux-administration-user-and-permission-control-in-a-simulated-business-environment-4j3a</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Effective user, group, and permission management is a cornerstone of Linux system administration. It safeguards sensitive data by controlling access, while enabling seamless collaboration across shared environments. In this project, you'll engage in a realistic simulation—creating users, organizing them into groups, and configuring access to shared directories and project files. Through this hands-on experience, you'll gain proficiency with key commands such as adduser, groupadd, usermod, chmod, chown, and id.&lt;/p&gt;

&lt;p&gt;Tasks to be Completed&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create Groups&lt;br&gt;
Set up 2 groups (e.g., devs and staff) using groupadd.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create Users&lt;br&gt;
Add 5 new users with adduser or useradd.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assign Users to Groups&lt;br&gt;
Use usermod -aG to assign users to the correct group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set Up a Shared Project Directory&lt;br&gt;
Create a directory (/home/company_projects) and configure it with the SGID bit so all files inherit the group ownership.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage Permissions&lt;br&gt;
Use chmod to enforce rules (e.g., only group members can read/write, others are denied).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test Group Collaboration&lt;br&gt;
Have one user (e.g., alice) create a file and another group member (e.g., bob) edit it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm that non-members (e.g., carol) cannot access the directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change File Ownership&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practice with chown and chgrp to assign ownership of files to specific users or groups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify and Troubleshoot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use commands like id, groups, ls -l, and stat to confirm changes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Prerequisites&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most commands require root privileges. Prefix with sudo when needed, or run as root:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sudo -i **or **sudo su -&lt;/strong&gt; if you want a root shell&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create two groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choose meaningful group names. Example: devs and staff.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;sudo groupadd devs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sudo groupadd staff&lt;/strong&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%2Fpc8tsn26n8j20id6x67s.png" alt="group add" width="800" height="176"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verify groups exist:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;getent group devs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;getent group staff&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&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%2Fvjbakjh4x3vmb54cvwdi.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%2Fvjbakjh4x3vmb54cvwdi.png" alt="getent" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 : Create five users&lt;/strong&gt;&lt;br&gt;
Create five user using the command adduser, adduser will prompt for a password and optional info.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;sudo adduser alice&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%2Fx6blhsxamsqb6ktk2xsf.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%2Fx6blhsxamsqb6ktk2xsf.png" alt="ALICE" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sudo adduser john&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%2Fw1q6tba8nmpgb49qblju.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%2Fw1q6tba8nmpgb49qblju.png" alt="john" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sudo adduser Isabella&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%2Fozhq82aqilvjxoxot35t.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%2Fozhq82aqilvjxoxot35t.png" alt="Isabella" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sudo adduser dave&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%2Fh3hxbbkex2zo0jr569v5.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%2Fh3hxbbkex2zo0jr569v5.png" alt="dave" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sudo adduser stefan&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%2Frklo09uewnc7ce0r7nsc.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%2Frklo09uewnc7ce0r7nsc.png" alt="STEFAN" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To view all the users created&lt;br&gt;
&lt;strong&gt;awk -F: '$3 &amp;gt;= 1000 {print $1}' /etc/passwd&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fldoewx4gzysw63faarvi.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%2Fldoewx4gzysw63faarvi.png" alt="see all" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To delete a user&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%2F5r19j1bad04toe88a7kc.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%2F5r19j1bad04toe88a7kc.png" alt="delete" width="644" height="308"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To verify a user was deleted , If nothing is returned, that user is fully removed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;grep username /etc/passwd&lt;/strong&gt;&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%2Fhpcttlgg7utqi5neir14.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%2Fhpcttlgg7utqi5neir14.png" alt="grep" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 :Assign users to groups&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decide group membership. Example mapping:&lt;/li&gt;
&lt;li&gt;devs: alice, bob&lt;/li&gt;
&lt;li&gt;staff: isabella, dave, stefan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add users to groups (use -aG user to each group)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sudo usermod -aG devs alice&lt;/li&gt;
&lt;li&gt;sudo usermod -aG devs john&lt;/li&gt;
&lt;li&gt;sudo usermod -aG staff Isabella&lt;/li&gt;
&lt;li&gt;sudo usermod -aG staff dave&lt;/li&gt;
&lt;li&gt;sudo usermod -aG staff stefan
&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%2Fwqf2myzksbuwcdxyt0es.png" alt="Staff" width="800" height="272"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verify membership:&lt;/strong&gt;&lt;br&gt;
verify membership by using the command sudo getent group devs and sudo getent group staff &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%2Fiftygs4wmkez399n5sz4.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%2Fiftygs4wmkez399n5sz4.png" alt="membership" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 : Create a shared project directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a directory that group members can read/write. We'll create a company_projects folder in the home directory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;mkdir -p /home/company_projects&lt;/strong&gt; (create a parent directory in the home directory)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sudo chmod g+s /home/company_projects The g+s (setgid on directory) is what makes a shared project folder behave like a real team workspace.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;sudo chown root:devs /home/company_projects&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;chown → change owner of a file or directory.&lt;/li&gt;
&lt;li&gt;root:devs&lt;/li&gt;
&lt;li&gt;root = new owner of the directory&lt;/li&gt;
&lt;li&gt;devs = new group of the directory&lt;/li&gt;
&lt;li&gt;/home/company_projects → the target directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;sudo chmod u+rwx /home/company_projects&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;chmod → change file/directory permissions.&lt;/li&gt;
&lt;li&gt;u → refers to the owner of the directory.&lt;/li&gt;
&lt;li&gt;+rwx → add read (r), write (w), and execute (x) permissions.&lt;/li&gt;
&lt;li&gt;Effect: The owner of ~/company_projects can list contents, create/delete files, and enter the directory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;sudo chmod g+rwx /home/company_projects&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;chmod: change permissions.&lt;/li&gt;
&lt;li&gt;g: refers to the group of the file/directory (in your case, the group might be devs because of sudo chown root:devs).&lt;/li&gt;
&lt;li&gt;+rwx: add three permissions:&lt;/li&gt;
&lt;li&gt;r (read): group members can list the files inside.&lt;/li&gt;
&lt;li&gt;w (write): group members can create new files, delete files, and make changes.&lt;/li&gt;
&lt;li&gt;x (execute): group members can enter the directory and access its contents.&lt;/li&gt;
&lt;/ul&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%2Fesrev970vs31dunuhoke.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%2Fesrev970vs31dunuhoke.png" alt="chmod" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 : Test the shared directory behavior&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;switched to the alice account and tried to enter /home/company_projects&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;su - alice&lt;/li&gt;
&lt;li&gt;cd /home/company_projects&lt;/li&gt;
&lt;li&gt;touch testfile_from_alice.txt&lt;/li&gt;
&lt;li&gt;ls&lt;/li&gt;
&lt;li&gt;shows: file_from_alice.txt&lt;/li&gt;
&lt;li&gt;ls -l&lt;/li&gt;
&lt;li&gt;shows a line similar to:&lt;/li&gt;
&lt;li&gt;-rw-rw-r-- 1 alice devs 0 Sep 27 08:40 file_from_alice.txt&lt;/li&gt;
&lt;li&gt;What this shows:&lt;/li&gt;
&lt;li&gt;The file owner is alice.&lt;/li&gt;
&lt;li&gt;The file group is devs — it inherited the directory group (devs) because the parent directory had the setgid bit.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;File permissions are -rw-rw-r-- (owner read/write, group read/write, others read).&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%2Fpmfqfiii0iegebxnj7xw.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%2Fpmfqfiii0iegebxnj7xw.png" alt="r-w-rw" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;exit to logout from alice&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.1 As another devs member (john), confirm you can edit/delete:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;su - john&lt;/li&gt;
&lt;li&gt;cd /home/company_projects&lt;/li&gt;
&lt;li&gt;echo "hello user" &amp;gt;&amp;gt; testfile_from_alice.txt&lt;/li&gt;
&lt;li&gt;cat testfile_from_alice.txt   allowed because group has write permission
&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%2Fa5vx3zdviowdfht3g0v4.png" alt="cat" width="800" height="302"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;5.2 A non-member (e.g., Isabella, in staff) should be denied because they are not a member of the group devs, they belong to the staff group:&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;su - Isabella&lt;/li&gt;
&lt;li&gt;cd /home/company_projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;touch file_from_Isabella.html&lt;/strong&gt; 
this should fail with "Permission denied" touch should_fail.txt
&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%2Fgigqcld145pfi6cff9no.png" alt="touch" width="800" height="292"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 6 : Manage file ownership and group on existing files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set owner and group for a file or directory using the command&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;sudo chown alice:devs /home/company_projects/somefile.txt&lt;/strong&gt;&lt;br&gt;
The owner of the directory is alice and now belong to the devs team.&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%2Fkkpm1t6q96h0eew0pfm9.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%2Fkkpm1t6q96h0eew0pfm9.png" alt="sudo" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.1 change only group:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;sudo chgrp staff ~/company_projects/some_other_file.txt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before the command&lt;/p&gt;

&lt;p&gt;The directory /home/company_projects had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner: alice&lt;/li&gt;
&lt;li&gt;Group: devs&lt;/li&gt;
&lt;li&gt;Shown by:&lt;/li&gt;
&lt;li&gt;drwxrwsr-x 2 alice devs 4096 Sep 27 09:15 /home/company_projects&lt;/li&gt;
&lt;li&gt;Step: sudo chgrp staff /home/company_projects&lt;/li&gt;
&lt;li&gt;chgrp = change group ownership&lt;/li&gt;
&lt;li&gt;staff = new group&lt;/li&gt;
&lt;li&gt;So, this command changed the group of the directory from devs ➝ staff.&lt;/li&gt;
&lt;li&gt;Now the directory looks like:&lt;/li&gt;
&lt;li&gt;drwxrwsr-x 2 alice staff 4096 Sep 27 09:15 /home/company_projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner is still alice&lt;/li&gt;
&lt;li&gt;Group is now staff&lt;/li&gt;
&lt;li&gt;Next: su - carol&lt;/li&gt;
&lt;li&gt;switched to user carol.&lt;/li&gt;
&lt;li&gt;Carol goes into /home/company_projects and creates a file:&lt;/li&gt;
&lt;li&gt;touch man.txt&lt;/li&gt;
&lt;li&gt;Now when you list:&lt;/li&gt;
&lt;li&gt;-rw-rw-r-- 1 carol staff 0 Sep 27 09:53 man.txt&lt;/li&gt;
&lt;li&gt;-rw-rw-r-- 1 alice devs 16 Sep 27 09:23 testfile_from_alice.txt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why this happened:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;man.txt&lt;/li&gt;
&lt;li&gt;Owner = carol (because she created it).&lt;/li&gt;
&lt;li&gt;Group = staff (because the directory /home/company_projects now belongs to group staff AND it has the setgid bit s set → that s in drwxrwsr-x).&lt;/li&gt;
&lt;li&gt;The setgid bit ensures new files created inside inherit the directory’s group.&lt;/li&gt;
&lt;li&gt;testfile_from_alice.txt&lt;/li&gt;
&lt;li&gt;This was created earlier by Alice when the group was still devs.&lt;/li&gt;
&lt;li&gt;So it keeps alice:devs.
&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%2F13vsjvsw7avl7gcfmt4k.png" alt="testfile" width="800" height="378"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project provided a hands-on exploration of Linux file ownership, group management, and permission control. Through practical exercises using commands like chown, chgrp, and chmod, we illustrated how to assign resources to users and groups while regulating access levels. A standout feature was the use of the setgid permission, which ensures consistent group ownership for new files in shared directories—streamlining collaboration across teams. We also examined how changes in group membership (e.g., alice:devs to alice:staff) influence access rights and user interactions within shared environments. Ultimately, this project underscores the critical role of permission management in maintaining secure, efficient multi-user systems.&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>startup</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Linux Essentials: Managing Files and Folders in a Simulated Company Setup</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Tue, 04 Nov 2025 17:17:07 +0000</pubDate>
      <link>https://forem.com/adeyemo/linux-essentials-managing-files-and-folders-in-a-simulated-company-setup-1g3a</link>
      <guid>https://forem.com/adeyemo/linux-essentials-managing-files-and-folders-in-a-simulated-company-setup-1g3a</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Linux is a powerful operating system used in everything from servers and cloud platforms to smart devices and supercomputers. One of the first things to learn when working with Linux is how to manage files and folders. This skill is essential for anyone interested in system administration, DevOps, or automation.&lt;/p&gt;

&lt;p&gt;In this project, “File &amp;amp; Directory Management for a Mock Company using Linux”, you’ll set up and organize a sample company’s folder structure. It’s a hands-on way to learn how to move through the Linux filesystem, work with files, and use key commands like mkdir, cd, ls, and more. You’ll also practice using both absolute and relative paths to navigate and manage data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You’ll Do&lt;/strong&gt;&lt;br&gt;
Here are the practical tasks you’ll complete step by step:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Up the Company Structure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create directories for different departments (HR, Finance, Dev, Marketing).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Create and Manage Files&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add employee records, policy documents, budgets, and project files.&lt;/li&gt;
&lt;li&gt;Use commands like &lt;strong&gt;touch, ls, cat&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Copy, Move, and Rename Files&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share policies across departments.&lt;/li&gt;
&lt;li&gt;Move misplaced project files.&lt;/li&gt;
&lt;li&gt;Rename files correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Search and Find Files&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use find to locate files.&lt;/li&gt;
&lt;li&gt;Search content inside files with grep.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Compress and Backup Data&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Archive the company directory with tar and gzip.&lt;/li&gt;
&lt;li&gt;Extract the archive to test backup recovery.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Check Storage Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor directory size with du.&lt;/li&gt;
&lt;li&gt;Check disk space with df.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Work with Paths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Practice using absolute paths (/home/user/company/...).&lt;/li&gt;
&lt;li&gt;Practice using relative paths (../finance/budget.txt).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1 Create the Company Folder Structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will first create a parent directory named company, and inside this directory, we will create four subdirectories representing different departments of the organization:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commands Used and Their Meanings&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mkdir -p ~/company&lt;/li&gt;
&lt;li&gt;mkdir: Make Directory (creates a new folder)&lt;/li&gt;
&lt;li&gt;-p: Parents flag (creates parent directories if they don't exist)&lt;/li&gt;
&lt;li&gt;~/company: Path to the new directory (in the user's home folder)&lt;/li&gt;
&lt;li&gt;Meaning: Create a directory called "company" in the home directory&lt;/li&gt;
&lt;li&gt;mkdir -p ~/company/hr (and similar commands)&lt;/li&gt;
&lt;li&gt;Meaning: Create subdirectories (hr, finance, marketing, dev) inside the company directory&lt;/li&gt;
&lt;li&gt;ls&lt;/li&gt;
&lt;li&gt;Meaning: List contents of the current directory&lt;/li&gt;
&lt;li&gt;cd company&lt;/li&gt;
&lt;li&gt;cd: Change Directory&lt;/li&gt;
&lt;li&gt;Meaning: Move into the company directory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1.1 Create the main company directory:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mkdir -p ~/company&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&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%2Ffu7xe2ui73dcxmhurb3u.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%2Ffu7xe2ui73dcxmhurb3u.png" alt="company" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.2 Create department subdirectories:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mkdir -p ~/company/hr&lt;/li&gt;
&lt;li&gt;mkdir -p ~/company/finance&lt;/li&gt;
&lt;li&gt;mkdir -p ~/company/marketing&lt;/li&gt;
&lt;li&gt;mkdir -p ~/company/dev&lt;/li&gt;
&lt;/ul&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%2F4xhnp1jwnndpw0q06pmt.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%2F4xhnp1jwnndpw0q06pmt.png" alt="company/hr/marketing" width="800" height="294"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1.3 Verify the directory structure:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ls&lt;br&gt;
This shows all files and directories in your current location, including the new "company" directory.&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%2Fxds1qpq2gakli1wlomfe.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%2Fxds1qpq2gakli1wlomfe.png" alt="ls all" width="800" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.4 Navigate into the company directory:&lt;/strong&gt;&lt;br&gt;
Navigate into the parent directory (company) using the cd command.&lt;br&gt;
*cd * company&lt;/p&gt;

&lt;p&gt;ls&lt;br&gt;
This confirms that all four department directories (dev, finance, hr, marketing) were created successfully.&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%2Fu1dlo0w2zi81fm9xhytv.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%2Fu1dlo0w2zi81fm9xhytv.png" alt="cd/ls" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create Some Sample Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;touch → creates empty files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Here we simulate real company documents: HR gets employee records and policies, Finance gets budgets, Dev has project files, and Marketing has strategies.&lt;/li&gt;
&lt;/ul&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%2F3b7almn07fn29g9hq3iq.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%2F3b7almn07fn29g9hq3iq.png" alt="sample files" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can confirm they were created with:
ls ~/company/hr
ls ~/company/finance
ls ~/company/dev
ls ~/company/marketing
&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%2Fkjkqyu33q3jsdu03z1ta.png" alt="confirm" width="800" height="358"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Copy &amp;amp; Rename Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Copy HR policies to Marketing:&lt;/p&gt;

&lt;p&gt;cp copy files from one directory to another directory&lt;br&gt;
ls comfirm the policies.txt file is copied to marketing directory&lt;/p&gt;

&lt;p&gt;cp ~/company/hr/policies.txt ~/company/marketing&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%2Ft9utsxcrh63016wp5rs4.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%2Ft9utsxcrh63016wp5rs4.png" alt="transfer" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;mv → use for renaming files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The file in the dev folder (projectA.txt) is spelt wrongly, rename the file to project2025.txt&lt;/li&gt;
&lt;li&gt;cd into the dev directory&lt;/li&gt;
&lt;li&gt;ls to list the files in the directory&lt;/li&gt;
&lt;li&gt;use mv to rename the directory from projectA.txt to project2025.txt&lt;/li&gt;
&lt;li&gt;use ls to verify your change.
&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%2Fdvvokhy52zlxe9gl6oay.png" alt="send" width="800" height="233"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Search for Files&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;find → locates files and directories matching a pattern.&lt;/li&gt;
&lt;li&gt;grep -r → searches inside files for specific words recursively.&lt;/li&gt;
&lt;li&gt;This is useful for quickly tracking down documents.&lt;/li&gt;
&lt;li&gt;find ~/company -name "*.txt" locates files and directories that has the .txt files.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;find ~/company -name "*.txt" locates files and directories that has the .png files.&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%2Fhm20lnjq86exlop3cjjg.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%2Fhm20lnjq86exlop3cjjg.png" alt="search" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for the word “policy” inside files:&lt;br&gt;
&lt;strong&gt;grep -r "policies" ~/company&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Organize with Compression&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At some point, every company needs to back up its files to protect against accidental deletion, corruption, or system failure. In Linux, one of the most common tools for this is tar (short for tape archive). It allows you to bundle multiple files and directories into a single archive, and with the right options, compress it to save space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.1 Compress the company folder&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tar -czvf company_backup.tar.gz ~/company&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tar → archives multiple files and directories into one.&lt;/li&gt;
&lt;li&gt;-c → create a new archive.&lt;/li&gt;
&lt;li&gt;-z → compress the archive using gzip (makes it smaller in size).&lt;/li&gt;
&lt;li&gt;-v → verbose mode, shows the progress in the terminal as files are being archived.&lt;/li&gt;
&lt;li&gt;-f → specifies the filename of the archive (company_backup.tar.gz).&lt;/li&gt;
&lt;li&gt;~/company → the folder you want to back up.&lt;/li&gt;
&lt;li&gt;This command creates a compressed backup file named:&lt;/li&gt;
&lt;li&gt;company_backup.tar.gz&lt;/li&gt;
&lt;li&gt;in your current working directory. &lt;strong&gt;Extract the backup to test&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tar -xzvf company_backup.tar.gz -C ~/&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;-x → extract files from an archive.&lt;/li&gt;
&lt;li&gt;-z → tells tar the archive is compressed with gzip.&lt;/li&gt;
&lt;li&gt;-v → verbose mode, shows files being extracted.&lt;/li&gt;
&lt;li&gt;-f → specifies the filename of the archive.&lt;/li&gt;
&lt;li&gt;-C ~/ → tells tar where to extract the files (in this case, your home directory).
This simulates restoring the backup. After extraction, you should see the company folder again in your home directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.2 Compress the company folder:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;tar -czvf company_backup.tar.gz ~/company&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%2Fvlr2i07g0547s462r3jr.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%2Fvlr2i07g0547s462r3jr.png" alt="backup" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.3 Extract it to test:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;tar -xzvf company_backup.tar.gz -C ~/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.4 View whats inside the compressed folder&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check what’s inside your archive before extracting:&lt;/li&gt;
&lt;li&gt;This lists all files and directories stored in the archive.
tar -tzvf company_backup.tar.gz
&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%2Fm88g8ru7yo16x85mjqs0.png" alt="extract" width="800" height="377"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.5 Extract into a new folder&lt;/strong&gt;&lt;br&gt;
Create a new folder (Restorefiles) in the company directory which is the parent directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.5.1 Preparation Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mkdir -p ~/company/Restorefiles&lt;/strong&gt;&lt;br&gt;
cd company&lt;br&gt;
ls&lt;br&gt;
cd ..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created a safe restoration area (Restorefiles) to extract backup files&lt;/li&gt;
&lt;li&gt;Verified your existing company structure before restoration&lt;/li&gt;
&lt;li&gt;Positioned yourself in the home directory ready for extraction
&lt;strong&gt;5.1.2: Backup Extraction&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;tar xzvf company_backup.tar.gz -C ~/company/Restorefiles&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracted a compressed backup archive (company_backup.tar.gz)&lt;/li&gt;
&lt;li&gt;Used safe extraction to an isolated location instead of overwriting original files&lt;/li&gt;
&lt;li&gt;Preserved the complete directory structure and file permissions
&lt;strong&gt;5.1.3 Verification &amp;amp; Inspection&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;cd ~/company/Restorefiles&lt;br&gt;
ls&lt;br&gt;
cd home&lt;br&gt;
ls&lt;br&gt;
cd ubuntu&lt;br&gt;
ls&lt;br&gt;
cd company&lt;br&gt;
ls&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigated through the extracted backup structure to verify contents&lt;/li&gt;
&lt;li&gt;Confirmed all data was intact: departments, files, and hierarchy&lt;/li&gt;
&lt;li&gt;Checked that the backup matched your expected company structure&lt;/li&gt;
&lt;li&gt;What Your Backup Contained&lt;/li&gt;
&lt;/ul&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%2F16jood9f6jh6mz8hx34b.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%2F16jood9f6jh6mz8hx34b.png" alt="part1" width="800" height="81"&gt;&lt;/a&gt;&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%2Fno8qqwoh22d6mm0tn27c.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%2Fno8qqwoh22d6mm0tn27c.png" alt="part2" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Check Storage &amp;amp; File Sizes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Commands:&lt;br&gt;
&lt;strong&gt;6.1 Check company folder size:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;du -sh ~/company&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%2F8pxwv9mi0o9v2fak86yr.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%2F8pxwv9mi0o9v2fak86yr.png" alt="size" width="800" height="167"&gt;&lt;/a&gt;&lt;br&gt;
the size is 60kilobytes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.2 Check overall disk usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;df -h&lt;/strong&gt;&lt;br&gt;
du -sh → displays size of a directory in human-readable format.&lt;br&gt;
df -h → shows free/used space on mounted filesystems.&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%2F7kka80yutljjym6vjpxx.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%2F7kka80yutljjym6vjpxx.png" alt="mounted" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
This project showed how Linux can be used to build and manage a realistic company file system. By setting up department folders, organizing files, renaming and moving them, and securing everything with backups and compression, you’ve practiced essential skills that are key for system administrators and DevOps professionals.&lt;/p&gt;

&lt;p&gt;Throughout the exercises, you learned how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create and move through directories using mkdir and cd&lt;/li&gt;
&lt;li&gt;Work with files using touch, ls, cp, and mv&lt;/li&gt;
&lt;li&gt;Search for files and content using find and grep&lt;/li&gt;
&lt;li&gt;Back up and restore data with tar and gzip&lt;/li&gt;
&lt;li&gt;Check storage usage using du and df&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Applying these commands in a mock company setup helped you see how Linux is used in real-world tasks like organizing data, managing backups, and keeping systems efficient. These foundational skills prepare you for more advanced topics like scripting, user permissions, automation, and cloud deployment. You’re now one step closer to becoming confident in Linux system administration.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>linux</category>
    </item>
    <item>
      <title>How to Create DNS zones and configure DNS settings</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Sat, 11 Oct 2025 03:27:40 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-create-dns-zones-and-configure-dns-settings-3lik</link>
      <guid>https://forem.com/adeyemo/how-to-create-dns-zones-and-configure-dns-settings-3lik</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In today’s cloud infrastructure, the Domain Name System (DNS) is a cornerstone for managing communication between applications and services. Rather than depending on complex IP addresses, DNS enables the use of intuitive and human-readable names, simplifying both access and management. This project focuses on implementing and configuring DNS zones and settings within &lt;strong&gt;Microsoft Azure&lt;/strong&gt;. By creating private DNS zones, defining DNS records, and linking DNS configurations with a virtual network, we establish secure and efficient name resolution, enhance network reliability, and streamline resource management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasks to Cover&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create and configure a private DNS zone&lt;/strong&gt; – to manage DNS records in a secure and isolated Azure environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create and configure DNS records&lt;/strong&gt; – to associate domain names with IP addresses or other Azure resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure DNS settings on a virtual network&lt;/strong&gt; – to enable seamless and efficient name resolution for virtual machines and services within the VNet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1 Create a private DNS zone&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure Private DNS provides a reliable, secure DNS service to manage and resolve domain names in a virtual network without the need to add a custom DNS solution. By using private DNS zones, you can use your own custom domain names rather than the Azure-provided names.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On the Azure portal, search for and select Private dns zones.&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%2F021x951px5b8fkk8mqsc.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%2F021x951px5b8fkk8mqsc.png" alt="dns zones" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select + Create and configure the DNS zone.&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%2F6xrwngkb6bec3vxf5lkx.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%2F6xrwngkb6bec3vxf5lkx.png" alt="+create" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subscription: Select your subscription&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource group: RG1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: private.contoso.com&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region: East US&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Review + 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%2Fmcjmonjddk8pbiz7xwo7.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%2Fmcjmonjddk8pbiz7xwo7.png" alt="contoso" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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%2Fjioqufr4cipefy78ft4y.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%2Fjioqufr4cipefy78ft4y.png" alt="create" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait for the DNS zone to deploy, and then select Go to resource.&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%2Fl86jhvmn797s94urixwj.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%2Fl86jhvmn797s94urixwj.png" alt="gtr" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 Create a virtual network link to your private DNS zone&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To resolve DNS records in a private DNS zone, resources must be linked to the private zone. A virtual network link associates the virtual network to the private zone.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the portal, continue working on the private.contoso.com DNS zone.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the DNS Management blade, select + Virtual network links.&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%2Fuildpwnrahmadddcsmsf.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%2Fuildpwnrahmadddcsmsf.png" alt="DNS management" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select + Add” and configure the virtual network link.&lt;br&gt;
Link name: app-vnet-link&lt;br&gt;
Virtual network: app-vnet&lt;br&gt;
Enable auto registration: Enabled&lt;br&gt;
Select Create and wait for the deployment to finish. If necessary, Refresh the page.&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%2Fs93fohwqouuc320skor2.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%2Fs93fohwqouuc320skor2.png" alt="configure" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The virtual ntework as been link to the private DNS zone&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%2F4gt6o2jujgfdv6vfh8vh.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%2F4gt6o2jujgfdv6vfh8vh.png" alt="link" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3 Create a DNS record set&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DNS records provide information about the DNS zone.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the portal, continue working on the private.contoso.com DNS zone.&lt;/li&gt;
&lt;li&gt;In the DNS Management blade, select + Recordsets.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Notice that two A records have automatically been created for each of the 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%2F1wij8q14gkzsyr7nvuly.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%2F1wij8q14gkzsyr7nvuly.png" alt="DNS recordset" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select + Add and configure a record set. When finished select Add.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: backend&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type: A&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TTL: 1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IP address: 10.1.1.5&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%2F5hst4ppllh8itkwsoqad.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%2F5hst4ppllh8itkwsoqad.png" alt="configure recordset" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DNS recordset has been created&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%2Fcahiw93mz0x13jim4dic.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%2Fcahiw93mz0x13jim4dic.png" alt="recordset created" width="800" height="345"&gt;&lt;/a&gt;&lt;br&gt;
Note: This record set implies there is a virtual machine in app-vnet with a private IP address of 10.1.1.5.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Completing this project results in a robust DNS infrastructure within Azure, tailored for efficiency and scalability. By leveraging private DNS zones and records, domain name management becomes centralized and streamlined. Integrating DNS configurations with the virtual network ensures consistent and reliable name resolution across all connected services and applications.&lt;/p&gt;

&lt;p&gt;Beyond improved connectivity, this setup strengthens security by keeping DNS resolution internal—minimizing exposure and reducing risk. Ultimately, this project showcases how Azure DNS can simplify network administration while laying a scalable groundwork for future cloud-based workloads.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Configure Network routing in Azure</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Sat, 11 Oct 2025 02:53:00 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-configure-network-routing-in-azure-3a6m</link>
      <guid>https://forem.com/adeyemo/how-to-configure-network-routing-in-azure-3a6m</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;In cloud networking, routing is essential for directing traffic efficiently and securely between subnets, virtual networks, and external networks. In Microsoft Azure, &lt;strong&gt;custom route tables&lt;/strong&gt; provide administrators with greater control over how traffic flows within a virtual network—offering flexibility beyond the platform’s default system routes.&lt;/p&gt;

&lt;p&gt;This project demonstrates how to configure and manage routing in Azure by creating a &lt;strong&gt;custom route table&lt;/strong&gt;, associating it with specific subnets, and defining &lt;strong&gt;custom routes&lt;/strong&gt; to manage traffic paths. By completing this project, you will develop hands-on experience in Azure routing configuration and learn how to tailor routing behavior to meet application and organizational needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tasks to Complete
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a Route Table&lt;/strong&gt; – Build a custom route table to define and manage routing rules within your virtual network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add the Route Table&lt;/strong&gt; – Integrate the newly created route table into the Azure environment for active use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Associate the Route Table with Subnets&lt;/strong&gt; – Attach the route table to one or more subnets so that its routing rules apply to the network traffic within those subnets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a Custom Route&lt;/strong&gt; – Define specific routes that control how traffic is directed, ensuring efficient and secure communication across the network.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 1 Create a Route Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure automatically creates a route table for each subnet within an Azure virtual network. The route table includes the default system routes. You can create route tables and routes to override Azure’s default system routes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Record the private IP address of app-vnet-firewall&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search box at the top of the portal, enter Firewall. Select Firewall in the search results.&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%2Ferhft3jhjaf39rmj6r0x.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%2Ferhft3jhjaf39rmj6r0x.png" alt="enter firewall" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select app-vnet-firewall.&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%2F4cxnmluri60owp8og254.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%2F4cxnmluri60owp8og254.png" alt="select" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Overview and record the Private IP address.&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%2Facjathu0d02qg9y3lx8e.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%2Facjathu0d02qg9y3lx8e.png" alt="record" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 Add the route table&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search box, enter Route tables. When Route table appears in the search results, select 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%2Fnyficoq9mznq0d3w3dr1.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%2Fnyficoq9mznq0d3w3dr1.png" alt="route tables" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Route table page, select + Create and create the route table.&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%2Fuhe1obrqoneenny92p0s.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%2Fuhe1obrqoneenny92p0s.png" alt="create route" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Complete the following configuration&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subscription: Select your subscription&lt;/li&gt;
&lt;li&gt;Resource group: RG1&lt;/li&gt;
&lt;li&gt;Region: East US&lt;/li&gt;
&lt;li&gt;Name: app-vnet-firewall-rt&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Review + 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%2Fi5uj8ds3qja4s7kh46h6.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%2Fi5uj8ds3qja4s7kh46h6.png" alt="configuration" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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%2Fp52h4yl3vverf225xump.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%2Fp52h4yl3vverf225xump.png" alt="creating route table" width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait for the route table to deploy, then select Go to resource.&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%2Fnuxg8uz55hsubiokof3i.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%2Fnuxg8uz55hsubiokof3i.png" alt="waiting for deployment" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3 Associate the route table to the subnets&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the portal, continue working with the route table, select app-vnet-firewall-rt.&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%2Fgmxeak5irdn52h0hza3a.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%2Fgmxeak5irdn52h0hza3a.png" alt="continue working" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Settings blade, select Subnets and then + Associate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure an association to the frontend subnet, then select OK.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual network: app-vnet (RG1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subnet: frontend&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%2Fqjjyq334p95np6hmtmn2.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%2Fqjjyq334p95np6hmtmn2.png" alt="frontend app" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure an association to the backend subnet, then select OK.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual network: app-vnet (RG1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subnet: backend&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%2Fviovq82zpxpe9sv69837.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%2Fviovq82zpxpe9sv69837.png" alt="backend app" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Frontend and the Backend subnets as been associated to the route table.&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%2F25ozsp1nlopnns3iz38g.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%2F25ozsp1nlopnns3iz38g.png" alt="frontend-backend" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4 Create a route in the route table&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the portal, continue working with the route table, select app-vnet-firewall-rt.&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%2Fa2ca0rz6x9wl10hinjz0.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%2Fa2ca0rz6x9wl10hinjz0.png" alt="app continue" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Settings blade, select Routes and then + Add.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the route, then select Add.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Route name outbound-firewall&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destination type IP addresses&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destination IP addresses/CIDR range 0.0.0.0/0&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next hop type Virtual appliance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next hop address: private IP address of the firewall (10.0.2.4)&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%2Fwi2dm1vjops1p3aw62po.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%2Fwi2dm1vjops1p3aw62po.png" alt="setting blade" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Route was created successfully in the route table&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%2Fo060j5j4sudi0gdqev62.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%2Fo060j5j4sudi0gdqev62.png" alt="route created" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
With this project complete, you've successfully created, configured, and linked a custom route table within Azure—giving you precise control over how traffic flows through your virtual network. These steps empower administrators to fine-tune performance, strengthen security, and tailor network behavior to meet specific application needs.&lt;/p&gt;

&lt;p&gt;This hands-on exercise showcases the flexibility of Azure’s routing architecture and lays the groundwork for more advanced designs, such as integrating virtual appliances, enforcing traffic inspection, or building hybrid connectivity solutions. You're now equipped to shape network paths with confidence in any cloud scenario.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Create and Configure Azure Firewall</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Sat, 11 Oct 2025 02:12:35 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-create-and-configure-azure-firewall-3l07</link>
      <guid>https://forem.com/adeyemo/how-to-create-and-configure-azure-firewall-3l07</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
This project focuses on designing and implementing centralized network security for an application virtual network (app-vnet) using Azure Firewall. As application demands scale, ensuring secure traffic flow, granular access control, and protected CI/CD operations via Azure DevOps becomes essential. To address these needs, you'll deploy Azure Firewall and configure it with a tailored firewall policy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You'll Accomplish&lt;/strong&gt;&lt;br&gt;
Throughout this project, you'll gain hands-on experience with key security tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deploy Azure Firewall&lt;/strong&gt; to serve as a centralized security gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create and Configure a Firewall Policy&lt;/strong&gt; to define traffic filtering rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set Up an Application Rule Collection&lt;/strong&gt; to allow secure access from app-vnet to Azure DevOps services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create a Network Rule Collection&lt;/strong&gt; to enable DNS resolution for resources within the virtual network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prepare the AzureFirewallSubnet&lt;/strong&gt;, deploy the firewall, apply the necessary rules, and validate the configuration.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, you'll have a working firewall solution that enforces robust security policies and supports secure application development workflows in Azure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 Create Azure Firewall subnet in our existing virtual network&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search box at the top of the portal, enter Virtual networks. Select Virtual networks in the search results.&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%2Fi1j4j28mnmbnupaa6buy.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%2Fi1j4j28mnmbnupaa6buy.png" alt="nets" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select app-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%2Fi0ik22jrzzhkhdk2a2ol.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%2Fi0ik22jrzzhkhdk2a2ol.png" alt="app-net" width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Subnets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select + Subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter the following information and select Save.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: AzureFirewallSubnet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Address range: 10.1.63.0/26&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Note: Leave all other settings as default.&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%2F30wa30o3l9sk6kfg1xmr.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%2F30wa30o3l9sk6kfg1xmr.png" alt="azure firewall" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 Create an Azure Firewall&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search box at the top of the portal, enter Firewall. Select Firewall in the search results.&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%2Ftzgghqf889dlkc8p440p.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%2Ftzgghqf889dlkc8p440p.png" alt="firewall" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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%2F9pjniukrpr1blqv600y0.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%2F9pjniukrpr1blqv600y0.png" alt="create firewall" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Create a firewall by using the values in the following table. For any property that is not specified, use the default value.&lt;br&gt;
Note: Azure Firewall can take a few minutes to deploy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource group: RG1&lt;/li&gt;
&lt;li&gt;Name: app-vnet-firewall&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Firewall SKU: Standard&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%2Fe1kvwsg1e4dw9g5gwn9y.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%2Fe1kvwsg1e4dw9g5gwn9y.png" alt="sku" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Firewall management: Use a Firewall Policy to manage this firewall&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Firewall policy: select Add new&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Policy name: fw-policy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region: East US&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Policy Tier: Standard&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%2Fsrfezapbnhbz00n7kb76.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%2Fsrfezapbnhbz00n7kb76.png" alt="management" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose a virtual network: Use existing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual network: app-vnet (RG1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Public IP address Add new: fwpip&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable Firewall Management NIC uncheck the box&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%2Fyydw6xt5c3pcqbvs2ouu.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%2Fyydw6xt5c3pcqbvs2ouu.png" alt="fwpip" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Review + 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%2Fhml8uv7h485jersow6d2.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%2Fhml8uv7h485jersow6d2.png" alt="rec" width="800" height="682"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then 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%2Fuome41i627bbrsdfbgae.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%2Fuome41i627bbrsdfbgae.png" alt="tsc" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Firewall as been created succesfully, Click on go to resources to see the firewall.&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%2Freazo5kzwkjcbws9dvpc.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%2Freazo5kzwkjcbws9dvpc.png" alt="gtr" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Frmkbwqh2akq0tk048hlj.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%2Frmkbwqh2akq0tk048hlj.png" alt="firewall" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 Update the Firewall Policy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the portal, search for and select Firewall Policies.&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%2F1rpkjgarqchot7il7h0h.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%2F1rpkjgarqchot7il7h0h.png" alt="sfp" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select fw-policy.&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%2Fn5wne5eipts694twtgw5.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%2Fn5wne5eipts694twtgw5.png" alt="select fw" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Add an application rule&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the rule blade, select Application rules and then Add a rule collection.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the application rule collection and then select 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%2Frxdtfimilrkwmj5uw7zi.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%2Frxdtfimilrkwmj5uw7zi.png" alt="application rule" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: app-vnet-fw-rule-collection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rule collection type: Application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Priority: 200&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rule collection action: Allow&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rule collection group DefaultApplicationRuleCollectionGroup&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: AllowAzurePipelines&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source type: IP address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source: 10.1.0.0/23&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protocol: https&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destination type: FQDN&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destination dev.azure.com, azure.microsoft.com&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Note: The AllowAzurePipelines rule allows the web application to access Azure Pipelines. The rule allows the web application to access the Azure DevOps service and the Azure website.&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%2Fgxj724d1vvkqb5vwsf4g.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%2Fgxj724d1vvkqb5vwsf4g.png" alt="pipelines" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Application rule as been added to the firewall policy&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%2Fajfimb4s4d6wffi8ohra.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%2Fajfimb4s4d6wffi8ohra.png" alt="apr added" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Add a network rule&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the rule blade, select Network rules and then Add a network collection.&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%2Fagk2o5qlgathj6vnuz33.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%2Fagk2o5qlgathj6vnuz33.png" alt="network rule" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the network rule and then select Add.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: app-vnet-fw-nrc-dns&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rule collection type: Network&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Priority: 200&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rule collection action: Allow&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rule collection group: DefaultNetworkRuleCollectionGroup&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rule: AllowDns&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source: 10.1.0.0/23&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protocol: UDP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destination ports: 53&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destination addresses: 1.1.1.1, 1.0.0.1&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%2Fiuzqezr884052z5u11bb.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%2Fiuzqezr884052z5u11bb.png" alt="network collection group" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Network collection rule as been added to the firewall policy&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%2Fhmn5bc9k94ftv50bl9qk.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%2Fhmn5bc9k94ftv50bl9qk.png" alt="collection rule" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify the firewall and firewall policy status&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the portal search for and select Firewall.&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%2Fdoeso88kurx6610pzsib.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%2Fdoeso88kurx6610pzsib.png" alt="firewall search" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View the app-vnet-firewall and ensure the Provisioning state is Succeeded. This may take a few minutes.&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%2Fny441lgu2yhe3xlsyjvc.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%2Fny441lgu2yhe3xlsyjvc.png" alt="succeeded" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the portal search for and select Firewall policies.&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%2Fx5utnmuhpqg8lgsicvde.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%2Fx5utnmuhpqg8lgsicvde.png" alt="policies" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View the fw-policy and ensure the Provisioning state is Succeeded. This may take a few minutes&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%2Fehb95eb7eersdy43zyt4.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%2Fehb95eb7eersdy43zyt4.png" alt="pro fw-policy" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
This project successfully delivered a fully operational Azure Firewall within the application’s virtual network, establishing a centralized and resilient security architecture. Key milestones included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploying Azure Firewall to serve as the core security layer.&lt;/li&gt;
&lt;li&gt;Configuring and managing a custom firewall policy.&lt;/li&gt;
&lt;li&gt;Creating an application rule collection to enable secure access to Azure DevOps services.&lt;/li&gt;
&lt;li&gt;Implementing a network rule collection to support DNS resolution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these components strengthen the application's security posture by precisely controlling traffic flow while maintaining essential connectivity. The solution also lays the groundwork for a scalable and maintainable security framework that can adapt to future growth and evolving requirements. Ultimately, this project highlights the strategic role of Azure Firewall in delivering advanced threat protection and centralized network governance in modern cloud environments.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>azure</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Create and Configure Network Security Groups in Azure</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Fri, 10 Oct 2025 19:17:12 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-create-and-configure-network-security-groups-in-azure-27of</link>
      <guid>https://forem.com/adeyemo/how-to-create-and-configure-network-security-groups-in-azure-27of</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
In today’s cloud-first environments, securing and managing network traffic is essential for protecting workloads and maintaining optimal application performance. Azure Network Security Groups (NSGs) serve as virtual firewalls, enabling administrators to control inbound and outbound traffic to Azure resources. When paired with Application Security Groups (ASGs), access policies become easier to manage by grouping similar resources and applying consistent rules across them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Objectives&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a network security group.&lt;/li&gt;
&lt;li&gt;Create network security group rules.&lt;/li&gt;
&lt;li&gt;Associate a network security group to a subnet.&lt;/li&gt;
&lt;li&gt;Create and use application security groups in network security group rules.&lt;/li&gt;
&lt;li&gt;Create a Network Security Group (NSG)&lt;/li&gt;
&lt;li&gt;Provision an NSG that can be associated with the backend subnet of the app-vnet.&lt;/li&gt;
&lt;li&gt;Create Network Security Group Rules&lt;/li&gt;
&lt;li&gt;Define inbound and outbound rules to control traffic flow between the frontend and backend resources.&lt;/li&gt;
&lt;li&gt;Associate a Network Security Group to a Subnet&lt;/li&gt;
&lt;li&gt;Link the NSG to the backend subnet in the app-vnet to secure database server access.&lt;/li&gt;
&lt;li&gt;Create and Use Application Security Groups (ASGs)&lt;/li&gt;
&lt;li&gt;Create an ASG (app-frontend-asg) for web servers in the frontend subnet.&lt;/li&gt;
&lt;li&gt;Associate the ASG with VM1’s network interface.&lt;/li&gt;
&lt;li&gt;Use the ASG in NSG rules to simplify traffic management.&lt;/li&gt;
&lt;li&gt;Deploy and Test Virtual Machines&lt;/li&gt;
&lt;li&gt;Deploy VM1 in the frontend subnet and VM2 in the backend subnet using the provided ARM template.&lt;/li&gt;
&lt;li&gt;Verify traffic control using the configured NSG and ASG rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1 Create the network infrastructure for the exercise&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use the icon (top right) to launch a Cloud Shell session.&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%2F858n57r2ojn46yyfdecm.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%2F858n57r2ojn46yyfdecm.png" alt="cloud shell" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use these commands to deploy the virtual machines required for this exercise. copy and paste the command on the cloudshell.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;New-AzResourceGroupDeployment -ResourceGroupName RG1 -TemplateUri &lt;br&gt;
&lt;a href="https://raw.githubusercontent.com/MicrosoftLearning/Configure-secure-access-to-workloads-with-Azure-virtual-networking-services/main/Instructions/Labs/azuredeploy.json" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/MicrosoftLearning/Configure-secure-access-to-workloads-with-Azure-virtual-networking-services/main/Instructions/Labs/azuredeploy.json&lt;/a&gt;&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%2Flmm03z32dotzm56zoqmc.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%2Flmm03z32dotzm56zoqmc.png" alt="github" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the portal search for and select virtual machines.&lt;/li&gt;
&lt;/ul&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%2Fqwk6iiww11cosvtap2s6.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%2Fqwk6iiww11cosvtap2s6.png" alt="portal search" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify both vm1 and vm2 are Running.
&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%2Fmcvbd7yqw3xlu9v5omyu.png" alt="2 bud" width="800" height="345"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 Create Application Security Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Application security groups (ASGs) let you group together servers with similar functions. For example, all the web servers hosting your application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the portal, search for and select Application security groups.&lt;/li&gt;
&lt;/ul&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%2F1q51hbi4zsvr4iputnio.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%2F1q51hbi4zsvr4iputnio.png" alt="ASG" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;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%2Fpm03te36vcrf0n0wgtwk.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%2Fpm03te36vcrf0n0wgtwk.png" alt="SELECT " width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the application security group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Property Value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subscription Select your subscription&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource group RG1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name app-frontend-asg&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region East US 2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Review + 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%2F4leeuk8zlv3xbypxs5ot.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%2F4leeuk8zlv3xbypxs5ot.png" alt="east us 2" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then 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%2Fwdmywvrrnf0sh3rrtg97.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%2Fwdmywvrrnf0sh3rrtg97.png" alt="tsc" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application security group as been created successfully&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%2Fqbmlr4zz2e2cayg3l0sm.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%2Fqbmlr4zz2e2cayg3l0sm.png" alt="create ASG" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3 Associate the application security group to the network interface of the VM&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure portal, search and select 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%2Fqet8946tlqwuhinsvo4z.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%2Fqet8946tlqwuhinsvo4z.png" alt="AZURE PS" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select LinuxVM1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Networking blade, select Application security groups and then select Add application security groups.&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%2Fprbx4wx6hzedi3dvy44n.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%2Fprbx4wx6hzedi3dvy44n.png" alt="select ASGs" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the app-frontend-asg and then select 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%2Fb9fegku9zoq1o2k9skbw.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%2Fb9fegku9zoq1o2k9skbw.png" alt="app-front" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Application security group as been added to VM1&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%2Fgut72k4j30j6qjmt6yt6.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%2Fgut72k4j30j6qjmt6yt6.png" alt="added asg" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4 Create and Associate the Network Security Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Network security groups (NSGs) secure network traffic in a virtual network.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the portal search for and select Network security 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%2F9ephuuhp4btged30tltv.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%2F9ephuuhp4btged30tltv.png" alt="NSG" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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%2Ftpf6emd4ma6xj1hhyw1b.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%2Ftpf6emd4ma6xj1hhyw1b.png" alt="cs" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the network security group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Property Value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subscription Select your subscription&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource group RG1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name app-vnet-nsg&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region East US 2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Review + 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%2F5kezn7lvt8kot5tdz12g.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%2F5kezn7lvt8kot5tdz12g.png" alt="app nsg" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then 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%2Fbzpfbakqjwpubr7tgt8f.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%2Fbzpfbakqjwpubr7tgt8f.png" alt="nsg tsc" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The network security group as been created successfully&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%2Fitfp34h9dyhcjxhmqh38.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%2Fitfp34h9dyhcjxhmqh38.png" alt="nsg cs" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5 Associate the NSG with the app-vnet backend subnet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NSGs can be associated with subnets and/or individual network interfaces attached to Azure virtual machines.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select Go to resource or navigate to the app-vnet-nsg resource.&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%2Fbf5wxh631p3vnrg934t4.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%2Fbf5wxh631p3vnrg934t4.png" alt="gtr" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Settings blade select Subnets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select + Associate&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select app-vnet (RG1) and then the Backend subnet. Select OK.&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%2Fd053qb592fjssjhr7ged.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%2Fd053qb592fjssjhr7ged.png" alt="backend" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Backend submit as been associated to the network security 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%2Fy6wsc6yil9o08wr96gip.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%2Fy6wsc6yil9o08wr96gip.png" alt="backend submit" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 6 Create Network Security Group rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An NSG use security rules to filter inbound and outbound network traffic.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search box at the top of the portal, enter Network security groups. Select Network security groups in the search results.&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%2Fmows3vpoa8xn0zh03xjq.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%2Fmows3vpoa8xn0zh03xjq.png" alt="nsg 2" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select app-vnet-nsg from the list of network security groups&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%2Fv4phiv8alyyevgl6zgnw.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%2Fv4phiv8alyyevgl6zgnw.png" alt="Inet nsg" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Settings blade, select Inbound security rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select + Add and configure an inbound security rule.&lt;br&gt;
Source: Any&lt;br&gt;
Source port ranges: *&lt;br&gt;
Destination: Application Security group&lt;br&gt;
Destination application security group app-frontend-asg&lt;br&gt;
Service SSH&lt;br&gt;
Action: Allow&lt;br&gt;
Priority: 100&lt;br&gt;
Name: AllowSSH&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fpviibn893jb8yg11y2ne.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%2Fpviibn893jb8yg11y2ne.png" alt="allowssh" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network security group rule as been created
&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%2F4f91ddcyzbwh0tgpefyt.png" alt="nsg rule" width="800" height="330"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Through this exercise, you've gained practical experience in implementing network security within Azure. You’ve successfully:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configured a Network Security Group (NSG) to manage and filter traffic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Created and linked an Application Security Group (ASG) to frontend virtual machines for streamlined policy control.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployed virtual machines across segmented subnets to validate secure communication.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applied custom NSG rules to enable secure SSH access from frontend to backend resources.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project highlights the power of NSGs and ASGs working in tandem to deliver fine-grained control over network traffic. With these skills, you're now equipped to design secure, scalable, and well-managed cloud environments that protect workloads and simplify access across Azure infrastructure.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Create and Configure Virtual Networks in Azure</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Fri, 10 Oct 2025 10:46:14 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-create-and-configure-virtual-networks-in-azure-2ga6</link>
      <guid>https://forem.com/adeyemo/how-to-create-and-configure-virtual-networks-in-azure-2ga6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Azure Virtual Network (VNet) provides a secure and scalable environment for Azure resources to communicate—whether it's with each other, external networks, or on-premises infrastructure. Within a VNet, resources are organized into subnets, allowing for structured and efficient network segmentation.&lt;/p&gt;

&lt;p&gt;In this project, you'll gain hands-on experience with key networking tasks, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;Creating a Resource Group *&lt;/em&gt;– The foundational container for managing related Azure resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setting Up a Virtual Network and Subnets&lt;/strong&gt; – Establishing the core network structure to host your services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuring a Secondary VNet with a Firewall Subnet&lt;/strong&gt; – Enhancing security through network isolation and traffic control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Establishing VNet Peering&lt;/strong&gt; – Enabling seamless communication between two virtual networks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, you'll have a solid grasp of how to architect secure and interconnected environments in Azure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a Resource Group&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sign in to the Azure Portal&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%2Fq1lnvzp75xdmtiz9fk8f.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%2Fq1lnvzp75xdmtiz9fk8f.png" alt="login" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the search bar, search for Resource groups&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%2Fgklrif8ybcva1kivhrx6.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%2Fgklrif8ybcva1kivhrx6.png" alt="search bar" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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%2Ft13b2kpyuvje08byfz29.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%2Ft13b2kpyuvje08byfz29.png" alt="create" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter the following properties:&lt;br&gt;
Property Value&lt;br&gt;
Resource group RG1&lt;br&gt;
Region East US&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Review + create and then 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%2Fkkzz1e9liarsaltvffen.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%2Fkkzz1e9liarsaltvffen.png" alt="REIEW CREATE" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then 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%2Fhmw00nsbol21qix0o5jp.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%2Fhmw00nsbol21qix0o5jp.png" alt="CREATE rg" width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 Create hub and spoke virtual networks and subnets&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An Azure virtual network enables many types of Azure resources to securely communicate with each other, the internet, and on-premises networks. All Azure resources in a virtual network are deployed into subnets within the virtual network.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure portal, Search for and select 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%2Fmc8ord0seu4u0ruz31zq.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%2Fmc8ord0seu4u0ruz31zq.png" alt="Virtual Networks" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create and complete the configuration of the app-vnet. This virtual network requires two subnets, frontend and backend.&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%2Fg6qwytz87ku3vb4qogdk.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%2Fg6qwytz87ku3vb4qogdk.png" alt="Im app-" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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%2Fbban2kxjd7weljc8f27w.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%2Fbban2kxjd7weljc8f27w.png" alt="create" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Basics tab, enter the following information:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select “Review + create"&lt;br&gt;
Property Value&lt;br&gt;
Subscription Select your subscription&lt;br&gt;
Resource group RG1&lt;br&gt;
Name app-vnet&lt;br&gt;
Region East US&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%2F1uowfue9e56qs4m2nu69.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%2F1uowfue9e56qs4m2nu69.png" alt="region" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then 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%2Fgkqc2j4a9mew0rgm77ic.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%2Fgkqc2j4a9mew0rgm77ic.png" alt="create" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on go to resources button&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%2Fx04c0vbkndbk6jfyagp4.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%2Fx04c0vbkndbk6jfyagp4.png" alt="resource button" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Configure IP Address Space&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under settings, Select Address Space&lt;/li&gt;
&lt;li&gt;In the IP Addresses tab, set the following:&lt;/li&gt;
&lt;li&gt;IPv4 address space: 10.1.0.0/16 and Click on save button. This address space will allow multiple subnets within the virtual network.&lt;/li&gt;
&lt;/ul&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%2Fe7pvtnoito43af2do2hg.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%2Fe7pvtnoito43af2do2hg.png" alt="Ip addresses" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Create Subnets&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Still in the IP Addresses tab, add two subnets:&lt;/li&gt;
&lt;li&gt;Subnet name Address range&lt;/li&gt;
&lt;li&gt;frontend 10.1.0.0/24&lt;/li&gt;
&lt;li&gt;backend 10.1.1.0/24&lt;/li&gt;
&lt;li&gt;Leave other settings as defaults.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For Frontend subnet&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under settings, Select Subnet&lt;/li&gt;
&lt;li&gt;Select + Subnet&lt;/li&gt;
&lt;li&gt;Give subnet a name frontend, enter starting address 10.1.0.0, enter size /24 and Click on Add.&lt;/li&gt;
&lt;/ul&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%2Fq0hu7g4p23ljuaomtfrk.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%2Fq0hu7g4p23ljuaomtfrk.png" alt="frontend" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For backend subnet&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under settings, Select Subnet&lt;/li&gt;
&lt;li&gt;Select + Subnet&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give subnet a name backend, enter starting address 10.1.1.0, enter size /24 and Click on 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%2Flm51j9dnm096h2yxcdzl.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%2Flm51j9dnm096h2yxcdzl.png" alt="backend" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frontend and the Backend Subnet as been created successfully&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%2Fy2h2g8zd2sxd4wcv2o5d.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%2Fy2h2g8zd2sxd4wcv2o5d.png" alt="frontend/backend" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Create the Hub-VNet Virtual Network&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create another virtual network called hub-vnet.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Azure portal, Search for and select 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%2Fcf6m0qtttab5hw338m02.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%2Fcf6m0qtttab5hw338m02.png" alt="Nets" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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%2Fvz496pak88d9fq770a6s.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%2Fvz496pak88d9fq770a6s.png" alt="create" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter the following properties:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Property Value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource group RG1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual network name hub-vnet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region East US&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Review + create&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fvws0kanf5pd8qcrpr8gg.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%2Fvws0kanf5pd8qcrpr8gg.png" alt="hub" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Then 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%2Frkxjky6l7kkywdxdlasy.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%2Frkxjky6l7kkywdxdlasy.png" alt="creeeate" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on go to resources button&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%2Fttbr1aswx5nrg0q59qev.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%2Fttbr1aswx5nrg0q59qev.png" alt="resources button" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 6 Configure IP Address Space for the firewall subne&lt;/strong&gt;t&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under settings, Select Address Space&lt;/li&gt;
&lt;li&gt;In the IP Addresses tab, set the following:&lt;/li&gt;
&lt;li&gt;IPv4 address space: 10.0.0.0/16 and Click on save button. This address space will allow multiple subnets within the virtual network.
&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%2Fbqlkvowt8zexqupnmo5w.png" alt="configure" width="800" height="344"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 7 Create firewall subnet&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under settings, Select Subnet&lt;/li&gt;
&lt;li&gt;Select + Subnet&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select subnet purpose azure, enter starting address 10.0.0.0, enter size /26 and Click on 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%2F2cpanm1finm3kvohmfex.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%2F2cpanm1finm3kvohmfex.png" alt="subset azure" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Firewall subnet as been created successfully&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%2F524r325jzui9zgsqji4f.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%2F524r325jzui9zgsqji4f.png" alt="firewall subnet" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 8 Configure a peer relationship between the virtual networks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Search for and select the app-vnet 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%2Fgxtez48j0rxdwi8uce9s.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%2Fgxtez48j0rxdwi8uce9s.png" alt="appnet" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Settings blade, select Peerings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;Add a peering between the two virtual networks.
&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%2Fr5yb7zi4w2uyp7788h18.png" alt="peering" width="800" height="342"&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complete the following Configurations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remote peering link name: app-vnet-to-hub&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual network: hub-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%2Fxpe1p0edeledjub3j7j9.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%2Fxpe1p0edeledjub3j7j9.png" alt="hub" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Local virtual network peering link name: hub-to-app-vnet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Note: Leave all other settings as their defaults. Select “Add” to create the virtual network peering.&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%2Ferrte1lh9cp0ui1yb4dx.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%2Ferrte1lh9cp0ui1yb4dx.png" alt="hub-net" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the deployment completes, verify the Peering status is Connected.&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%2F4iwhi7jybxzm0uboggdp.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%2F4iwhi7jybxzm0uboggdp.png" alt="deployment" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
By completing this project, you've built a solid foundation in cloud networking—gaining practical skills in designing and configuring Azure Virtual Networks. From creating VNets and organizing them into subnets to enabling seamless communication through VNet peering, you've tackled essential components of cloud infrastructure. These capabilities not only strengthen your technical proficiency but also pave the way for more advanced scenarios, such as implementing network security groups, deploying VPN gateways, and integrating hybrid connectivity solutions. Mastering virtual networking is a key milestone on the path to becoming a confident and capable cloud architect.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Configure monitoring for compute services</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Fri, 10 Oct 2025 07:25:29 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-configure-monitoring-for-compute-services-1lko</link>
      <guid>https://forem.com/adeyemo/how-to-configure-monitoring-for-compute-services-1lko</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
In today’s cloud-driven world, monitoring compute services is essential for maintaining performance, availability, and reliability. As businesses increasingly depend on virtual machines and cloud-native applications, having a proactive monitoring strategy becomes non-negotiable. It’s not just about collecting data—it’s about gaining real-time insights, spotting anomalies early, and minimizing downtime before it impacts users or operations.&lt;/p&gt;

&lt;p&gt;This project focuses on building a robust monitoring framework for Azure compute services. By configuring data collection and analysis tools, we aim to improve visibility, streamline troubleshooting, and empower smarter decision-making.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Objectives&lt;/strong&gt;&lt;br&gt;
To achieve this, we’ll walk through the following key tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up a Data Collection Endpoint&lt;/li&gt;
&lt;li&gt;Create a Data Collection Rule&lt;/li&gt;
&lt;li&gt;Add IIS Log Collection to an existing rule&lt;/li&gt;
&lt;li&gt;Configure Network Connection Monitor for a Linux IaaS VM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these steps lay the foundation for a scalable and intelligent monitoring system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create a Data Collection Endpoint&lt;br&gt;
Think of this as installing a mailbox for your telemetry. Without it, logs and performance data stay locked inside individual VMs. With it, everything gets routed to a central hub—like Azure Monitor or Log Analytics—where you can actually analyze and act on the information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Scenario&lt;/strong&gt;&lt;br&gt;
Imagine you’re running several virtual machines. One of them crashes unexpectedly. If you haven’t set up a data collection endpoint, you might not even know it happened until users complain. But with the endpoint in place, the crash logs are automatically sent to your monitoring dashboard—giving you the visibility to respond quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: A Windows VM restarts due to a system failure. Thanks to the data collection endpoint, the event is logged and surfaced in Azure Monitor, allowing your team to investigate and resolve the issue before it escalates.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure Portal Search Bar, enter Monitor and select Monitor from the list of results.&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%2F04lj39ux7epvsh57dx9k.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%2F04lj39ux7epvsh57dx9k.png" alt="monitor" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Monitor page, under Settings, choose Data Collection Endpoints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Data Collection Endpoints page, choose 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%2F8o3stdqyilbpnyzotys5.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%2F8o3stdqyilbpnyzotys5.png" alt="endpoint" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Create Data Collection Endpoint page, provide the following settings and then choose Review + Create.&lt;br&gt;
Property Value&lt;br&gt;
Endpoint name IaaSVMCollectionEndpoint&lt;br&gt;
Subscription Your subscription&lt;br&gt;
Resource Group NK_RG&lt;br&gt;
Region Canada Central&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%2Fl94z42o238dig4rc64t7.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%2Fl94z42o238dig4rc64t7.png" alt="DATA COLLECTION" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review the settings and choose 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%2Fer78fmml3u1qsko0f8g1.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%2Fer78fmml3u1qsko0f8g1.png" alt="SETTING CREATE" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;** Step 2 Create a data collection rule**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;:&lt;br&gt;
The rule decides what kind of data should be collected and where it should go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-life example&lt;/strong&gt;:&lt;br&gt;
You configure a rule to collect Windows Event Logs from your VMs. These logs capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Failed login attempts (security threats )&lt;/li&gt;
&lt;li&gt;Service crashes (like SQL Server suddenly stopping)&lt;/li&gt;
&lt;li&gt;System warnings (like low memory alerts)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: If someone tries to brute-force passwords on your VM, the Windows Security log will show repeated failed login attempts. With a collection rule in place, you’ll spot this early and block the attacker.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure Portal Search Bar, enter Monitor and select Monitor from the list of results.&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%2Fzbjvmgcgh9ge5yegk6vy.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%2Fzbjvmgcgh9ge5yegk6vy.png" alt="MONITOR DATA RULE" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Monitor page, under Settings, choose Data Collection Rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Data Collection Rules page, choose 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%2F9n3suxj35kowupgzpodu.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%2F9n3suxj35kowupgzpodu.png" alt="MONITOR PAGE" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Create Data Collection Rule page, configure the following settings and choose Next.&lt;br&gt;
Property Value&lt;br&gt;
Rule name WinVMDCR&lt;br&gt;
Subscription Your subscription&lt;br&gt;
Resource Group NK_RG&lt;br&gt;
Region Canada Central&lt;br&gt;
Platform type Windows&lt;br&gt;
Data collection endpoint IaaSVMCollectionEndpoint&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%2Fgigw8g767fa5edt7yur8.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%2Fgigw8g767fa5edt7yur8.png" alt="DCR" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Resources page, choose Add Resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Select a scope page, enable the DynamicVM checkbox and choose 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%2F9737p5y53sjzlf2fh1rw.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%2F9737p5y53sjzlf2fh1rw.png" alt="scope page" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Create Data Collection Rule page, choose Next.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Collect and Deliver page, choose Add data source.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Add data source page, select Windows Event Logs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Application category enable the Critical and Error categories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Security category, choose the Audit Failure category.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the System category, enable the Critical and Error categories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Next.&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%2F6uxn74h1rj7vfs98eczb.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%2F6uxn74h1rj7vfs98eczb.png" alt="audit" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Destination page, configure the following settings:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Property Value&lt;br&gt;
Destination type Azure Monitor Logs&lt;br&gt;
Subscription Your subscription&lt;br&gt;
Account or namespace NKlogAnalytic&lt;br&gt;
Choose Add data source.&lt;br&gt;
Choose Review + Create and then choose 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%2Ffnfv2s6f177c2w6366q3.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%2Ffnfv2s6f177c2w6366q3.png" alt="NKLOG" width="800" height="342"&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%2F9rm5rhuq63w5hxpvwcs6.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%2F9rm5rhuq63w5hxpvwcs6.png" alt="crrreate" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Collection rules is created successfully
&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%2Fjnrficriqprdpitsnsov.png" alt="successful data" width="800" height="312"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;step 3 Add an IIS log collection to an existing data collection rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;br&gt;
Captures web server activity logs (IIS).&lt;br&gt;
&lt;strong&gt;Real-life example:&lt;/strong&gt;&lt;br&gt;
Your web app hosted on IIS starts running slow. By looking at IIS logs, you can see:&lt;/p&gt;

&lt;p&gt;Which pages are taking too long to load&lt;br&gt;
If users are getting “500 Internal Server Error"&lt;br&gt;
If there’s unusual traffic (like a sudden spike that might be a DDoS attack)&lt;br&gt;
Example: IIS logs reveal that a particular API endpoint /login is throwing 500 errors frequently. This helps developers fix the bug quickly.&lt;/p&gt;

&lt;p&gt;In the Azure Portal Search Bar, enter Monitor and select Monitor from the list of results.&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%2F7g3d2dco33qm6et8pz16.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%2F7g3d2dco33qm6et8pz16.png" alt="portal search" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Monitor page, under Settings, choose Data Collection Rules.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the WinVMDRC rule in NK_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%2F9a5ft32y475rstofwzre.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%2F9a5ft32y475rstofwzre.png" alt="WIN" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under Configuration, choose Data Sources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Data Sources page, choose Add.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Add Data Source page, select IIS Logs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Next.&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%2Fxzvqhq6am8ccu5stgozs.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%2Fxzvqhq6am8ccu5stgozs.png" alt="IIS" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the Destination page, configure the following settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Property Value&lt;/li&gt;
&lt;li&gt;Destination type Azure Monitor Logs&lt;/li&gt;
&lt;li&gt;Subscription Your subscription&lt;/li&gt;
&lt;li&gt;Account or namespace NKLogworkspaceanalytic&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Add data source.&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%2Fp5ggg7vavlrku60qbnix.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%2Fp5ggg7vavlrku60qbnix.png" alt="destination" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IIS log as been added to the data collection rule.&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%2Fevey4lziodzucfewxdhb.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%2Fevey4lziodzucfewxdhb.png" alt="log added" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4 Configure Network Connection Monitor for a windows/linux IaaS virtual machine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;br&gt;
Checks if your VM’s network connections are healthy and reliable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-life example:&lt;/strong&gt;&lt;br&gt;
If your VM hosts a database, applications must always reach it quickly. The monitor will alert you if:&lt;/p&gt;

&lt;p&gt;The connection is dropping packets&lt;br&gt;
Latency (delay) is too high&lt;br&gt;
The VM is unreachable from certain regions&lt;br&gt;
Example: A user in Europe complains your app is slow. Network Connection Monitor shows high latency between your Windows/Linux VM (in West US) and Europe, confirming it’s a network issue, not the app itself.&lt;/p&gt;

&lt;p&gt;In the Azure Portal Search Bar, enter Network Watcher and select Network Watcher from the list of results.&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%2Ff9n26i8k1p782vh05u0g.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%2Ff9n26i8k1p782vh05u0g.png" alt="network watcher" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under Monitoring, choose Connection Monitor.&lt;/li&gt;
&lt;li&gt;On the Connection Monitor page, choose Create.
&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%2Fawlbs2j5d4it3xvz1s50.png" alt="monitor" width="800" height="340"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the Basics page of the Create Connection Monitor wizard, provide the following information and choose Next.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Property Value&lt;/li&gt;
&lt;li&gt;Connection Monitor name DynamicNetMonitor&lt;/li&gt;
&lt;li&gt;Subscription Your subscription&lt;/li&gt;
&lt;li&gt;Region Canada Central&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Workspace NKLogworkspaceanalytic&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%2F5ustiyd1t1hm2w83orjx.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%2F5ustiyd1t1hm2w83orjx.png" alt="monitor wizard" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Add test group details page, enter the name LinuxIPTest and choose Add sources.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F58smuqln8tqi4clnkp1n.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%2F58smuqln8tqi4clnkp1n.png" alt="LinuxIPTest" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the Add Sources page, select Azure Endpoints and set the type to Virtual machines. Select Subnet and then enable the DynamicLinuxVm checkbox. Choose Add Endpoints.&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%2Fotxs1o68t2bobvdwa3bi.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%2Fotxs1o68t2bobvdwa3bi.png" alt="CHECKBOX" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choose Add Test 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%2Fh7pn23bwuyzyuaxehe8w.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%2Fh7pn23bwuyzyuaxehe8w.png" alt="add test configuration" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Add Test Configuration page, enter the name DefaultHTTP and then choose Add Test 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%2F0dz12tax8en72405roy5.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%2F0dz12tax8en72405roy5.png" alt="default http" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Add Destinations.&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%2Fq6ndypuo4ymv4pb5xuix.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%2Fq6ndypuo4ymv4pb5xuix.png" alt="add destination" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Azure Endpoints and set the type to Virtual machines. Select Subnet and then enable the DynamicLinuxVm checkbox. Select Add Endpoints.&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%2Fla9lu7a9i7muo8ifnl92.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%2Fla9lu7a9i7muo8ifnl92.png" alt="enndpoint" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Add Test 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%2F9dfjns1cdmg2e0nn4bzj.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%2F9dfjns1cdmg2e0nn4bzj.png" alt="test grroup" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Review and Create then choose 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%2Fxy3gedrhe40faleq0x6r.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%2Fxy3gedrhe40faleq0x6r.png" alt="test endp" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then choose 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%2Fmbbka4hg3fcxzu34waje.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%2Fmbbka4hg3fcxzu34waje.png" alt="choose create" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connection Monitor is created successfully&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%2Fye5o2klfbcm68x5jlzwc.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%2Fye5o2klfbcm68x5jlzwc.png" alt="monitor created" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
This project showcases a comprehensive approach to monitoring compute services through structured data collection and analysis. By establishing a robust data collection endpoint, defining monitoring rules, incorporating IIS log tracking, and deploying a Network Connection Monitor for Linux-based IaaS, we have developed a dependable solution that enhances operational transparency. These capabilities empower administrators with real-time visibility into system performance and security, enabling swift issue detection and resolution. Ultimately, the project underscores the critical role of proactive monitoring in maintaining stability, optimizing performance, and ensuring user satisfaction within modern cloud infrastructures.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Configure Alert in Azure</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Thu, 09 Oct 2025 12:45:10 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-configure-alert-in-azure-30bp</link>
      <guid>https://forem.com/adeyemo/how-to-configure-alert-in-azure-30bp</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
In cloud-based systems, keeping resources healthy and responsive is essential. Azure Alerts offer a smart way to stay ahead of performance issues by continuously monitoring workloads and notifying you when something needs attention. With the right alert configuration, your team can react swiftly to potential disruptions—minimizing downtime and maximizing efficiency.&lt;/p&gt;

&lt;p&gt;This guide walks you through configuring alerts for Azure compute services, with a focus on tracking virtual machine (VM) performance and ensuring notifications reach the right people at the right time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Goals&lt;/strong&gt;&lt;br&gt;
Here’s what we aim to achieve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set up an action group that sends email notifications when alerts are triggered.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a performance alert for VM CPU usage to monitor system health in real time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create an Action Group for Email Notifications&lt;br&gt;
Think of this as assigning your cloud emergency contacts. When Azure detects a problem, it automatically sends an email to the designated recipients—so they can jump in and fix things fast.&lt;/p&gt;

&lt;p&gt;Setting up an action group ensures that alerts don’t just sit in a dashboard—they reach the people who can act on them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure Portal Search Bar, enter Monitor and select Monitor from the list of results.&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%2F2678q9gesd8ymd67zd7f.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%2F2678q9gesd8ymd67zd7f.png" alt="Azure Monitor" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Alerts in the navigation menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Action Groups.&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%2Fuj0r4v5whb4jtx1xb2kz.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%2Fuj0r4v5whb4jtx1xb2kz.png" alt="action groups" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Action Groups page, choose 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%2Fkukamftvom0rknn6l5iv.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%2Fkukamftvom0rknn6l5iv.png" alt="create" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Basics page of the Create Action Group wizard, configure the following settings and choose Next.&lt;br&gt;
Property Value&lt;br&gt;
Subscription Your subscription&lt;br&gt;
Resource Group NK_RG&lt;br&gt;
Region Global&lt;br&gt;
Action group name NotifyCPU&lt;br&gt;
Display Name NotifyCPU&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%2F5s5k7f2cmf24hpifvkxo.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%2F5s5k7f2cmf24hpifvkxo.png" alt="NOTIFYCPU" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Notifications page, set the notification type to Email/SMS message/Push/Voice and the Name to NotificationEmail. Choose the Edit (pencil) icon.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Email/SMS message/Push/Voice enable the email checkbox and enter the address &lt;a href="mailto:koladeadeyemo99@gmail.com"&gt;koladeadeyemo99@gmail.com&lt;/a&gt;. Choose OK.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Review and Create. Choose 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%2Fbhs03mxiaf25667pygq2.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%2Fbhs03mxiaf25667pygq2.png" alt="NotificationEmail" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose 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%2Fpvto4dqymu7pkzgokti2.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%2Fpvto4dqymu7pkzgokti2.png" alt="create" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Action group as been successfully created&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%2Fomqy3xmqpwu2t2axbzx4.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%2Fomqy3xmqpwu2t2axbzx4.png" alt="action group created" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Notification email sent to the person added under the action 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%2Feoiycrtejetvg2oa0oqn.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%2Feoiycrtejetvg2oa0oqn.png" alt="NotificationEmail" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; Create an alert for virtual machine CPU utilization&lt;/p&gt;

&lt;p&gt;This means: “Tell Azure to watch the computer’s brain (CPU).”&lt;br&gt;
If the CPU is working too hard (too much usage), Azure will raise a flag and send the alert to the action group (the people you set up in Task 1). This helps you know early when your virtual machine is struggling, so you can fix it before it crashes or slows down.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure Portal Search Bar, enter Resource Group select NK_RG from the list of results.&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%2Fawni8uu6fr4cens3isnx.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%2Fawni8uu6fr4cens3isnx.png" alt="Resource Group" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select NK_RG from the list of results.&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%2F2nzmdo81l1l7beqdzad2.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%2F2nzmdo81l1l7beqdzad2.png" alt="NK" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the list of items in the resource group, choose DynamicVm.&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%2F7pk9zx2ammiysdu6q5fs.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%2F7pk9zx2ammiysdu6q5fs.png" alt="Image descrip" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the DynamicVm properties page, choose Alerts under Monitoring.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Alerts page, choose Create and then choose Alert rule.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Frpryfigjlk0xbe9dgdd8.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%2Frpryfigjlk0xbe9dgdd8.png" alt="alert rrule" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On the Condition page of the Create an Alert Rule wizard, set the Signal name to Percentage CPU. Use the default settings and choose Next.&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%2F292vvnfz2l6xke5kftah.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%2F292vvnfz2l6xke5kftah.png" alt="percentage CPU" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Actions page, choose Select Action Group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Select Action Groups page, choose NotifyCPU and choose Select.&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%2Fh2wm22m7n8rlrx5mfmzm.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%2Fh2wm22m7n8rlrx5mfmzm.png" alt="SELECT" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Details page enter the Alert rule name HighCPU. Choose Review and Create. choose 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%2Fjydy0v4m3lndgjyc1oxh.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%2Fjydy0v4m3lndgjyc1oxh.png" alt="HighCPU" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose 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%2Fecn1qscucbw01z3e516m.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%2Fecn1qscucbw01z3e516m.png" alt="choose create" width="800" height="576"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Alert rule as been created successfully&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%2Feq86nmqjdadq4x1n2wv5.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%2Feq86nmqjdadq4x1n2wv5.png" alt="Alert rule done" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
This project showcased how to effectively set up alerts in Microsoft Azure to strengthen your system’s monitoring and response strategy. By creating an action group, we ensured that key team members are promptly notified when issues arise. Configuring a CPU utilization alert provided real-time visibility into virtual machine performance, helping to detect and address bottlenecks before they escalate.&lt;/p&gt;

&lt;p&gt;Ultimately, this approach reinforces the value of proactive monitoring—keeping systems reliable, minimizing downtime, and supporting seamless business operations.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to create a Web app using Azure App service.</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Wed, 03 Sep 2025 14:10:22 +0000</pubDate>
      <link>https://forem.com/adeyemo/how-to-create-a-web-app-using-azure-app-service-9la</link>
      <guid>https://forem.com/adeyemo/how-to-create-a-web-app-using-azure-app-service-9la</guid>
      <description>&lt;p&gt;In today’s rapidly evolving digital world, developers and businesses need agile, scalable, and cost-efficient ways to bring their applications to life. Enter Microsoft Azure App Service—a fully managed platform that streamlines the entire web app lifecycle. From building and deploying to scaling and maintaining, Azure App Service takes the complexity out of infrastructure so you can focus on writing great code.&lt;/p&gt;

&lt;p&gt;Supporting a wide range of programming languages, integrating effortlessly with popular development tools, and offering built-in DevOps workflows, Azure App Service empowers developers to go from local development to global deployment with ease. In this guide, we’ll walk through the step-by-step process of creating a web app using Azure App Service, giving you both practical insights and hands-on experience in modern cloud development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Sign in to Azure Portal&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%2Fp14not2b7nh5zakobq68.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%2Fp14not2b7nh5zakobq68.png" alt="login " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Create the a resource group&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure Portal, search resource group and select 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%2Fst7jaeyrshuiiihsakdn.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%2Fst7jaeyrshuiiihsakdn.png" alt="SEARCH" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click + 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%2Fakcbnlxstj0e26v2dx7k.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%2Fakcbnlxstj0e26v2dx7k.png" alt="Create" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select subscription, Give your resource group a name WebAppRG, and select a region, click review + 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%2Fqix3lntx1drokovr2jkw.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%2Fqix3lntx1drokovr2jkw.png" alt="subscription" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click create to create your 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%2Fm2div31j2i2fbx7vhi9u.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%2Fm2div31j2i2fbx7vhi9u.png" alt="create RG" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Create the Web App&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Azure Portal, search App Services and select 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%2Fg3qe1rzzctysdw532ry6.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%2Fg3qe1rzzctysdw532ry6.png" alt="app ser" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click + Create, under the drop-down select Web App&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%2Fpliweldca83w8va0rf8n.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%2Fpliweldca83w8va0rf8n.png" alt="create web app" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under the basic tab, select the resource group created in step 2 (WebAppRG).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give your Web App a name &lt;em&gt;RentalWebApp&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under publish select code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose your runtime stack .NET 9 STS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Operating System (Windows)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;select your desired region.&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%2F7gtprormmqz6ekgakpc9.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%2F7gtprormmqz6ekgakpc9.png" alt="creation" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create your own App service plan by clicking (create new) and name it Rentalwebplan, Click Ok. and Review + 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%2F9ehpein903ct4ftlg67n.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%2F9ehpein903ct4ftlg67n.png" alt="webplan" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click 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%2Fczya4i3tu7262to3zq6h.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%2Fczya4i3tu7262to3zq6h.png" alt="click create" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After Deployment Click on go to resources to see the Web App&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%2Fn3vtwyrorjfph31rp9m6.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%2Fn3vtwyrorjfph31rp9m6.png" alt="deployment and go to resource" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under Development tools select Advance tools and click on go&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%2Fya3ikgxkpww5pf06ujun.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%2Fya3ikgxkpww5pf06ujun.png" alt="deployment advance tool" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will be asked to sign in again into your azure account, select your azure account to sign in or it might go directly to the web page&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once sign in, you will be redicted to the advance tool web page.&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%2Fxcdtaeabi4zti4as2j76.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%2Fxcdtaeabi4zti4as2j76.png" alt="kudu web page" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Debug Console and Click on CMD&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%2Fpmabrjsxmvqrewx8sco9.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%2Fpmabrjsxmvqrewx8sco9.png" alt="cmd" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on sites&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%2Fwjt33jw93yrthy6fu23b.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%2Fwjt33jw93yrthy6fu23b.png" alt="on sites" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on wwwroot.&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%2Fla9dkuiz1d3xq5hwhxvl.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%2Fla9dkuiz1d3xq5hwhxvl.png" alt="wwwroot" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the Edit pencil to edit the default template code or clear the default template code.&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%2Fenw2m1g033im8baodup6.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%2Fenw2m1g033im8baodup6.png" alt="edit pencil" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clear the default code.&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%2Faeq40vnbrd73hovdk9ka.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%2Faeq40vnbrd73hovdk9ka.png" alt="clear default code" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy and Paste your RentalWebApp code and save&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%2F0zkrt859lrqv2w3455un.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%2F0zkrt859lrqv2w3455un.png" alt="web app code" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Navigate back to your App service and Select your Web App&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%2Fpdo6w5pdpyrfnqcflrhc.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%2Fpdo6w5pdpyrfnqcflrhc.png" alt="navigate to web app" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Copy the Default domain&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%2Fdlfzj9u0hsyusul0bmlp.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%2Fdlfzj9u0hsyusul0bmlp.png" alt="copy default domain" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;paste default domain in a web browser to see your RentalwebApp running.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fjkgmnufp5hgczzry44jr.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%2Fjkgmnufp5hgczzry44jr.png" alt="browsing domain" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Building a web app with Azure App Service isn’t just a technical task—it’s a gateway to delivering fast, secure, and scalable experiences to users across the globe. From initial setup to live deployment, Azure strips away the infrastructure hassle and lets developers zero in on what matters most: creating impactful solutions.&lt;br&gt;
By walking through this guide, you’ve laid the groundwork for confidently launching, managing, and growing cloud-based applications. Whether you're just dipping your toes into cloud development or refining your workflow as a seasoned pro, Azure App Service equips you with the flexibility and power to bring your ideas to life—quickly and reliably.&lt;br&gt;
Keep exploring, keep building, and let the cloud work for you.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>staticwebapps</category>
      <category>career</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Custom VM Image Creation and Deployment Using Azure Compute Gallery and Virtual Machine Scale Sets</title>
      <dc:creator>Oluwanifesimi</dc:creator>
      <pubDate>Fri, 22 Aug 2025 16:59:29 +0000</pubDate>
      <link>https://forem.com/adeyemo/custom-vm-image-creation-and-deployment-using-azure-compute-gallery-and-virtual-machine-scale-sets-2417</link>
      <guid>https://forem.com/adeyemo/custom-vm-image-creation-and-deployment-using-azure-compute-gallery-and-virtual-machine-scale-sets-2417</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will guide you through the steps to build a reusable image from an Azure Virtual Machine (VM) and save it in an Azure Compute Gallery (previously called Shared Image Gallery). By doing this, you can replicate VM setups and launch multiple identical VMs quickly and consistently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's what we'll cover&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up an Azure Compute Gallery&lt;/li&gt;
&lt;li&gt;Capturing a VM image from an existing virtual machine&lt;/li&gt;
&lt;li&gt;Uploading and storing the image in the gallery&lt;/li&gt;
&lt;li&gt;Using the custom image to deploy a Virtual Machine Scale Set (VMSS)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;:&lt;strong&gt;Setting up an Azure Compute Gallery&lt;/strong&gt;&lt;br&gt;
An Azure Compute Gallery (formerly Shared Image Gallery) image is a managed resource that stores and organizes custom VM images in Azure&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search bar, type "Azure Compute Galleries" and select 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%2Fc6bby01efhrz23obw4hl.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%2Fc6bby01efhrz23obw4hl.png" alt="search azure compute" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click + 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%2F9e9q3re28sj5znjn4dlh.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%2F9e9q3re28sj5znjn4dlh.png" alt="Azure create" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fill in the details:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subscription: Select your subscription&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource group: Select existing or create new&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: Enter a name (e.g., "AlphaGallery")&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region: Select a region (e.g., West US)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Review + 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%2Fsnogq3ucvf4vbke4eorq.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%2Fsnogq3ucvf4vbke4eorq.png" alt="Azure fill in details" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then 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%2F6uc0bqtktln98hxy4gok.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%2F6uc0bqtktln98hxy4gok.png" alt="create" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on go to resources to see the created gallery.&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%2F8514hybetqb4yq8f9z4x.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%2F8514hybetqb4yq8f9z4x.png" alt="go to resource" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compute Gallery is created successfully (AlphaGallery)&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%2Fhl2zlnl89cb0ua9446sh.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%2Fhl2zlnl89cb0ua9446sh.png" alt="Gallery created" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: &lt;strong&gt;Create a VM Image from an Existing VM&lt;/strong&gt;&lt;br&gt;
Creating a vm image means you want to create a replica of the original image with the same configuration and settings.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search bar, type "Virtual Machine" and select 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%2Fertydzdlprx1087px7l7.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%2Fertydzdlprx1087px7l7.png" alt="vm" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the existing 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%2Fcj0gc587r3b8pfi6g5v9.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%2Fcj0gc587r3b8pfi6g5v9.png" alt="existing" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;click Capture drop down and select image.&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%2Fcvgi4e1prs6gq69kp92u.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%2Fcvgi4e1prs6gq69kp92u.png" alt="capture" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the "Create image" blade:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select resource group (AlphaRG)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Operating system state (I picked specialised because i dont want the users of the image to login into the vm with any credentials) Generalised requires Login Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create new Target Vm image definition&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%2Fv1m4huz785kkge78ohoy.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%2Fv1m4huz785kkge78ohoy.png" alt="generate image" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give the target vm image definition a name (AlphaImageDefinition)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click OK&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%2Fl6j6boi6z9e8tzxg00rc.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%2Fl6j6boi6z9e8tzxg00rc.png" alt="name image" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;set version number to 0.0.1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Create + review&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%2Ftela2mctcj9d174qqwa3.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%2Ftela2mctcj9d174qqwa3.png" alt="create + Re" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click 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%2Fgtkqi03gianc7k12vgku.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%2Fgtkqi03gianc7k12vgku.png" alt="select Create image" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click go to resources to see your image&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%2Ftmolrl2wujxj3ea5lglk.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%2Ftmolrl2wujxj3ea5lglk.png" alt="resource image" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: &lt;strong&gt;Deploy a VM Scale Set from the Custom Image&lt;/strong&gt;&lt;br&gt;
A Virtual Machine Scale Set (VMSS) is an Azure service that allows the automatic deployment and scaling of identical VMs based on demand.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the search bar, type "Azure Compute Galleries" and select 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%2Fl21ui92h416mvw6gqu4z.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%2Fl21ui92h416mvw6gqu4z.png" alt="search azure compp" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select your gallery (AlphaGallery)&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%2F2id2ghzh0uq8fjxymz6h.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%2F2id2ghzh0uq8fjxymz6h.png" alt="Gallery" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select your image (AlphaImageDefinition)&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%2F5jrwklegl8sb343t46tm.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%2F5jrwklegl8sb343t46tm.png" alt="AlphaImage" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on + Create VMSS to create a virtual machine scale set.&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%2Frrfd3mg4jgdyb9e3orx2.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%2Frrfd3mg4jgdyb9e3orx2.png" alt="create mss" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select resource group (NK_RG)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give your Virtual Machine scale set a name (Alphascaleset)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select availability zone (zone 1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ocherstration mode is set to uniform&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%2Fez8for5w6snsw7p9d4o2.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%2Fez8for5w6snsw7p9d4o2.png" alt="ochestration" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scaling mode is set to manual&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instant count is set to 3 (set based on your preference&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select AlphaImageDefinition for the image&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%2Fslqex741qqdk7d3rvam6.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%2Fslqex741qqdk7d3rvam6.png" alt="scaleset setting" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The administration account is grade-out because we select specialised mode when creating the image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click review + 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%2F2t4wg3kq3wogdgjsqf4s.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%2F2t4wg3kq3wogdgjsqf4s.png" alt="reiew + CREATE " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click 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%2Fb639xsx257zziyk7zv9g.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%2Fb639xsx257zziyk7zv9g.png" alt="create ssss" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on go to resources to view your deployed virtual machine scale set&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%2Fvc5hou3aedfd3fngpaf2.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%2Fvc5hou3aedfd3fngpaf2.png" alt="gt resource" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Three instance of Virtual machine scale set as been created succesfully&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on status to view the Three vmss&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%2F22756dhtqg83mpivuofu.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%2F22756dhtqg83mpivuofu.png" alt="click status" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Ftw2dnz2xr2j7hczjtjet.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%2Ftw2dnz2xr2j7hczjtjet.png" alt="3 cmss" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
This project successfully demonstrated the creation of a reusable image from an Azure Virtual Machine and its integration into an Azure Compute Gallery. The image was then deployed through a Virtual Machine Scale Set, enabling consistent replication of VM configurations across multiple instances. This approach enhances scalability, simplifies infrastructure management, and ensures uniformity in deployment environments. The outcome validates the effectiveness of Azure Compute Gallery in streamlining VM provisioning for enterprise-grade solutions.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>computegallery</category>
      <category>vmss</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
