<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[silias809]]></title><description><![CDATA[silias809]]></description><link>https://silias809-cloud-newbie.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Fri, 19 Jun 2026 17:27:14 GMT</lastBuildDate><atom:link href="https://silias809-cloud-newbie.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🚀 Deploying a Secure AWS Architecture with Bastion Host, Private EC2, NAT Gateway & Application Load Balancer (Step-by-Step Guide)]]></title><description><![CDATA[In this detailed guide, I’ll walk you through how I built a secure production-style AWS architecture where:

Private EC2 instances have no public IP

They can still access the internet via NAT Gateway

SSH access is only possible through a Bastion Ho...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/deploying-a-secure-aws-architecture-with-bastion-host-private-ec2-nat-gateway-and-application-load-balancer-step-by-step-guide</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/deploying-a-secure-aws-architecture-with-bastion-host-private-ec2-nat-gateway-and-application-load-balancer-step-by-step-guide</guid><category><![CDATA[AWS]]></category><category><![CDATA[ec2]]></category><category><![CDATA[Load Balancing]]></category><category><![CDATA[Bastion Hosts]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Sat, 14 Feb 2026 18:16:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1771068744009/bb39374e-233e-414f-bc91-a0d45d80c728.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this detailed guide, I’ll walk you through how I built a <strong>secure production-style AWS architecture</strong> where:</p>
<ul>
<li><p>Private EC2 instances have <strong>no public IP</strong></p>
</li>
<li><p>They can still <strong>access the internet via NAT Gateway</strong></p>
</li>
<li><p>SSH access is only possible through a <strong>Bastion Host</strong></p>
</li>
<li><p>I automated configuration using <strong>Ansible</strong></p>
</li>
<li><p>I exposed the application securely using an <strong>Application Load Balancer</strong></p>
</li>
</ul>
<p>This setup follows real-world <strong>DevOps and cloud security best practices</strong>.</p>
<hr />
<h1 id="heading-final-architecture-overview">🏗 Final Architecture Overview</h1>
<h3 id="heading-architecture-components">Architecture Components</h3>
<ul>
<li><p>Custom VPC</p>
</li>
<li><p>Public Subnet (Bastion Host, NAT Gateway, ALB)</p>
</li>
<li><p>Private Subnet (2 Ubuntu EC2 Instances)</p>
</li>
<li><p>Internet Gateway</p>
</li>
<li><p>NAT Gateway</p>
</li>
<li><p>Public &amp; Private Route Tables</p>
</li>
<li><p>Ansible Automation</p>
</li>
<li><p>Application Load Balancer</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771091215779/22edb932-498e-4082-9a36-96af569259bf.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<hr />
<h1 id="heading-step-1-create-a-custom-vpc">✅ STEP 1: Create a Custom VPC</h1>
<p>Instead of using the default VPC, I created a new one for full control.</p>
<h3 id="heading-configuration">Configuration:</h3>
<ul>
<li><p>Name: <code>Custom-Bastion-VPC</code></p>
</li>
<li><p>IPv4 CIDR Block: <code>10.0.0.0/16</code></p>
</li>
<li><p>Enable DNS Hostnames: Yes</p>
</li>
<li><p>Enable DNS Resolution: Yes</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771071312095/4e87b6a8-e9ba-42fa-8551-73c56cd15d04.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-2-create-public-and-private-subnets">✅ STEP 2: Create Public and Private Subnets</h1>
<p>Inside the VPC, I created two subnets.</p>
<h3 id="heading-public-subnet">🔓 Public Subnet</h3>
<ul>
<li><p>Name: <code>Public-Subnet</code></p>
</li>
<li><p>CIDR: <code>10.0.1.0/24</code></p>
</li>
<li><p>Used for:</p>
<ul>
<li><p>Bastion Host</p>
</li>
<li><p>NAT Gateway</p>
</li>
<li><p>Application Load Balancer</p>
</li>
</ul>
</li>
</ul>
<h3 id="heading-private-subnet">🔒 Private Subnet</h3>
<ul>
<li><p>Name: <code>Private-Subnet</code></p>
</li>
<li><p>CIDR: <code>10.0.2.0/24</code></p>
</li>
<li><p>Used for:</p>
<ul>
<li>2 Private EC2 Instances</li>
</ul>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771071580034/d378ecd9-39cd-4646-b895-94de06224a13.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-3-create-and-attach-internet-gateway">✅ STEP 3: Create and Attach Internet Gateway</h1>
<p>To allow internet access:</p>
<ol>
<li><p>Create Internet Gateway</p>
</li>
<li><p>Attach it to <code>Custom-Bastion-VPC</code></p>
</li>
</ol>
<p>This enables internet connectivity for public subnet resources.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771072005191/6c3e2a56-052e-47f3-a8e0-a4d45da59a1f.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-4-create-a-nat-gateway-for-private-internet-access">✅ STEP 4: Create a NAT Gateway (For Private Internet Access)</h1>
<p>Since private instances should not have public IPs, I created a NAT Gateway.</p>
<h3 id="heading-steps">Steps:</h3>
<ol>
<li><p>Allocate an Elastic IP</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771072145231/bf64a5a2-3334-41fc-9791-1664cd556788.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Create NAT Gateway</p>
</li>
<li><p>Place it inside the Public Subnet</p>
</li>
<li><p>Attach the Elastic IP</p>
</li>
</ol>
<h3 id="heading-why">Why?</h3>
<p>This allows:</p>
<ul>
<li><p>Private instances → Outbound internet access</p>
</li>
<li><p>Internet → Cannot directly access private instances</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771072280437/eae86557-097b-4cf3-a0e7-5a0cc83e9ce0.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771072534315/168236fd-af91-496f-a3ce-450f7a27a49b.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-5-configure-route-tables">✅ STEP 5: Configure Route Tables</h1>
<h2 id="heading-public-route-table">🌍 Public Route Table</h2>
<ul>
<li><p>Route: <code>0.0.0.0/0 → Internet Gateway</code></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771073617783/a5e3086c-84d7-47cf-96a8-7b61555c7c7e.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Associate with Public Subnet</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771073674608/42567f9c-44ec-4686-9178-a68e35d9e08e.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<h2 id="heading-private-route-table">🔐 Private Route Table</h2>
<ul>
<li><p>Route: <code>0.0.0.0/0 → NAT Gateway</code></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771073947469/21d2a61e-c7b6-4bf4-a1aa-d0edd0c3ab78.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Associate with Private Subnet</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771074015201/24bc2230-f274-4ce1-acbe-791e70e1c56b.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<p>Now:</p>
<ul>
<li><p>Public subnet → Internet via IGW</p>
</li>
<li><p>Private subnet → Internet via NAT</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771074350790/007cac03-65f3-4fa8-bccf-b9dabc4ffdd6.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<hr />
<h1 id="heading-step-6-launch-the-bastion-host">✅ STEP 6: Launch the Bastion Host</h1>
<p>Now I launched an Ubuntu EC2 instance in the Public Subnet.</p>
<h3 id="heading-configuration-1">Configuration:</h3>
<ul>
<li><p>AMI: Ubuntu Server</p>
</li>
<li><p>Subnet: Public Subnet</p>
</li>
<li><p>Auto-assign Public IP: Enabled</p>
</li>
<li><p>Security Group:</p>
<ul>
<li><p>Allow SSH (Port 22)</p>
</li>
<li><p>Source: My Public IP only</p>
</li>
</ul>
</li>
</ul>
<p>This ensures only I can SSH into the Bastion.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771074827686/76c535a2-7673-4895-96b7-23cdfab248b4.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-7-launch-two-private-ec2-instances">✅ STEP 7: Launch Two Private EC2 Instances</h1>
<p>Next, I launched 2 Ubuntu EC2 instances inside the Private Subnet.</p>
<h3 id="heading-configuration-2">Configuration:</h3>
<ul>
<li><p>Subnet: Private Subnet</p>
</li>
<li><p>Auto-assign Public IP: Disabled</p>
</li>
<li><p>Security Group:</p>
<ul>
<li><p>Allow SSH (Port 22)</p>
</li>
<li><p>Source: Bastion Host Security Group</p>
</li>
<li><p>Allow HTTP (Port 80) from ALB Security Group</p>
</li>
</ul>
</li>
</ul>
<p>This ensures:</p>
<ul>
<li><p>Only Bastion can SSH into them</p>
</li>
<li><p>Only Load Balancer can access port 80</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771075543959/b831c19e-1e96-4c25-a968-f30c33bd0599.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-8-ssh-into-bastion-and-access-private-servers">✅ STEP 8: SSH into Bastion and Access Private Servers</h1>
<p>First, SSH into Bastion:</p>
<pre><code class="lang-plaintext">ssh -i key.pem ubuntu@&lt;Bastion-Public-IP&gt;
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771075851502/c2ddfe74-0db3-41b4-a1b2-67b47a1bef7b.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771075869394/fd0bc703-1f95-4d89-b67f-cc77e178bf38.png" alt class="image--center mx-auto" /></p>
<p>Then SSH into private server from Bastion:</p>
<pre><code class="lang-plaintext">ssh -i key.pem ubuntu@10.0.2.10
</code></pre>
<p>This confirms secure internal-only access.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771076256677/6c3add90-23ec-40ce-b906-82933a470eee.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771076256664/834b946e-4529-4371-8976-abb05268cf8c.png" alt class="image--center mx-auto" /></p>
<p>Second private instance</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771076527447/4096ad28-e636-471b-926c-e16cb5ebe7a9.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771076639418/2b10107d-cc07-41a3-92d3-3ca2019acecd.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-9-install-ansible-on-bastion-host">✅ STEP 9: Install Ansible on Bastion Host</h1>
<p>Inside Bastion:</p>
<pre><code class="lang-plaintext">sudo apt update
sudo apt install ansible -y
</code></pre>
<p>Verify:</p>
<pre><code class="lang-plaintext">ansible --version
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771077067409/597e3708-9145-450a-bc96-302044cbfe32.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-10-configure-ansible-to-install-nginx">✅ STEP 10: Configure Ansible to Install Nginx</h1>
<h2 id="heading-create-inventory-file">Create Inventory File</h2>
<pre><code class="lang-plaintext">nano inventory.ini
</code></pre>
<pre><code class="lang-plaintext">[webservers]
web1 ansible_host=10.0.2.199
web2 ansible_host=10.0.2.153

[all:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=/home/ubuntu/Server-key.pem
ansible_python_interpreter=/usr/bin/python3
</code></pre>
<hr />
<h2 id="heading-create-playbook">Create Playbook</h2>
<pre><code class="lang-plaintext">nano install-nginx.yml
</code></pre>
<pre><code class="lang-plaintext">- name: Install and configure web servers
  hosts: webservers
  become: yes

  tasks:
    - name: Update apt cache
      apt:
        update_cache: yes

    - name: Install Nginx
      apt:
        name: nginx
        state: present

    - name: Start and enable Nginx
      service:
        name: nginx
        state: started
        enabled: yes
</code></pre>
<hr />
<h2 id="heading-run-playbook">Run Playbook</h2>
<pre><code class="lang-plaintext">ansible-playbook -i inventory.ini install-nginx.yml
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771077998222/990a691d-61d1-4e99-859c-397bc43496bf.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-11-modify-nginx-default-page">✅ STEP 11: Modify Nginx Default Page</h1>
<p>On each private server:</p>
<pre><code class="lang-plaintext">sudo nano /var/www/html/index.nginx-debian.html
</code></pre>
<p>Change content:</p>
<p>Server 1:</p>
<pre><code class="lang-plaintext">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;My Cloud Web Page&lt;/title&gt;
    &lt;style&gt;
        body {
            font-family: Arial, sans-serif;
            background: #f4f6f8;
            text-align: center;
            padding: 50px;
        }
        .card {
            background: white;
            padding: 30px;
            border-radius: 10px;
            width: 60%;
            margin: auto;
            box-shadow: 0 0 15px rgba(0,0,0,0.1);
        }
        h1 { color: #2c3e50; }
        p { font-size: 18px; }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class="card"&gt;
    &lt;h1&gt;Hello 👋 I'm NAME&lt;/h1&gt;

    &lt;p&gt;&lt;strong&gt;Instance Hostname:&lt;/strong&gt; HOSTNAME&lt;/p&gt;

    &lt;p&gt;&lt;strong&gt;Private IP:&lt;/strong&gt; HOST_IP&lt;/p&gt;

    &lt;h2&gt;About Me&lt;/h2&gt;
    &lt;p&gt;
        I am a Cloud Computing student and aspiring DevOps Engineer.
        I enjoy building secure AWS infrastructure, automating deployments,
        and learning modern cloud technologies.
    &lt;/p&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Server 2:</p>
<pre><code class="lang-plaintext">This is Private Server 2
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771079702891/51b35da4-8098-40fa-84a9-60411e71e943.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-12-create-target-group">✅ STEP 12: Create Target Group</h1>
<p>Now I configured a Target Group:</p>
<ul>
<li><p>Target type: Instances</p>
</li>
<li><p>Protocol: HTTP</p>
</li>
<li><p>Port: 80</p>
</li>
<li><p>Registered both private instances</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771080957626/2996e074-603d-40de-a942-a0973033a996.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<hr />
<h1 id="heading-step-13-create-application-load-balancer">✅ STEP 13: Create Application Load Balancer</h1>
<p>Configuration:</p>
<ul>
<li><p>Type: Application Load Balancer</p>
</li>
<li><p>Scheme: Internet-facing</p>
</li>
<li><p>Subnets: Public Subnet</p>
</li>
<li><p>Security Group:</p>
<ul>
<li>Allow HTTP (Port 80)</li>
</ul>
</li>
</ul>
<p>Attach:</p>
<ul>
<li>Previously created Target Group</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771081687650/a36dc992-503e-4501-8b3c-81fc7df76140.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-step-14-access-the-application">✅ STEP 14: Access the Application</h1>
<p>Copy the ALB DNS name:</p>
<pre><code class="lang-plaintext">http://&lt;ALB-DNS-Name&gt;
</code></pre>
<p>Result:</p>
<ul>
<li><p>Traffic distributed between both servers</p>
</li>
<li><p>No public IP exposed on private instances</p>
</li>
<li><p>Fully secure architecture</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771088378271/90b257f5-e590-4044-8df1-b9832fc35fc3.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<hr />
<h3 id="heading-why-i-used-a-bastion-host">🔐 Why I Used a Bastion Host</h3>
<p>The Bastion Host acts as a secure jump server into the private network.</p>
<p>Instead of exposing my private EC2 instances directly to the internet, I:</p>
<ul>
<li><p>Placed them in a private subnet</p>
</li>
<li><p>Disabled public IP assignment</p>
</li>
<li><p>Allowed SSH access only from the Bastion Host</p>
</li>
</ul>
<p>The Bastion Host:</p>
<ul>
<li><p>Allows SSH only from my personal IP</p>
</li>
<li><p>Acts as the single controlled entry point</p>
</li>
<li><p>Reduces attack surface</p>
</li>
</ul>
<p>This follows the principle of least privilege and improves overall security posture.</p>
<hr />
<h3 id="heading-how-ansible-simplified-deployment">🤖 How Ansible Simplified Deployment</h3>
<p>To avoid manually configuring each server, I used Ansible for automation.</p>
<p>Using:</p>
<ul>
<li><p>An inventory file</p>
</li>
<li><p>A playbook</p>
</li>
<li><p>A single execution command</p>
</li>
</ul>
<p>I was able to install and configure Nginx on both private servers simultaneously.</p>
<p>Benefits:</p>
<ul>
<li><p>Consistency across servers</p>
</li>
<li><p>Reduced human error</p>
</li>
<li><p>Faster deployment</p>
</li>
<li><p>Easy scalability</p>
</li>
</ul>
<p>This demonstrates infrastructure automation, a core DevOps principle.</p>
<hr />
<h3 id="heading-direct-ec2-access-vs-load-balancer-access">🌍 Direct EC2 Access vs Load Balancer Access</h3>
<p>There are two ways users can access applications:</p>
<h4 id="heading-direct-ec2-access">🔴 Direct EC2 Access</h4>
<p>Users connect directly to a server’s public IP.</p>
<p>Disadvantages:</p>
<ul>
<li><p>Single point of failure</p>
</li>
<li><p>No traffic distribution</p>
</li>
<li><p>Reduced scalability</p>
</li>
<li><p>Increased security risk</p>
</li>
</ul>
<h4 id="heading-load-balancer-access">🟢 Load Balancer Access</h4>
<p>Users connect through a single DNS endpoint provided by the Application Load Balancer.</p>
<p>Advantages:</p>
<ul>
<li><p>High availability</p>
</li>
<li><p>Automatic traffic distribution</p>
</li>
<li><p>Fault tolerance</p>
</li>
<li><p>Backend servers remain private</p>
</li>
</ul>
<p>Using a Load Balancer makes the architecture production-ready and scalable.</p>
<h1 id="heading-security-achieved">🔐 Security Achieved</h1>
<p>✔ Private instances have no public IP<br />✔ SSH only through Bastion<br />✔ Bastion restricted to my IP<br />✔ Internet access via NAT only<br />✔ Load Balancer securely exposes app<br />✔ Infrastructure automated using Ansible</p>
<hr />
<h1 id="heading-conclusion">🏁 Conclusion</h1>
<p>In this project, I successfully built a <strong>secure, scalable, and production-style AWS infrastructure</strong> using:</p>
<ul>
<li><p>VPC segmentation</p>
</li>
<li><p>Bastion Host access control</p>
</li>
<li><p>NAT Gateway for private internet access</p>
</li>
<li><p>Ansible automation</p>
</li>
<li><p>Application Load Balancer for high availability</p>
</li>
</ul>
<p>This architecture mirrors what is used in real-world enterprise cloud environments and demonstrates strong understanding of <strong>networking, security, and DevOps automation</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[Deploying Multiple EC2 Instances with Apache and Nginx Behind an AWS Load Balancer (With Monitoring & Automated Backups)]]></title><description><![CDATA[Introduction
In this project, I deployed two Amazon EC2 instances running Amazon Linux, installed Apache on one instance and Nginx on the other, and placed both behind an AWS Application Load Balancer.
To make the setup more production-ready, I also ...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/deploying-multiple-ec2-instances-with-apache-and-nginx-behind-an-aws-load-balancer-with-monitoring-and-automated-backups</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/deploying-multiple-ec2-instances-with-apache-and-nginx-behind-an-aws-load-balancer-with-monitoring-and-automated-backups</guid><category><![CDATA[Cloud Computing]]></category><category><![CDATA[AWS]]></category><category><![CDATA[EC2 instance]]></category><category><![CDATA[Load Balancing]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Fri, 06 Feb 2026 21:43:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1770413482098/754d2b1d-bdff-4fc5-93d5-1ede0704f756.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>In this project, I deployed two <strong>Amazon EC2</strong> instances running <strong>Amazon Linux</strong>, installed <strong>Apache</strong> on one instance and <strong>Nginx</strong> on the other, and placed both behind an <strong>AWS Application Load Balancer</strong>.</p>
<p>To make the setup more production-ready, I also configured:</p>
<ul>
<li><p><strong>Monitoring and alerting using Amazon CloudWatch</strong></p>
</li>
<li><p><strong>Automated backups using EC2 snapshots</strong></p>
</li>
</ul>
<p>This project demonstrates core AWS skills such as compute provisioning, traffic distribution, monitoring, and disaster recovery.</p>
<hr />
<h2 id="heading-architecture-overview">Architecture Overview</h2>
<p><img src="https://miro.medium.com/v2/resize%3Afit%3A1400/0%2AGqO1VSDirA9PeH5t.png" alt="https://miro.medium.com/v2/resize%3Afit%3A1400/0%2AGqO1VSDirA9PeH5t.png" /></p>
<p><img src="https://docs.aws.amazon.com/images/autoscaling/ec2/userguide/images/elb-tutorial-architecture-diagram.png" alt="https://docs.aws.amazon.com/images/autoscaling/ec2/userguide/images/elb-tutorial-architecture-diagram.png" /></p>
<p><strong>Architecture Components</strong></p>
<ul>
<li><p>2 EC2 Instances (Amazon Linux)</p>
</li>
<li><p>Apache Web Server (Instance 1)</p>
</li>
<li><p>Nginx Web Server (Instance 2)</p>
</li>
<li><p>1 Application Load Balancer</p>
</li>
<li><p>1 Target Group</p>
</li>
<li><p>Amazon CloudWatch for monitoring</p>
</li>
<li><p>Automated EC2 snapshots for backups</p>
</li>
</ul>
<hr />
<h2 id="heading-step-1-launch-two-ec2-instances">Step 1: Launch Two EC2 Instances</h2>
<p>I logged into the AWS Management Console and navigated to <strong>Amazon EC2</strong>.</p>
<h3 id="heading-configuration-steps">Configuration Steps</h3>
<ol>
<li><p>Click <strong>Launch Instance</strong></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770403937456/c02b6916-d9b3-4787-b88f-853c96db7391.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Select <strong>Amazon Linux</strong></p>
</li>
<li><p>Choose instance type (e.g., <code>t2.micro</code>)</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770404004725/9dea3b14-c446-4b7d-a917-b7a36b594def.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Create or select a key pair</p>
</li>
<li><p>Configure a Security Group:</p>
<ul>
<li><p>SSH (22) — My IP</p>
</li>
<li><p>HTTP (80) — Anywhere</p>
</li>
</ul>
</li>
</ol>
<p>    <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770404040046/20e3669b-bf49-4c56-8361-f846157ae80c.png" alt class="image--center mx-auto" /></p>
<ol start="6">
<li><p>Launch <strong>two separate EC2 instances</strong></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770404068349/d6adad62-e784-42c3-adb4-a8fd2dd271b2.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-2-ssh-into-both-instances">Step 2: SSH into Both Instances</h2>
<p>Using the public IPs, I connected to each instance via SSH.</p>
<pre><code class="lang-plaintext">ssh -i mykey.pem ec2-user@&lt;EC2_PUBLIC_IP&gt;
</code></pre>
<p>I confirmed successful access on both instances.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770404517137/9c583460-6b21-44f4-81b8-d8e2b132f1de.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770404526291/997765f7-cae1-409f-9290-752ccf310a65.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-3-install-apache-on-the-first-instance">Step 3: Install Apache on the First Instance</h2>
<p>On the first EC2 instance, I installed <strong>Apache HTTP Server</strong>.</p>
<pre><code class="lang-plaintext">sudo yum update -y
sudo yum install httpd -y
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770404747214/50b4d788-0a54-442c-8283-47c1b6c2cdff.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770404831213/e7ceae59-eeaf-4f22-af81-9bf7656543d7.png" alt class="image--center mx-auto" /></p>
<p>I customized the web page:</p>
<pre><code class="lang-plaintext">sudo nano /var/www/html/index.html
</code></pre>
<pre><code class="lang-plaintext">&lt;h1&gt;Apache Server - EC2 Instance 1&lt;/h1&gt;
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770405125497/09a721ed-49ea-4a0e-88b5-843c20f45e9f.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-step-4-install-nginx-on-the-second-instance">Step 4: Install Nginx on the Second Instance</h2>
<p>On the second EC2 instance, I installed <strong>Nginx</strong>.</p>
<pre><code class="lang-plaintext">sudo yum update -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770405276353/9210f00d-5c0c-40ec-9962-1001ecb3833d.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770405384299/9a7e24a1-5c74-4e0b-acf9-e14200a782ec.png" alt class="image--center mx-auto" /></p>
<p>I edited the default Nginx page:</p>
<pre><code class="lang-plaintext">sudo nano /usr/share/nginx/html/index.html
</code></pre>
<pre><code class="lang-plaintext">&lt;h1&gt;Nginx Server - EC2 Instance 2&lt;/h1&gt;
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770406446479/9eddc904-7c0a-477e-a75c-b39560069eef.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-5-create-a-target-group">Step 5: Create a Target Group</h2>
<p>I created a Target Group to route traffic to the instances.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770406759104/0222b24a-7678-459b-96bd-3035cfceba06.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-target-group-configuration">Target Group Configuration</h3>
<ul>
<li><p>Target type: <strong>Instance</strong></p>
</li>
<li><p>Protocol: <strong>HTTP</strong></p>
</li>
<li><p>Port: <strong>80</strong></p>
</li>
<li><p>Health check path: <code>/</code></p>
</li>
</ul>
<p>Both EC2 instances were registered and marked <strong>healthy</strong>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770406820932/e28f72e5-d028-48c1-9d75-312a69ddb361.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770406997836/b0d5d767-f3c7-4536-967e-c30dcd75b6b7.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-6-create-an-application-load-balancer">Step 6: Create an Application Load Balancer</h2>
<p>Next, I created an <strong>Application Load Balancer</strong>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770407459009/635b3aa0-6e85-4b42-b04d-47ff58f1b8d9.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-load-balancer-settings">Load Balancer Settings</h3>
<ul>
<li><p>Scheme: Internet-facing</p>
</li>
<li><p>Listener: HTTP (80)</p>
</li>
<li><p>Availability Zones: Same as EC2 instances</p>
</li>
<li><p>Forward traffic to the created Target Group</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770407713288/d606622e-ab7f-4df1-a520-f0646e35e940.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-7-access-the-load-balancer-dns">Step 7: Access the Load Balancer DNS</h2>
<p>Once the load balancer became active, I accessed its DNS name in a browser.</p>
<pre><code class="lang-plaintext">http://&lt;load-balancer-dns-name&gt;
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770407875175/2e5d5ee9-d14f-4b15-ad4a-6a59bc5d69c9.png" alt class="image--center mx-auto" /></p>
<p>Refreshing the page alternated between:</p>
<ul>
<li><p>Apache server response</p>
</li>
<li><p>Nginx server response</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770408062050/8c265d45-cdee-44f6-a8b4-7045f50dd284.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770408071172/bc7e5451-b241-4d61-a896-6e186ebc4ed7.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-8-enable-monitoring-with-amazon-cloudwatch">Step 8: Enable Monitoring with Amazon CloudWatch</h2>
<p>To monitor performance and availability, I used <strong>Amazon CloudWatch</strong>.</p>
<h3 id="heading-what-i-monitored">What I Monitored</h3>
<ul>
<li><p>EC2 CPU Utilization</p>
</li>
<li><p>Network In / Network Out</p>
</li>
<li><p>Load Balancer request count</p>
</li>
<li><p>Target group health status</p>
</li>
</ul>
<h3 id="heading-alarm-configuration">Alarm Configuration</h3>
<ul>
<li><p>Created a CloudWatch alarm to trigger when CPU utilization exceeds a threshold</p>
</li>
<li><p>Notifications configured using SNS</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770413720756/e091fddb-6683-41e7-b940-aef632c98a57.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770411905803/5911fc8b-b746-4c21-9b55-1c27be1e2dd6.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-9-configure-automated-backups-using-ec2-snapshots">Step 9: Configure Automated Backups Using EC2 Snapshots</h2>
<p>To ensure disaster recovery, I enabled <strong>automated backups</strong> by creating EC2 snapshots.</p>
<h3 id="heading-backup-strategy">Backup Strategy</h3>
<ul>
<li><p>Created AMIs or EBS snapshots for both instances</p>
</li>
<li><p>Configured lifecycle rules to:</p>
<ul>
<li><p>Run backups automatically</p>
</li>
<li><p>Retain snapshots for a defined period</p>
</li>
</ul>
</li>
</ul>
<p>This ensures the instances can be restored quickly in case of failure or data loss.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770413373339/95c8bbff-d5a4-4e5d-9961-55f44d6cc9c7.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-key-takeaways">Key Takeaways</h2>
<ul>
<li><p>Load balancers distribute traffic efficiently across multiple instances</p>
</li>
<li><p>CloudWatch provides visibility into system performance and health</p>
</li>
<li><p>Automated backups are essential for fault tolerance and recovery</p>
</li>
<li><p>This setup reflects real-world AWS production practices</p>
</li>
</ul>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>This project showcases how to deploy multiple EC2 instances with different web servers, expose them through an Application Load Balancer, and enhance the setup with monitoring and automated backups. It demonstrates foundational AWS skills required for Cloud and DevOps roles, including scalability, observability, and resilience.</p>
]]></content:encoded></item><item><title><![CDATA[Building a Scalable Infrastructure on DigitalOcean Using Multiple Droplets, Load Balancing, Monitoring, and Automated Backups]]></title><description><![CDATA[Introduction
Modern cloud infrastructure must be designed with scalability, fault tolerance, and observability in mind. In this project, I built a highly available setup by deploying multiple virtual servers (Droplets), configuring a Load Balancer to...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/building-a-scalable-infrastructure-on-digitalocean-using-multiple-droplets-load-balancing-monitoring-and-automated-backups</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/building-a-scalable-infrastructure-on-digitalocean-using-multiple-droplets-load-balancing-monitoring-and-automated-backups</guid><category><![CDATA[Devops]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Digital-ocean]]></category><category><![CDATA[tech ]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Fri, 06 Feb 2026 14:47:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1770381485527/9febda67-084f-42b6-b9bc-b3b7fa8db2e9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>Modern cloud infrastructure must be designed with <strong>scalability, fault tolerance, and observability</strong> in mind. In this project, I built a highly available setup by deploying multiple virtual servers (Droplets), configuring a Load Balancer to manage incoming traffic, and ensuring monitoring and automated backups were properly enabled.</p>
<p>This blog documents the <strong>end-to-end process</strong> I followed, demonstrating real-world cloud and DevOps best practices using <strong>DigitalOcean</strong>.</p>
<hr />
<h2 id="heading-project-objectives">Project Objectives</h2>
<p>The main goals of this deployment were to:</p>
<ul>
<li><p>Provision <strong>multiple Linux-based Droplets</strong></p>
</li>
<li><p>Deploy the same application across all servers</p>
</li>
<li><p>Configure a <strong>Load Balancer</strong> to distribute traffic evenly</p>
</li>
<li><p>Enable <strong>monitoring and health checks</strong></p>
</li>
<li><p>Configure <strong>automatic backups</strong> for data protection and disaster recovery</p>
</li>
<li><p>Test failover and traffic distribution</p>
</li>
</ul>
<p>This architecture closely resembles what is used in <strong>production environments</strong> to guarantee uptime and performance.</p>
<hr />
<h2 id="heading-architecture-overview">Architecture Overview</h2>
<p>The infrastructure consists of:</p>
<ul>
<li><p>Multiple Ubuntu Droplets running the same application</p>
</li>
<li><p>A DigitalOcean Load Balancer placed in front of the Droplets</p>
</li>
<li><p>Monitoring and alerting enabled at the Droplet level</p>
</li>
<li><p>Automated backups configured for recovery</p>
</li>
</ul>
<p>All incoming requests pass through the Load Balancer, which forwards traffic only to healthy Droplets.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770388534678/788b9122-3289-4cdd-9609-12a66133398d.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-1-creating-multiple-droplets">Step 1: Creating Multiple Droplets</h2>
<p>The first step was to provision the Droplets that would host the application.</p>
<h3 id="heading-process">Process:</h3>
<ol>
<li><p>Logged into the DigitalOcean dashboard</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770382466980/5da9daa3-2ec5-4fd8-a66b-5340a2ae297a.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Navigated to <strong>Create → Droplets</strong></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770382479374/1b0af3c6-1e61-434d-8c7c-8282ba63914f.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Selected <strong>Ubuntu Linux</strong> as the operating system</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770382632761/4db01756-8d48-471a-921b-9c398b80d795.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Chose an appropriate Droplet size based on expected workload</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770382798371/5d35f4ba-0bc6-4250-991c-38698a23111d.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Selected a region closest to users to reduce latency</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770382836472/2696fe91-f632-4c64-a4d2-473d06f74610.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Enabled <strong>SSH key authentication</strong> for secure access</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770382934517/37664eff-139e-4337-8d7f-7f2719be4c99.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Created <strong>multiple Droplets with identical configurations</strong></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770383232844/f14095a9-d19a-41d5-a746-b1c7b7a3d5ee.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<p>Using identical Droplets ensures consistency and simplifies scaling and maintenance.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770383342973/4c4d5e8e-08fb-4648-95da-8b8f62476c54.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-2-accessing-and-preparing-the-droplets">Step 2: Accessing and Preparing the Droplets</h2>
<p>Once the Droplets were created, I connected to each one using SSH.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770384998635/e00975e7-b3f9-4e6f-abec-6e093257f4ca.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770385019888/7feebb25-1a51-4371-bde8-1f046605ade0.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770385039120/73e98b76-bbf6-44e4-82cf-1a96ed096921.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-tasks-performed">Tasks Performed:</h3>
<ul>
<li><p>Updated system packages to the latest versions</p>
</li>
<li><p>Installed required dependencies and a web server</p>
</li>
<li><p>Configured firewall rules where necessary</p>
</li>
<li><p>Ensured all Droplets had the same environment setup</p>
</li>
</ul>
<pre><code class="lang-plaintext">apt update &amp;&amp; apt install -y apache2 &amp;&amp; echo "Hello world,Welcome to server 1" &gt; /var/www/html/index.html
</code></pre>
<p>This step is critical because <strong>load-balanced systems require uniform server behavior</strong>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770385459491/7b77e26c-8c76-45d5-8f83-271244fb9ee9.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-3-deploying-the-application-across-all-droplets">Step 3: Deploying the Application Across All Droplets</h2>
<p>After preparing the servers, I deployed the same application to each Droplet.</p>
<h3 id="heading-key-actions">Key Actions:</h3>
<ul>
<li><p>Copied application files to each Droplet</p>
</li>
<li><p>Configured the web server to serve the application</p>
</li>
<li><p>Ensured the application was reachable via each Droplet’s public IP</p>
</li>
<li><p>Verified application responses were consistent across servers</p>
</li>
</ul>
<p>At this stage, each Droplet could independently serve user requests.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770385927273/fae8a1e5-6cb5-40c5-8264-fcb7c1559243.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770385944197/d1eaeb6e-dd5f-4913-9ac5-2b450079a30d.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770385952700/6689ad0d-8152-4a3c-88a8-8b980daf39b3.png" alt class="image--center mx-auto" /></p>
<p>Step 4: Creating and Configuring the Load Balancer</p>
<p>To manage incoming traffic efficiently, I created a <strong>DigitalOcean Load Balancer</strong>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770386104970/a3b9e115-77aa-43fd-9088-52dadd72bc86.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770386332383/2900e9b9-d6a6-4579-97c6-27a9c335e4cb.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-load-balancer-configuration">Load Balancer Configuration:</h3>
<ul>
<li><p>Selected the same region as the Droplets</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770386427326/5e1cf43d-40b8-46fe-8b1d-510ace25508a.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Attached all application Droplets to the Load Balancer</p>
</li>
<li><p>Configured forwarding rules:</p>
<ul>
<li><p>HTTP (Port 80)</p>
</li>
<li><p>HTTPS (Port 443, if SSL is enabled)</p>
</li>
</ul>
</li>
</ul>
<p>    <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770386476154/3898f692-62b1-4df1-877e-6a04b15c1cb3.png" alt class="image--center mx-auto" /></p>
<ul>
<li>Enabled health checks to continuously monitor Droplet availability</li>
</ul>
<p>The Load Balancer automatically routes traffic to healthy Droplets and removes unhealthy ones from rotation.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770387116688/57bbc9cb-4a9e-476a-b354-4efcb2d25bb5.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-5-enabling-monitoring-and-health-metrics">Step 5: Enabling Monitoring and Health Metrics</h2>
<p>Monitoring is essential for understanding system performance and detecting problems early.</p>
<h3 id="heading-monitoring-features-enabled">Monitoring Features Enabled:</h3>
<ul>
<li><p>CPU usage tracking</p>
</li>
<li><p>Memory utilization</p>
</li>
<li><p>Disk and network I/O</p>
</li>
<li><p>Load Balancer health checks</p>
</li>
<li><p>Droplet uptime monitoring</p>
</li>
</ul>
<p>These metrics allow proactive troubleshooting and performance optimization.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770387995188/1294b408-57f1-4ea3-b559-40061f837fc1.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770388083521/87bfb481-77b3-43cf-9f32-494fd686674c.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-6-configuring-automated-backups">Step 6: Configuring Automated Backups</h2>
<p>To ensure data protection and fast recovery, I enabled <strong>automatic backups</strong> for each Droplet.</p>
<h3 id="heading-benefits-of-automated-backups">Benefits of Automated Backups:</h3>
<ul>
<li><p>Daily snapshots without manual intervention</p>
</li>
<li><p>Ability to restore a Droplet to a previous working state</p>
</li>
<li><p>Protection against accidental deletion, corruption, or system failure</p>
</li>
</ul>
<p>This adds an important layer of resilience to the infrastructure.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770388175569/51c7966b-210a-4c02-bc3f-4d45fa4928da.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-7-testing-load-balancing-and-failover">Step 7: Testing Load Balancing and Failover</h2>
<p>To validate the setup, I tested how traffic was distributed and how the system handled failures.</p>
<h3 id="heading-testing-steps">Testing Steps:</h3>
<ul>
<li><p>Accessed the Load Balancer’s IP address or DNS name</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770387372172/3303f69b-fa44-4221-853f-ddb7f8b4c414.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Reloaded the application multiple times</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770387455935/e7c52a3c-a141-4664-9cb4-0271f440766b.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770387469110/ba3a8ed7-ac36-4b0b-a78a-f78e66bb68b6.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770387490284/8bafa0d1-70c7-44e5-b4b5-486fd6e86fde.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Confirmed traffic was served by different Droplets</p>
</li>
<li><p>Stopped one Droplet to simulate failure</p>
</li>
<li><p>Observed the Load Balancer automatically rerouting traffic</p>
</li>
</ul>
<p>The application remained available even when a Droplet went offline.</p>
<hr />
<h2 id="heading-key-outcomes-and-benefits">Key Outcomes and Benefits</h2>
<p>This deployment achieved:</p>
<ul>
<li><p><strong>High Availability</strong> – No single point of failure</p>
</li>
<li><p><strong>Scalability</strong> – Easy addition or removal of Droplets</p>
</li>
<li><p><strong>Reliability</strong> – Health checks and failover handling</p>
</li>
<li><p><strong>Observability</strong> – Real-time monitoring and metrics</p>
</li>
<li><p><strong>Data Safety</strong> – Automated backups and recovery options</p>
</li>
</ul>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>This project demonstrates how to build a <strong>scalable, fault-tolerant cloud infrastructure</strong> using DigitalOcean. By combining multiple Droplets, a Load Balancer, monitoring, and automated backups, I implemented an architecture that aligns with real-world DevOps and cloud engineering standards.</p>
<p>This setup is suitable for production workloads and serves as a strong addition to my <strong>cloud and DevOps portfolio</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[Launching an EC2 Instance and Hosting a Web Page Using Apache on AWS]]></title><description><![CDATA[Introduction
Amazon Elastic Compute Cloud (EC2) is a core AWS service that allows users to run virtual servers in the cloud. These servers can be used to host websites, applications, and other services.
In this blog, I will give a detailed step-by-st...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/launching-an-ec2-instance-and-hosting-a-web-page-using-apache-on-aws</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/launching-an-ec2-instance-and-hosting-a-web-page-using-apache-on-aws</guid><category><![CDATA[Devops]]></category><category><![CDATA[AWS]]></category><category><![CDATA[ec2]]></category><category><![CDATA[tech ]]></category><category><![CDATA[Cloud Computing]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Wed, 04 Feb 2026 12:38:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1770203028487/74519bef-a485-4b72-8784-3e3f4868fce7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>Amazon Elastic Compute Cloud (EC2) is a core AWS service that allows users to run virtual servers in the cloud. These servers can be used to host websites, applications, and other services.</p>
<p>In this blog, I will give a <strong>detailed step-by-step explanation</strong> of how I:</p>
<ul>
<li><p>Launched an EC2 instance on AWS</p>
</li>
<li><p>Configured security groups to allow SSH and HTTP traffic</p>
</li>
<li><p>Connected to the instance from my local machine using SSH</p>
</li>
<li><p>Installed and configured the Apache web server</p>
</li>
<li><p>Edited the default Apache web page to display my name</p>
</li>
<li><p>Accessed the web page using the EC2 public IP address</p>
</li>
<li><p>Safely terminated the EC2 instance after completion</p>
</li>
</ul>
<hr />
<h2 id="heading-step-1-logging-into-aws-and-navigating-to-ec2">Step 1: Logging into AWS and Navigating to EC2</h2>
<p>I started by logging into the <strong>AWS Management Console</strong> using my AWS account. From the AWS services menu, I searched for <strong>EC2</strong> and clicked on it to open the EC2 Dashboard.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770203265374/ec8e657b-8228-44ee-9b9f-a50c9d56c12b.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770203272049/afa36778-bd72-4c25-8f91-27267b7aad51.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-2-launching-a-new-ec2-instance">Step 2: Launching a New EC2 Instance</h2>
<p>From the EC2 Dashboard, I clicked <strong>Launch Instance</strong>.</p>
<h3 id="heading-instance-configuration">Instance Configuration</h3>
<ul>
<li><p><strong>Name:</strong> I assigned a name to the instance for easy identification.</p>
</li>
<li><p><strong>Amazon Machine Image (AMI):</strong> I selected an <strong>Ubuntu Server / Amazon Linux AMI</strong>.</p>
</li>
<li><p><strong>Instance Type:</strong> I chose <code>t3.micro</code>, which is eligible for the AWS Free Tier.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770203451435/a2186e48-c5f2-4357-97ba-1d8fc2f7383d.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-3-creating-or-selecting-a-key-pair">Step 3: Creating or Selecting a Key Pair</h2>
<p>To securely connect to the EC2 instance, AWS requires a <strong>key pair</strong>.</p>
<ul>
<li><p>I created a new key pair (or selected an existing one).</p>
</li>
<li><p>I downloaded the private key file (<code>.pem</code>) and stored it safely on my local machine.</p>
</li>
</ul>
<p>This key is required for SSH access to the instance.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770203654045/a65ed75d-ffe5-4e2c-935d-ac5331fdfa0e.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-4-configuring-the-security-group">Step 4: Configuring the Security Group</h2>
<p>A <strong>security group</strong> acts as a virtual firewall for the EC2 instance.</p>
<p>I configured the inbound rules to allow:</p>
<ul>
<li><p><strong>SSH (Port 22)</strong> – for remote access from my local machine</p>
</li>
<li><p><strong>HTTP (Port 80)</strong> – to allow web traffic to the Apache server</p>
</li>
</ul>
<p>These rules ensure that I can connect to the instance and that the web page can be accessed from a browser.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770203766818/3cfaa833-3f55-4df1-aa35-139490aafc69.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-5-launching-the-instance">Step 5: Launching the Instance</h2>
<p>After reviewing all configurations, I clicked <strong>Launch Instance</strong>. Within a few minutes, the instance entered the <strong>running</strong> state.</p>
<p>I then copied the <strong>public IP address</strong>, which would be used to connect to the server and access the website.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770204203206/1f1b6c11-48e4-4dad-8176-5c125c1a6c3e.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-6-connecting-to-the-ec2-instance-using-ssh">Step 6: Connecting to the EC2 Instance Using SSH</h2>
<p>On my local machine, I opened the terminal and navigated to the directory containing the private key file.</p>
<p>I used SSH to connect to the instance using the public IP address. Once connected, I gained command-line access to the remote server.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770204486849/837bcf4c-6631-40b1-92d2-762d2459852c.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-7-updating-the-server-and-installing-apache">Step 7: Updating the Server and Installing Apache</h2>
<p>After connecting to the instance, I updated the system packages to ensure everything was up to date.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770204719811/a9945c6c-96c7-4a45-90bc-95986b028941.png" alt class="image--center mx-auto" /></p>
<p>Next, I installed <strong>Apache2</strong>, which is a widely used open-source web server.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770205493221/cf04ec59-c5a6-4642-bb42-468c463bed3a.png" alt class="image--center mx-auto" /></p>
<p>Once installation was complete, I started the Apache service and verified that it was running correctly.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770205502461/dd023a83-7459-47a7-97d9-32dc1eb2cd87.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-8-editing-the-default-apache-web-page">Step 8: Editing the Default Apache Web Page</h2>
<p>Apache stores its default web page in the <code>/var/www/html</code> directory.</p>
<ul>
<li><p>I navigated to this directory</p>
</li>
<li><p>I opened the <code>index.html</code> file</p>
</li>
<li><p>I replaced the default content with a simple message displaying <strong>my name</strong></p>
</li>
</ul>
<p>This customization helped confirm that the server was correctly serving my own content.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770206902468/ee9334cb-a279-4eef-bd13-0e59b28cdaa6.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-9-accessing-the-web-page-via-browser">Step 9: Accessing the Web Page via Browser</h2>
<p>After configuring Apache, I opened my web browser and entered the <strong>public IP address</strong> of the EC2 instance.</p>
<p>The page loaded successfully and displayed my name, confirming that:</p>
<ul>
<li><p>Apache was running</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770206959256/7935d27d-271f-4747-95bc-56078100a7b6.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>HTTP traffic was allowed in the security group</p>
</li>
<li><p>The EC2 instance was accessible from the internet</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770207210387/015acf79-5ab2-4d2c-bf4f-bcff7bde870a.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-10-terminating-the-ec2-instance">Step 10: Terminating the EC2 Instance</h2>
<p>After completing the project, I returned to the EC2 Dashboard and selected the instance.</p>
<p>To avoid unnecessary charges, I clicked <strong>Terminate Instance</strong>. This permanently deleted the EC2 instance and released its resources.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770207697116/4afacc1f-25a8-49b0-ac5a-ee05cdda2052.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>This step-by-step project demonstrated how to deploy a basic web server using AWS EC2 and Apache. It provided hands-on experience with cloud infrastructure, Linux server management, security groups, and web hosting.</p>
<p>This foundational knowledge is essential for more advanced cloud and DevOps projects such as deploying applications, configuring load balancers, and automating infrastructure.</p>
]]></content:encoded></item><item><title><![CDATA[How I Created an Amazon S3 Bucket, Uploaded an Image, and Made It Publicly Accessible]]></title><description><![CDATA[Introduction
Amazon Simple Storage Service (Amazon S3) is one of the most popular services provided by Amazon Web Services (AWS). It allows users to store and retrieve files (objects) securely and at any time from anywhere on the internet.
In this bl...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/how-i-created-an-amazon-s3-bucket-uploaded-an-image-and-made-it-publicly-accessible</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/how-i-created-an-amazon-s3-bucket-uploaded-an-image-and-made-it-publicly-accessible</guid><category><![CDATA[S3]]></category><category><![CDATA[AWS]]></category><category><![CDATA[Cloud Computing]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Tue, 03 Feb 2026 12:10:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1770119606506/c503e9bd-8610-47a6-9ff0-c43237ad0dbb.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2 id="heading-introduction">Introduction</h2>
<p>Amazon Simple Storage Service (Amazon S3) is one of the most popular services provided by Amazon Web Services (AWS). It allows users to store and retrieve files (objects) securely and at any time from anywhere on the internet.</p>
<p>In this blog, I will walk through the steps I followed to:</p>
<ul>
<li><p>Create an S3 bucket on AWS</p>
</li>
<li><p>Upload an image into the bucket</p>
</li>
<li><p>Configure the bucket to allow public access to the image</p>
</li>
</ul>
<p>This project helped me understand how cloud storage works and how permissions are managed in AWS.</p>
<hr />
<h2 id="heading-what-is-amazon-s3">What is Amazon S3?</h2>
<p>Amazon S3 (Simple Storage Service) is an object storage service that offers scalability, security, and high availability. It is commonly used for:</p>
<ul>
<li><p>Storing images and videos</p>
</li>
<li><p>Hosting static websites</p>
</li>
<li><p>Backups and data archiving</p>
</li>
</ul>
<p>Each file stored in S3 is called an <strong>object</strong>, and objects are stored inside containers called <strong>buckets</strong>.</p>
<hr />
<h2 id="heading-step-1-logging-into-the-aws-management-console">Step 1: Logging into the AWS Management Console</h2>
<p>To begin, I logged into my AWS account using the AWS Management Console.</p>
<p><strong>Steps:</strong></p>
<ol>
<li><p>Opened my browser and visited <a target="_blank" href="https://aws.amazon.com"><code>https://aws.amazon.com</code></a></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770114058939/cca89ed8-f3df-4b8d-a6fc-c414f42775ac.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Signed in using my AWS credentials</p>
</li>
<li><p>From the AWS Management Console, searched for <strong>S3</strong> and selected it</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770114721647/323b6ee0-9472-4c4c-9bd1-7a76fe29f077.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-2-creating-an-s3-bucket">Step 2: Creating an S3 Bucket</h2>
<p>After opening the S3 dashboard, I created a new bucket.</p>
<p><strong>Steps:</strong></p>
<ol>
<li><p>Clicked on <strong>Create bucket</strong></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770114873945/cfc7003e-e146-4920-9f55-e8871b19a64c.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Entered a unique bucket name</p>
</li>
<li><p>Selected a preferred AWS region</p>
</li>
<li><p>Left other settings as default</p>
</li>
<li><p>Clicked <strong>Create bucket</strong></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770115195446/9e0a982e-42da-480b-ae81-2bd03209f63e.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770115198015/195920e0-f689-48b1-9782-0e9da25e2aa8.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-3-uploading-an-image-to-the-bucket">Step 3: Uploading an Image to the Bucket</h2>
<p>Once the bucket was successfully created, I uploaded an image file into it.</p>
<p><strong>Steps:</strong></p>
<ol>
<li><p>Opened the newly created bucket</p>
</li>
<li><p>Clicked <strong>Upload</strong></p>
</li>
<li><p>Selected an image file from my local system</p>
</li>
<li><p>Clicked <strong>Upload</strong> to complete the process</p>
</li>
</ol>
<p>After uploading, the image appeared inside the bucket as an object.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770115606171/7227fb25-04df-4ac2-a74c-571c01ac81cf.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-4-disabling-block-public-access">Step 4: Disabling Block Public Access</h2>
<p>By default, S3 buckets block public access for security reasons. To make my image publicly accessible, I adjusted the bucket’s public access settings.</p>
<p><strong>Steps:</strong></p>
<ol>
<li><p>Opened the bucket</p>
<ol>
<li><p>Navigated to the <strong>Permissions</strong> tab</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770115917344/5e57c5fc-b609-4b07-8957-f6fb12743dd5.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770115990339/8a6d6b3e-7980-4d72-869a-70e51747a248.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
</li>
<li><p>Clicked <strong>Edit</strong> under <em>Block public access</em></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770116160416/66917d79-89b0-4cad-88d1-c3d8c9ee8e39.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Unchecked <strong>Block all public access</strong></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770116269253/02c8229c-867c-40b9-af23-493aff51c544.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Saved the changes and confirmed</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770116355296/eca6a558-7019-4d45-a89e-72a8a77d3608.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-5-making-the-image-public-using-bucket-policy">Step 5: Making the Image Public Using Bucket Policy</h2>
<p>To allow public access to the image, I applied a bucket policy.</p>
<p><strong>Steps:</strong></p>
<ol>
<li><p>Went to the <strong>Permissions</strong> tab</p>
</li>
<li><p>Selected <strong>Bucket policy</strong></p>
</li>
<li><p>Added a policy that allows public read access to objects</p>
</li>
<li><p>Saved the policy</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770119180985/f247745f-877e-4a51-bd5e-8fd36bc76233.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<p>This policy allows anyone on the internet to view the image.</p>
<hr />
<h2 id="heading-step-6-accessing-the-image-publicly">Step 6: Accessing the Image Publicly</h2>
<p>After configuring the permissions, I copied the <strong>Object URL</strong> of the image and opened it in a browser.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770119279197/e014e3ce-5a82-4545-899d-27fd709ef7dc.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770119378351/8775320a-d363-484d-b4a8-981d132453bb.png" alt class="image--center mx-auto" /></p>
<p>The image loaded successfully, confirming that it was publicly accessible.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>Through this project, I learned how to:</p>
<ul>
<li><p>Create and manage an S3 bucket</p>
</li>
<li><p>Upload objects to cloud storage</p>
</li>
<li><p>Configure permissions to allow public access</p>
</li>
</ul>
<p>This exercise gave me practical experience with AWS S3 and helped me understand how cloud storage and access control work in real-world scenarios. Amazon S3 is a powerful service, and mastering it is an important step in becoming a cloud engineer.</p>
]]></content:encoded></item><item><title><![CDATA[Automating System Monitoring with Bash Scripts and Cron Jobs]]></title><description><![CDATA[Linux Automation Made Easy with Bash Scripts and Cron Jobs

A Beginner-Friendly Linux Automation Project (AltSchool Cloud Engineering)

Introduction
As a beginner in Linux system administration, Cloud computing, or DevOps, learning how to automate ro...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/automating-system-monitoring-with-bash-scripts-and-cron-jobs</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/automating-system-monitoring-with-bash-scripts-and-cron-jobs</guid><category><![CDATA[Devops]]></category><category><![CDATA[Hashnode]]></category><category><![CDATA[Linux]]></category><category><![CDATA[linux for beginners]]></category><category><![CDATA[Bash]]></category><category><![CDATA[bash script]]></category><category><![CDATA[altschool africa]]></category><category><![CDATA[cronjob]]></category><category><![CDATA[crontab]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Wed, 31 Dec 2025 10:32:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1767173483231/356a47c7-9eb1-4b7d-a21c-2fb767f2e410.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-linux-automation-made-easy-with-bash-scripts-and-cron-jobs">Linux Automation Made Easy with Bash Scripts and Cron Jobs</h1>
<hr />
<h2 id="heading-a-beginner-friendly-linux-automation-project-altschool-cloud-engineering">A Beginner-Friendly Linux Automation Project (AltSchool Cloud Engineering)</h2>
<hr />
<h2 id="heading-introduction">Introduction</h2>
<p>As a beginner in <strong>Linux system administration, Cloud computing, or DevOps</strong>, learning how to automate routine tasks is a very important skill. Instead of manually checking system status every time, Linux allows us to write <strong>Bash scripts</strong> and schedule them to run automatically using <strong>cron jobs</strong>.</p>
<p>In this blog, I’ll walk you through a <strong>simple but practical project</strong> where we:</p>
<ul>
<li><p>Check disk usage on the <code>/home</code> directory</p>
</li>
<li><p>Identify the <strong>top 5 processes consuming memory</strong></p>
</li>
<li><p>Save the results to a log file</p>
</li>
<li><p>Automate the script to run <strong>every 5 minutes</strong> using cron</p>
</li>
</ul>
<p>This project was completed as part of my <strong>AltSchool Cloud Engineering Program (Second Semester – Month Two Assignment)</strong>.</p>
<hr />
<h2 id="heading-prerequisites">Prerequisites</h2>
<p>Before starting, you should have:</p>
<ul>
<li><p>A Linux-based system (Ubuntu, Debian, CentOS, etc.)</p>
</li>
<li><p>Basic familiarity with the Linux terminal</p>
</li>
<li><p>Permission to create and execute scripts</p>
</li>
<li><p>Access to <code>cron</code> on your system</p>
</li>
</ul>
<hr />
<h2 id="heading-project-objective">Project Objective</h2>
<p>The goal of this project is to <strong>automate system monitoring</strong> tasks that system administrators and cloud engineers frequently perform, such as:</p>
<ul>
<li><p>Monitoring disk usage</p>
</li>
<li><p>Identifying memory-heavy processes</p>
</li>
<li><p>Logging system information for future review</p>
</li>
</ul>
<p>Automation helps reduce human error and ensures consistent system visibility.</p>
<hr />
<h2 id="heading-step-1-writing-the-bash-script">Step 1: Writing the Bash Script</h2>
<h3 id="heading-what-the-script-does">What the Script Does</h3>
<p>The Bash script performs the following actions:</p>
<ol>
<li><p>Checks the disk usage of the <code>/home</code> directory</p>
</li>
<li><p>Displays the top 5 processes consuming memory</p>
</li>
<li><p>Saves all output into a single log file</p>
</li>
<li><p>Prints a meaningful completion message</p>
</li>
</ol>
<hr />
<h3 id="heading-bash-script-code">Bash Script Code</h3>
<pre><code class="lang-bash"><span class="hljs-meta">#!/bin/bash</span>

LOGFILE=<span class="hljs-string">"/var/log/system_monitor.log"</span>

<span class="hljs-built_in">echo</span> <span class="hljs-string">"===== System Monitoring Log ====="</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Date: <span class="hljs-subst">$(date)</span>"</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>

<span class="hljs-built_in">echo</span> <span class="hljs-string">""</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Disk usage of /home:"</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
du -sh /home &gt;&gt; <span class="hljs-variable">$LOGFILE</span>

<span class="hljs-built_in">echo</span> <span class="hljs-string">""</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Top 5 memory-consuming processes:"</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
ps aux --sort=-%mem | head -n 6 &gt;&gt; <span class="hljs-variable">$LOGFILE</span>

<span class="hljs-built_in">echo</span> <span class="hljs-string">""</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Logging done successfully."</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"================================="</span> &gt;&gt; <span class="hljs-variable">$LOGFILE</span>
</code></pre>
<hr />
<h3 id="heading-bash-script-screenshot">📸 Bash Script Screenshot</h3>
<blockquote>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1767173742908/1934a6bd-6dee-4ffa-8c17-aa9d53957ae7.png" alt class="image--center mx-auto" /></p>
</blockquote>
<hr />
<h2 id="heading-step-2-making-the-script-executable">Step 2: Making the Script Executable</h2>
<p>After saving the script, make it executable using:</p>
<pre><code class="lang-bash">chmod +x system_monitor.sh
</code></pre>
<p>This allows the script to be executed like a program.</p>
<hr />
<h2 id="heading-step-3-running-the-script-manually">Step 3: Running the Script Manually</h2>
<p>Before automation, it is good practice to test the script manually:</p>
<pre><code class="lang-bash">./system_monitor.sh
</code></pre>
<p>If successful, the log file will be created and updated with system information.</p>
<hr />
<h3 id="heading-manual-script-execution">📸 Manual Script Execution</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1767174741209/25dd18f5-cc1b-4a79-aac1-df99c35664c0.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-4-automating-the-script-using-cron">Step 4: Automating the Script Using Cron</h2>
<h3 id="heading-what-is-a-cron-job">What Is a Cron Job?</h3>
<p>A <strong>cron job</strong> is a Linux scheduler that allows tasks to run automatically at specified time intervals. It is widely used for backups, monitoring, and maintenance tasks.</p>
<hr />
<h3 id="heading-editing-the-crontab-file">Editing the Crontab File</h3>
<p>Open your crontab file with:</p>
<pre><code class="lang-bash">crontab -e
</code></pre>
<hr />
<h3 id="heading-cron-job-configuration-every-5-minutes">Cron Job Configuration (Every 5 Minutes)</h3>
<p>Add the following line:</p>
<pre><code class="lang-bash">*/5 * * * * /path/to/system_monitor.sh
</code></pre>
<p>This configuration ensures the script runs <strong>every 5 minutes</strong>, meeting the assignment requirement of running at least three times in 15 minutes.</p>
<hr />
<h3 id="heading-cron-job-configuration">📸 Cron Job Configuration</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1767175386998/656517cd-03ca-4706-8eb7-16bbe3c24b45.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1767175447973/061bfef9-f3e6-4fd0-aae5-041f8897863e.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-5-verifying-cron-job-output">Step 5: Verifying Cron Job Output</h2>
<p>After waiting at least 15 minutes, check the log file to confirm multiple executions:</p>
<pre><code class="lang-bash">cat /var/<span class="hljs-built_in">log</span>/system_monitor.log
</code></pre>
<p>You should see multiple timestamps indicating that the cron job executed successfully.</p>
<hr />
<h3 id="heading-cron-job-log-file-output">📸 Cron Job Log File Output</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1767175640285/22e79f21-1497-4d6b-beb9-615680788a00.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-common-issues-and-troubleshooting">Common Issues and Troubleshooting</h2>
<ul>
<li><p>Ensure absolute paths are used in cron jobs</p>
</li>
<li><p>Confirm the script has execute permission</p>
</li>
<li><p>Check cron service status if the job does not run</p>
</li>
</ul>
<hr />
<h2 id="heading-key-learnings-from-this-project">Key Learnings from This Project</h2>
<p>Through this project, I gained hands-on experience with:</p>
<ul>
<li><p>Bash scripting fundamentals</p>
</li>
<li><p>Linux process and disk monitoring</p>
</li>
<li><p>Task automation using cron jobs</p>
</li>
<li><p>Log file management</p>
</li>
</ul>
<p>These skills are essential for anyone pursuing a career in <strong>Cloud Engineering or DevOps</strong>.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>This beginner-friendly project demonstrates how powerful Linux automation can be when Bash scripting and cron jobs are combined. By automating system monitoring, we save time, improve reliability, and gain deeper insight into system behavior.</p>
<p>This assignment significantly strengthened my confidence in Linux administration and automation as part of my <strong>AltSchool Cloud Engineering journey</strong>.</p>
<hr />
<h3 id="heading-author">✍️ Author</h3>
<p><strong>Silias Odion Adodo</strong><br />Cloud Engineering Student | Linux &amp; DevOps Enthusiast<br />AltSchool Africa</p>
]]></content:encoded></item><item><title><![CDATA[☁️ Cloud Computing, Linux & Command-Line Mastery: A Comprehensive Breakdown of My Second-Semester Assignment]]></title><description><![CDATA[Introduction
As part of my Altschool Africa one-year Diploma in Cloud Engineering Program, I recently completed a second-semester practical assignment focused on strengthening my foundational skills in Cloud Computing, Linux system administration, an...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/cloud-computing-linux-and-command-line-mastery-a-comprehensive-breakdown-of-my-second-semester-assignment</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/cloud-computing-linux-and-command-line-mastery-a-comprehensive-breakdown-of-my-second-semester-assignment</guid><category><![CDATA[Linux]]></category><category><![CDATA[linux for beginners]]></category><category><![CDATA[Ubuntu]]></category><category><![CDATA[altschool africa]]></category><category><![CDATA[Cloud Computing]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Thu, 20 Nov 2025 22:38:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1763667905476/43ccf67d-5072-41b6-8e83-044ddfd65f07.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2 id="heading-introduction"><strong>Introduction</strong></h2>
<p>As part of my <strong>Altschool Africa one-year Diploma in Cloud Engineering Program</strong>, I recently completed a second-semester practical assignment focused on strengthening my foundational skills in <strong>Cloud Computing</strong>, <strong>Linux system administration</strong>, and <strong>command-line tools</strong>.<br />This assignment was not just theoretical — it required hands-on exploration, testing real commands, managing users, working with permissions, and applying core concepts that every cloud and DevOps engineer must master.</p>
<p>This blog is a <strong>comprehensive, upgraded version</strong> of that assignment. I expanded the original scope by diving deeper into the Linux environment, documenting <strong>15 essential and lesser-known commands</strong>, and breaking everything down into clear, structured sections for easier understanding.<br />Whether you're a beginner in cloud engineering or someone looking to sharpen your Linux skills, this write-up provides a practical and beginner-friendly walkthrough of the key concepts I studied.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763668670708/858d38d6-9d30-4014-897a-0efb45b00155.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-1-my-understanding-of-the-cloud"><strong>1. My Understanding of the Cloud</strong></h1>
<p>Cloud Computing refers to a globally distributed network of remote servers and data centers that deliver computing services over the internet. These include:</p>
<ul>
<li><p>Servers</p>
</li>
<li><p>Storage</p>
</li>
<li><p>Databases</p>
</li>
<li><p>Networking</p>
</li>
<li><p>Security</p>
</li>
<li><p>Virtual machines</p>
</li>
<li><p>Software platforms</p>
</li>
</ul>
<p>Instead of owning physical infrastructure, cloud users rent resources on demand, enabling <strong>scalability</strong>, <strong>cost efficiency</strong>, <strong>reliability</strong>, and <strong>global accessibility</strong>.</p>
<hr />
<h1 id="heading-2-my-understanding-of-linux-as-an-operating-system"><strong>2. My Understanding of Linux as an Operating System</strong></h1>
<p>Linux is a free and open-source operating system created by <strong>Linus Torvalds in 1991</strong>. It manages hardware resources (memory, CPU, storage, networking) and provides a platform where applications run.<br />Linux is particularly popular among engineers because of its:</p>
<ul>
<li><p>Security</p>
</li>
<li><p>Flexibility</p>
</li>
<li><p>Lightweight architecture</p>
</li>
<li><p>Open-source community support</p>
</li>
<li><p>Strong presence in cloud, DevOps, and server environments</p>
</li>
</ul>
<hr />
<h1 id="heading-3-fifteen-linux-terminal-commands-i-researched-and-practiced"><strong>3. Fifteen Linux Terminal Commands I Researched and Practiced</strong></h1>
<p>As part of the assignment, I initially explored 5 uncommon Linux commands — but I have now added 10 more to make a total of <strong>15 powerful commands</strong> useful for any beginner cloud or DevOps engineer.</p>
<p>You’ll also find an image beneath each command that displays the output you should expect to see when you run it.</p>
<hr />
<h2 id="heading-31-lsblk-list-block-devices"><strong>3.1 lsblk — List Block Devices</strong></h2>
<p>Used to list all storage devices and partitions.</p>
<pre><code class="lang-plaintext">lsblk
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763674628057/08512767-54d4-4332-9ac0-0244bb42f99d.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-32-grep-search-patterns-in-text"><strong>3.2 grep — Search Patterns in Text</strong></h2>
<pre><code class="lang-plaintext">grep "keyword" filename
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763674667829/249eaaea-d669-4202-897c-a18a42107960.png" alt class="image--center mx-auto" /></p>
<p><strong>3.3 top — Real-Time Process Viewer</strong></p>
<pre><code class="lang-plaintext">top
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763674716721/7eb94b3a-fc40-44b5-9b55-fad080d61244.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-34-htop-advanced-process-manager"><strong>3.4 htop — Advanced Process Manager</strong></h2>
<pre><code class="lang-plaintext">htop
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763674874457/6e29450d-5359-46c4-8d0c-8c27c0ca2c0b.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-35-ps-aux-view-all-running-processes"><strong>3.5 ps aux — View All Running Processes</strong></h2>
<pre><code class="lang-plaintext">ps aux
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763674898153/1fd961e0-6031-4ed4-a264-1254d2e83b70.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-additional-10-linux-commands-expanded-list"><strong>Additional 10 Linux Commands (Expanded List)</strong></h1>
<p>Below are 10 more commands to broaden your Linux CLI experience.</p>
<hr />
<h2 id="heading-36-df-check-disk-usage"><strong>3.6 df — Check Disk Usage</strong></h2>
<p>Shows available and used disk space on mounted filesystems.</p>
<pre><code class="lang-plaintext">df -h
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763675055800/4af320af-a37a-4fab-8bb6-0288a0040ab4.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-37-du-check-directory-size"><strong>3.7 du — Check Directory Size</strong></h2>
<p>Shows size of files and folders.</p>
<pre><code class="lang-plaintext">du -sh *
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763675329057/d2d36ef3-d1ba-4acf-952e-79e7f9afad81.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-38-free-view-ram-usage"><strong>3.8 free — View RAM Usage</strong></h2>
<p>Displays memory usage in real-time.</p>
<pre><code class="lang-plaintext">free -h
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763675397396/4441a79d-62ec-4429-8054-1abf64871003.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-39-uname-display-system-information"><strong>3.9 uname — Display System Information</strong></h2>
<p>Shows OS name, kernel version, hardware architecture.</p>
<pre><code class="lang-plaintext">uname -a
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763675640678/b6eb5d57-de55-4fc7-8b6b-61e9f4af9e86.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-310-whoami-show-current-logged-in-user"><strong>3.10 whoami — Show Current Logged-In User</strong></h2>
<pre><code class="lang-plaintext">whoami
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763675686553/4ac8b902-64ed-4138-8b56-cb1f368ac126.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-311-chmod-change-file-permissions"><strong>3.11 chmod — Change File Permissions</strong></h2>
<pre><code class="lang-plaintext">chmod 755 file.txt
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763675726056/930063be-6363-486d-b658-233d538024c7.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-312-chown-change-filedirectory-ownership"><strong>3.12 chown — Change File/Directory Ownership</strong></h2>
<pre><code class="lang-plaintext">sudo chown user:user file.txt
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763676049238/1cc1874f-3d69-4ea6-bac2-4cd80b5de769.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-313-systemctl-manage-system-services"><strong>3.13 systemctl — Manage System Services</strong></h2>
<p>Used to start, stop, enable, or disable services.</p>
<pre><code class="lang-plaintext">sudo systemctl status ssh
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763676133327/279f6486-2748-45ed-baf3-edb41a9e1389.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-314-ping-test-network-connectivity"><strong>3.14 ping — Test Network Connectivity</strong></h2>
<pre><code class="lang-plaintext">ping google.com
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763676246110/bbdf8b15-38f3-42e0-b036-d29e91167f1e.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-315-history-view-previously-run-commands"><strong>3.15 history — View Previously Run Commands</strong></h2>
<pre><code class="lang-plaintext">history
</code></pre>
<hr />
<h1 id="heading-4-user-management-and-file-permissions"><strong>4. User Management and File Permissions</strong></h1>
<h2 id="heading-41-creating-users-anna-beatrice-conrad"><strong>4.1 Creating Users (Anna, Beatrice, Conrad)</strong></h2>
<pre><code class="lang-plaintext">sudo adduser Anna
sudo adduser Beatrice
sudo adduser Conrad
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763676856776/04298007-1bdf-4e43-9acc-9273107d826a.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-42-creating-the-file-indexhtml"><strong>4.2 Creating the File (index.html)</strong></h2>
<pre><code class="lang-plaintext">echo "Welcome to my webpage" &gt; index.html
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763676341560/1f3512dd-a81e-47b8-a376-1c92143d34fc.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-43-assigning-different-permissions-using-acls"><strong>4.3 Assigning Different Permissions Using ACLs</strong></h2>
<ul>
<li><p>Anna → Read</p>
</li>
<li><p>Beatrice → Write</p>
</li>
<li><p>Conrad → Execute</p>
</li>
</ul>
<pre><code class="lang-plaintext">sudo setfacl -m u:Anna:r index.html
sudo setfacl -m u:Beatrice:w index.html
sudo setfacl -m u:Conrad:x index.html
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763676578763/7dc1fb05-f227-4013-a0b0-c498d3dae443.png" alt class="image--center mx-auto" /></p>
<hr />
<h1 id="heading-conclusion"><strong>Conclusion</strong></h1>
<p>This expanded assignment gave me deeper insight into:</p>
<ul>
<li><p>Cloud Computing basics</p>
</li>
<li><p>Linux OS fundamentals</p>
</li>
<li><p>Essential command-line operations</p>
</li>
<li><p>User and permission management</p>
</li>
<li><p>Practical DevOps-related tasks</p>
</li>
</ul>
<p>With 15 Linux commands explored and hands-on practice in managing users and filesystem permissions, this experience strengthened my foundation for advanced cloud computing and DevOps engineering.</p>
]]></content:encoded></item><item><title><![CDATA[🧑🏽‍💻 How I Deployed an Ubuntu 24.04 Virtual Machine on My Mac Using UTM and Connected to It via SSH]]></title><description><![CDATA[🧭 Introduction
In this post, I’ll walk you through how I successfully downloaded the Ubuntu 24.04 image, hosted it using UTM on my MacBook, and then connected to it using SSH from my Mac Terminal.
This guide is perfect for anyone who wants to set up...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/how-i-deployed-an-ubuntu-2404-virtual-machine-on-my-mac-using-utm-and-connected-to-it-via-ssh</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/how-i-deployed-an-ubuntu-2404-virtual-machine-on-my-mac-using-utm-and-connected-to-it-via-ssh</guid><category><![CDATA[Linux]]></category><category><![CDATA[linux for beginners]]></category><category><![CDATA[Ubuntu]]></category><category><![CDATA[Devops]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Thu, 20 Nov 2025 17:04:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762029294484/41124fea-3f68-448f-b3fc-be558cefb962.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2 id="heading-introduction">🧭 Introduction</h2>
<p>In this post, I’ll walk you through how I successfully <strong>downloaded the Ubuntu 24.04 image</strong>, <strong>hosted it using UTM on my MacBook</strong>, and then <strong>connected to it using SSH</strong> from my Mac Terminal.</p>
<p>This guide is perfect for anyone who wants to set up an Ubuntu environment on macOS for learning Linux, testing server configurations, or practicing DevOps commands.</p>
<p>By the end of this article, you’ll be able to:</p>
<ul>
<li><p>Download and install Ubuntu 24.04 using UTM on a Mac.</p>
</li>
<li><p>Locate your VM’s IP address.</p>
</li>
<li><p>Configure SSH access and connect seamlessly from your Mac Terminal.</p>
</li>
</ul>
<hr />
<h2 id="heading-step-1-downloading-the-ubuntu-2404-image">🧩 Step 1: Downloading the Ubuntu 24.04 Image</h2>
<ol>
<li><p>Open your web browser and go to the official <a target="_blank" href="https://ubuntu.com/download/desktop">Ubuntu Downloads page</a>.</p>
</li>
<li><p>Select <strong>Ubuntu 24.04 LTS (Noble Numbat)</strong>.</p>
<ul>
<li><p>For most modern Macs, choose <strong>ARM (Apple Silicon)</strong> if you have an M1, M2, or M3 chip.</p>
</li>
<li><p>If you’re on an Intel Mac, download the <strong>AMD64 (x86_64)</strong> version.</p>
</li>
</ul>
</li>
<li><p>Once downloaded, you’ll get an <code>.iso</code> or <code>.img</code> file (depending on your choice).</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763654883600/4d1cb799-2f92-42c6-9a25-4bf387e4c562.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-2-installing-and-setting-up-utm-on-macos">⚙️ Step 2: Installing and Setting Up UTM on macOS</h2>
<p>UTM is a lightweight virtualization app for macOS that allows you to run virtual machines easily.</p>
<ol>
<li><p>Visit <a target="_blank" href="https://mac.getutm.app/">https://mac.getutm.app/</a> and download <strong>UTM for macOS</strong>.</p>
</li>
<li><p>Drag the UTM app into your <strong>Applications</strong> folder and open it.</p>
</li>
<li><p>Click <strong>Create a New Virtual Machine</strong>.</p>
</li>
<li><p>Choose <strong>Virtualize</strong> (since we’re using a standard OS image).</p>
</li>
<li><p>Select <strong>Linux</strong> as the operating system.</p>
</li>
<li><p>Under <strong>Boot ISO Image</strong>, click <strong>Browse</strong> and select the Ubuntu 24.04 image you downloaded.</p>
</li>
<li><p>Allocate:</p>
<ul>
<li><p><strong>Memory (RAM):</strong> At least 2 GB (4 GB recommended)</p>
</li>
<li><p><strong>CPU Cores:</strong> 2 or more for smoother performance</p>
</li>
</ul>
</li>
<li><p>Proceed through the setup, then click <strong>Save</strong> to finish.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763655001480/3d509a3e-a1b8-4c61-964f-d3151a588726.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-3-installing-ubuntu-inside-the-vm">🚀 Step 3: Installing Ubuntu Inside the VM</h2>
<ol>
<li><p>Start the VM by clicking <strong>Play ▶️</strong> in UTM.</p>
</li>
<li><p>The Ubuntu installer will load — follow the on-screen setup:</p>
<ul>
<li><p>Choose <strong>Try or Install Ubuntu</strong></p>
</li>
<li><p>Select your <strong>language</strong> and <strong>keyboard layout</strong></p>
</li>
<li><p>Choose <strong>Install Ubuntu</strong></p>
</li>
<li><p>Create a username (e.g. <code>user01</code>) and password</p>
</li>
</ul>
</li>
<li><p>Wait for installation to finish, then reboot the VM when prompted.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763655126808/259f1f38-4ac8-4296-a667-f8cfe132075c.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-4-verifying-your-network-and-checking-the-vm-ip-address">🌐 Step 4: Verifying Your Network and Checking the VM IP Address</h2>
<p>To connect via SSH later, you’ll need your Ubuntu VM’s <strong>IP address</strong>.</p>
<ol>
<li><p>Once logged into your Ubuntu VM, open the Terminal.</p>
</li>
<li><p>Run the following command:</p>
<pre><code class="lang-bash"> ip a
</code></pre>
<p> Look for the network interface (often <code>enp0s1</code>, <code>eth0</code>, or similar) — you’ll see something like:</p>
<pre><code class="lang-plaintext"> inet 192.168.64.12/24
</code></pre>
<p> The number before <code>/24</code> is your VM’s IP address.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763655405031/946fb775-ba8d-466b-b9aa-b4680c3a8148.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-5-enabling-ssh-server-on-ubuntu">🔑 Step 5: Enabling SSH Server on Ubuntu</h2>
<p>Ubuntu Desktop doesn’t come with SSH enabled by default, so let’s install it:</p>
<ol>
<li><p>Run:</p>
<pre><code class="lang-bash"> sudo apt update
 sudo apt install openssh-server -y
</code></pre>
</li>
<li><p>Start and enable SSH:</p>
<pre><code class="lang-bash"> sudo systemctl <span class="hljs-built_in">enable</span> ssh
 sudo systemctl start ssh
</code></pre>
</li>
<li><p>Check the SSH service status:</p>
<pre><code class="lang-bash"> sudo systemctl status ssh
</code></pre>
<p> You should see <strong>active (running)</strong> highlighted in green.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763655499689/b33f6295-a5a1-42d0-9891-1ab1492d4431.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-6-ssh-into-the-vm-from-your-mac-terminal">💻 Step 6: SSH into the VM from Your Mac Terminal</h2>
<p>Now that your VM is running and SSH is enabled, it’s time to connect from your Mac.</p>
<ol>
<li><p>Open <strong>Terminal</strong> on your Mac.</p>
</li>
<li><p>Use the following command:</p>
<pre><code class="lang-bash"> ssh user01@192.168.64.12
</code></pre>
<p> Replace:</p>
<ul>
<li><p><code>user01</code> → your Ubuntu username</p>
</li>
<li><p><code>192.168.64.12</code> → your VM’s IP address</p>
</li>
</ul>
</li>
<li><p>When prompted, type <code>yes</code> to trust the connection, then enter your Ubuntu password.</p>
</li>
</ol>
<p>✅ You’re now inside your Ubuntu VM terminal remotely!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763656019205/8c727bce-9935-4679-a0b4-60051a321178.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-7-optional-fix-ssh-permission-errors">🧠 Step 7: (Optional) Fix SSH Permission Errors</h2>
<p>If you see something like:</p>
<pre><code class="lang-plaintext">Permission denied (publickey,password)
</code></pre>
<p>That usually means:</p>
<ul>
<li><p>The SSH service isn’t running (<code>sudo systemctl restart ssh</code>)</p>
</li>
<li><p>Your username or IP is wrong</p>
</li>
<li><p>The VM isn’t connected to the network (check <code>ip a</code> again)</p>
</li>
</ul>
<p>Try reconnecting after confirming those fixes.</p>
<hr />
<h2 id="heading-step-8-make-your-ssh-login-easier-optional-shortcut">🧱 Step 8: Make Your SSH Login Easier (Optional Shortcut)</h2>
<p>You can save your connection details in a config file so you don’t have to type the full command every time.</p>
<p>On your Mac, run:</p>
<pre><code class="lang-bash">nano ~/.ssh/config
</code></pre>
<p>Add:</p>
<pre><code class="lang-plaintext">Host ubuntu-vm
    HostName 192.168.64.12
    User user01
</code></pre>
<p>Now, connect with:</p>
<pre><code class="lang-bash">ssh ubuntu-vm
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763656853002/4301e188-9d0d-4834-bd83-8205703d2b3c.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-9-summary">✅ Step 9: Summary</h2>
<p>Here’s everything we accomplished:</p>
<ul>
<li><p>Downloaded Ubuntu 24.04 LTS from the official site</p>
</li>
<li><p>Installed and configured it inside UTM</p>
</li>
<li><p>Verified networking and found the VM’s IP</p>
</li>
<li><p>Installed and started the SSH service</p>
</li>
<li><p>Connected to the VM securely from macOS Terminal</p>
</li>
</ul>
<p>With this setup, you now have a <strong>fully functional Linux environment</strong> for coding, DevOps experiments, or cloud practice — right from your MacBook.</p>
<hr />
<h2 id="heading-next-steps">🚀 Next Steps</h2>
<p>Now that SSH works, you can:</p>
<ul>
<li><p>Configure <strong>SSH key authentication</strong> for passwordless login</p>
</li>
<li><p>Set a <strong>static IP</strong> in Ubuntu using Netplan</p>
</li>
<li><p>Install <strong>Docker</strong> or <strong>Kubernetes (minikube)</strong> inside your VM</p>
</li>
<li><p>Start building DevOps pipelines locally</p>
</li>
</ul>
<hr />
<h2 id="heading-conclusion">✍🏽 Conclusion</h2>
<p>Hosting Ubuntu 24.04 on UTM gave me a solid, isolated Linux workspace right on my Mac — no need for dual booting or external servers.<br />The process taught me how virtualization, SSH, and networking fit together, and it’s an excellent foundation for anyone learning <strong>Linux</strong>, <strong>Cloud Computing</strong>, or <strong>DevOps</strong>.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[How to Create a Practical IoT Solution Using Azure IoT Hub]]></title><description><![CDATA[In the age of the Internet of Things (IoT), Azure IoT Hub provides a scalable and secure way to connect, monitor, and control IoT devices. This guide will walk you through setting up a practical IoT solution using Azure IoT Hub, including registering...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/how-to-create-a-practical-iot-solution-using-azure-iot-hub</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/how-to-create-a-practical-iot-solution-using-azure-iot-hub</guid><category><![CDATA[Devops]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Azure]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Sat, 01 Nov 2025 20:22:58 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1733916683629/839de66c-605b-4a49-ae4e-a00633692c70.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the age of the Internet of Things (IoT), Azure IoT Hub provides a scalable and secure way to connect, monitor, and control IoT devices. This guide will walk you through setting up a practical IoT solution using Azure IoT Hub, including registering a device and simulating the device to send telemetry data to Azure Blob Storage.</p>
<h2 id="heading-step-1-setting-up-an-azure-iot-hub">Step 1: Setting Up an Azure IoT Hub</h2>
<h3 id="heading-prerequisites">Prerequisites</h3>
<p>Before you begin, ensure you have:</p>
<ul>
<li><p>An active <a target="_blank" href="https://azure.microsoft.com/">Azure account</a>.</p>
</li>
<li><p>Azure CLI installed locally (optional but recommended).</p>
</li>
</ul>
<h3 id="heading-create-an-iot-hub">Create an IoT Hub</h3>
<ol>
<li><p><strong>Sign in to Azure Portal</strong></p>
<ul>
<li><p>Log in to the <a target="_blank" href="https://portal.azure.com/">Azure Portal</a>.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1733915497374/69976239-6120-4ba3-98ff-f6f037b9c776.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
<li><p><strong>Create an IoT Hub</strong></p>
<ul>
<li><p>Navigate to <strong>Create a resource</strong> &gt; <strong>Internet of Things</strong> &gt; <strong>IoT Hub</strong>.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1733915790358/0dec1892-4ea3-4725-9d78-3d0e6abcbf32.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1733915805351/8ede93e4-66b1-4182-915a-3368db5686e8.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1733915813265/def5ceca-7eca-4c1d-838c-dd59311c4977.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1733915819409/fe6db50f-3db4-417d-8193-9cf0e3b37b1c.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1733915955708/af5b2ba3-a2de-45a9-ad7f-d8fa3d9e5a1c.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1733915963814/29fb1125-ac92-4464-8698-b141ddf07b78.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Fill in the required fields:</p>
<ul>
<li><p><strong>Subscription</strong>: Select your Azure subscription.</p>
</li>
<li><p><strong>Resource Group</strong>: Create a new one or use an existing one.</p>
</li>
<li><p><strong>Region</strong>: Select a location close to your devices.</p>
</li>
<li><p><strong>Pricing and Scale Tier</strong>: Choose a tier suitable for your needs (e.g., F1 for free tier).</p>
</li>
</ul>
</li>
<li><p>Click <strong>Review + Create</strong> and then <strong>Create</strong>.</p>
</li>
</ul>
</li>
<li><p><strong>Access IoT Hub Settings</strong></p>
<ul>
<li>Once the IoT Hub is created, navigate to it in the Azure Portal.</li>
</ul>
</li>
</ol>
<h2 id="heading-step-2-registering-a-device">Step 2: Registering a Device</h2>
<h3 id="heading-create-a-device-identity">Create a Device Identity</h3>
<ol>
<li><p>In the IoT Hub, go to <strong>IoT devices</strong> under the <strong>Device Management</strong> section.</p>
</li>
<li><p>Click <strong>+ New</strong> to add a new device.</p>
</li>
<li><p>Fill in the required fields:</p>
<ul>
<li><p><strong>Device ID</strong>: Give your device a unique identifier.</p>
</li>
<li><p><strong>Authentication type</strong>: Use <strong>Symmetric key</strong> for simplicity.</p>
</li>
</ul>
</li>
<li><p>Click <strong>Save</strong>.</p>
</li>
</ol>
<h3 id="heading-retrieve-connection-string">Retrieve Connection String</h3>
<ul>
<li>After saving, select the device and copy its <strong>Primary Connection String</strong>. This will be used by the simulated device to authenticate.</li>
</ul>
<h2 id="heading-step-3-simulating-a-device">Step 3: Simulating a Device</h2>
<h3 id="heading-install-required-tools">Install Required Tools</h3>
<ol>
<li><p>Ensure you have Python installed.</p>
</li>
<li><p>Install the Azure IoT Device SDK for Python:</p>
<pre><code class="lang-bash"> pip install azure-iot-device
</code></pre>
</li>
</ol>
<h3 id="heading-create-a-simulation-script">Create a Simulation Script</h3>
<p>Create a Python script to simulate telemetry data. Below is a basic example:</p>
<pre><code class="lang-python"><span class="hljs-keyword">import</span> time
<span class="hljs-keyword">from</span> azure.iot.device <span class="hljs-keyword">import</span> IoTHubDeviceClient, Message

CONNECTION_STRING = <span class="hljs-string">"&lt;Your_Device_Connection_String&gt;"</span>

<span class="hljs-comment"># Define the telemetry data</span>
TEMPERATURE = <span class="hljs-number">20</span>
HUMIDITY = <span class="hljs-number">60</span>

<span class="hljs-comment"># Create IoT Hub client</span>
client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">send_telemetry</span>():</span>
    <span class="hljs-keyword">try</span>:
        print(<span class="hljs-string">"Sending telemetry to IoT Hub..."</span>)
        <span class="hljs-keyword">while</span> <span class="hljs-literal">True</span>:
            telemetry = {
                <span class="hljs-string">"temperature"</span>: TEMPERATURE + (<span class="hljs-number">2</span> * time.time() % <span class="hljs-number">1</span>),
                <span class="hljs-string">"humidity"</span>: HUMIDITY + (<span class="hljs-number">1.5</span> * time.time() % <span class="hljs-number">1</span>)
            }
            message = Message(str(telemetry))
            client.send_message(message)
            print(<span class="hljs-string">f"Telemetry sent: <span class="hljs-subst">{telemetry}</span>"</span>)
            time.sleep(<span class="hljs-number">5</span>)  <span class="hljs-comment"># Send every 5 seconds</span>
    <span class="hljs-keyword">except</span> KeyboardInterrupt:
        print(<span class="hljs-string">"Simulation stopped."</span>)
    <span class="hljs-keyword">finally</span>:
        client.disconnect()

send_telemetry()
</code></pre>
<p>Replace <code>&lt;Your_Device_Connection_String&gt;</code> with the connection string you retrieved earlier.</p>
<p>Run the script:</p>
<pre><code class="lang-bash">python simulate_device.py
</code></pre>
<h2 id="heading-step-4-storing-data-in-azure-blob-storage">Step 4: Storing Data in Azure Blob Storage</h2>
<h3 id="heading-set-up-blob-storage">Set Up Blob Storage</h3>
<ol>
<li><p>In the Azure Portal, create a <strong>Storage Account</strong>.</p>
</li>
<li><p>Inside the storage account, create a <strong>Container</strong> to hold the data.</p>
</li>
</ol>
<h3 id="heading-link-iot-hub-to-blob-storage">Link IoT Hub to Blob Storage</h3>
<ol>
<li><p>Navigate to your IoT Hub and go to <strong>Routes</strong> under the <strong>Message Routing</strong> section.</p>
</li>
<li><p>Click <strong>+ Add</strong>:</p>
<ul>
<li><p><strong>Data Source</strong>: Select "Device Telemetry".</p>
</li>
<li><p><strong>Endpoint Type</strong>: Select "Storage" and configure it with your blob storage account.</p>
</li>
<li><p><strong>Route Name</strong>: Provide a meaningful name.</p>
</li>
</ul>
</li>
<li><p>Save the route.</p>
</li>
</ol>
<h3 id="heading-verify-data-storage">Verify Data Storage</h3>
<ul>
<li><p>Ensure your device simulation is running.</p>
</li>
<li><p>Check the Azure Blob Storage container for incoming telemetry data.</p>
</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>By following these steps, you have successfully set up an IoT solution using Azure IoT Hub. You’ve registered a device, simulated telemetry data, and routed that data to Azure Blob Storage. This framework can be extended to include advanced features like real-time monitoring, alerting, or integration with analytics services like Azure Stream Analytics and Power BI.</p>
]]></content:encoded></item><item><title><![CDATA[Step-by-Step Guide: Creating an Azure Virtual Network with Four Subnets Using Custom Address Space]]></title><description><![CDATA[Azure Virtual Networks (VNet) are the building blocks for establishing secure, private networks in Microsoft Azure. In this tutorial, you’ll learn how to create a virtual network with four subnets using the address space 192.148.30.0/26. Dividing you...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/step-by-step-guide-creating-an-azure-virtual-network-with-four-subnets-using-custom-address-space</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/step-by-step-guide-creating-an-azure-virtual-network-with-four-subnets-using-custom-address-space</guid><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Sat, 30 Nov 2024 11:04:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1732964462238/33ff6565-7a7f-4f9b-99ad-5b8fcc3f964f.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Azure Virtual Networks (VNet) are the building blocks for establishing secure, private networks in Microsoft Azure. In this tutorial, you’ll learn how to create a virtual network with four subnets using the address space <code>192.148.30.0/26</code>. Dividing your VNet into subnets allows you to isolate workloads and manage traffic effectively, enhancing security and performance.</p>
<p>This blog will walk you through the process step by step.</p>
<hr />
<h2 id="heading-step-1-log-in-to-the-azure-portal"><strong>Step 1: Log in to the Azure Portal</strong></h2>
<ol>
<li><p>Open your web browser and navigate to <a target="_blank" href="https://portal.azure.com/">Azure Portal</a>.</p>
</li>
<li><p>Enter your Azure account credentials to log in.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732914628514/ad60367b-188b-4dea-9ea4-882565763d69.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-2-navigate-to-virtual-networks"><strong>Step 2: Navigate to Virtual Networks</strong></h2>
<ol>
<li><p>In the search bar at the top of the Azure Portal, type "Virtual Networks" and select the <strong>Virtual Networks</strong> service from the results.</p>
</li>
<li><p>Click on the <strong>+ Create</strong> button to start configuring your virtual network.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732914707547/f466cfa3-60b6-4ea5-a2b2-14906794a930.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732915157091/1b0ac403-52d3-4c66-a092-723bb33faed0.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732915165550/cb94ee0b-be97-4102-a325-9730cdc38b44.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732915273075/f23a3be2-b3be-433b-b20f-145605b37483.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-3-configure-the-basics"><strong>Step 3: Configure the Basics</strong></h2>
<ol>
<li><p>In the <strong>Basics</strong> tab of the Virtual Network creation wizard:</p>
<ul>
<li><p><strong>Subscription</strong>: Select the appropriate subscription.</p>
</li>
<li><p><strong>Resource Group</strong>: Choose an existing resource group or create a new one (e.g., VN-rg).</p>
</li>
<li><p><strong>Name</strong>: Provide a name for your virtual network, such as VN-instance.</p>
</li>
<li><p><strong>Region</strong>: Select the Azure region where the VN-instance will be deployed.</p>
</li>
</ul>
</li>
<li><p>Click <strong>Next: IP Addresses</strong>.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732915632376/ae12b852-e679-4a62-ae08-bdc892375dfc.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732915641409/7d5f2064-2d1e-4485-a0cb-ba63e016ce46.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-4-configure-the-address-space"><strong>Step 4: Configure the Address Space</strong></h2>
<ol>
<li><p>Under the <strong>IP Addresses</strong> tab:</p>
<ul>
<li><p>Add the address space <code>192.148.30.0/26</code>. This address space provides 64 IP addresses, which we’ll divide into four subnets.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732960355561/d6259ac6-62d9-4952-a580-e7117df79bde.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732961130292/3939704c-3343-4ed3-b7c4-e46d6e0bab41.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
<li><p>Scroll down to the <strong>Subnets</strong> section.</p>
</li>
</ol>
<hr />
<h2 id="heading-step-5-create-four-subnets"><strong>Step 5: Create Four Subnets</strong></h2>
<p>We’ll divide the address space into four equal subnets, each with 16 IP addresses:</p>
<ul>
<li><p><strong>finance-department</strong>: <code>192.148.30.0/28</code></p>
</li>
<li><p><strong>marketing-department</strong>: <code>192.148.30.64/28</code></p>
</li>
<li><p><strong>purchasing-department</strong>: <code>192.148.30.128/28</code></p>
</li>
<li><p><strong>IT-department</strong>: <code>192.148.30.192/28</code></p>
</li>
</ul>
<h3 id="heading-steps-to-add-subnets">Steps to Add Subnets:</h3>
<ol>
<li><p>Click <strong>+ Add subnet</strong> under the <strong>Subnets</strong> section.</p>
</li>
<li><p>For <strong>Subnet Name</strong>, enter <strong>finance-department</strong>.</p>
</li>
<li><p>For <strong>Subnet Address Range</strong>, enter <code>192.148.30.0/28</code>.</p>
</li>
<li><p>Click <strong>Add</strong>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732961315925/7a06c84d-2525-4876-9d7a-7e448bbb54a9.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732961333911/80981b7f-acab-4bd6-b3b2-8509efaece4a.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732961353184/f4c8e699-d63e-4c2a-8fc7-617f4840731f.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Repeat the process to add marketing-department, purchasing-department, and IT-department, using their respective address ranges.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732962262662/4c563f87-13f8-4f83-865d-b20868483184.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-6-review-and-create"><strong>Step 6: Review and Create</strong></h2>
<ol>
<li><p>Click <strong>Next: Security</strong>, then <strong>Next: Tags</strong>, and finally, <strong>Review + Create</strong>.</p>
</li>
<li><p>Review the summary of your configuration, ensuring all details are correct.</p>
</li>
<li><p>Click <strong>Create</strong> to deploy your virtual network.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732962498978/d3e0a40b-10c6-45d5-beff-c5ce068f0778.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-7-verify-your-virtual-network"><strong>Step 7: Verify Your Virtual Network</strong></h2>
<ol>
<li><p>Once the deployment is complete, navigate to the <strong>Virtual Networks</strong> service in the Azure Portal.</p>
</li>
<li><p>Select the virtual network you just created (e.g., VN-instance).</p>
</li>
<li><p>Go to the <strong>Subnets</strong> tab and verify that all four subnets are listed:</p>
<ul>
<li><p>finance-department: <code>192.148.30.0/28</code></p>
</li>
<li><p>marketing-department: <code>192.148.30.64/28</code></p>
</li>
<li><p>purchasing-department: <code>192.148.30.128/28</code></p>
</li>
<li><p>IT-department: <code>192.148.30.192/28</code></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732962859729/f7102ea9-10b9-4c58-8a26-8d76d8c5ebaa.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732962869351/dabb6fa9-a0e7-4973-b8a0-1ceff1b1d378.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732962936026/960c44cd-d2e9-42fe-86fe-30a541e845bb.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
</ol>
<hr />
<h2 id="heading-step-8-next-steps"><strong>Step 8: Next Steps</strong></h2>
<p>You’ve now successfully created a virtual network with four subnets using the address space <code>192.148.30.0/26</code>. To take your setup further:</p>
<ul>
<li><p><strong>Associate Network Security Groups (NSGs):</strong> Protect each subnet with security rules.</p>
</li>
<li><p><strong>Integrate with Services:</strong> Attach virtual machines, app services, or other Azure resources to these subnets.</p>
</li>
<li><p><strong>Set Up Routing:</strong> Define custom routes if needed for advanced traffic control.</p>
</li>
</ul>
<hr />
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Creating a well-structured Azure Virtual Network with subnets helps optimize resource segmentation, security, and traffic management. Following this guide ensures you can design and deploy a scalable network foundation tailored to your needs.</p>
<p>If you have any questions or feedback, feel free to drop a comment below. Happy networking!</p>
<hr />
<p><strong>Pro Tip:</strong> Always plan your address spaces and subnet sizes carefully to avoid conflicts and ensure scalability.</p>
]]></content:encoded></item><item><title><![CDATA[How to Download a Portfolio Template from ThemeWagon and Host it on Azure Blob Storage]]></title><description><![CDATA[Azure Blob Storage is an excellent choice for hosting static websites due to its scalability, affordability, and ease of use. In this guide, we’ll walk you through the steps to deploy and host a static website using Azure Blob Storage.
What is Azure ...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/how-to-download-a-portfolio-template-from-themewagon-and-host-it-on-azure-blob-storage</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/how-to-download-a-portfolio-template-from-themewagon-and-host-it-on-azure-blob-storage</guid><category><![CDATA[#hagital consulting]]></category><category><![CDATA[Portfolio Project]]></category><category><![CDATA[azure blob storage]]></category><category><![CDATA[Devops]]></category><category><![CDATA[azure-devops]]></category><category><![CDATA[storage]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Wed, 20 Nov 2024 06:59:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1732045551230/4333de22-cf68-49c4-929d-b9f0ad94bdc4.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Azure Blob Storage is an excellent choice for hosting static websites due to its scalability, affordability, and ease of use. In this guide, we’ll walk you through the steps to deploy and host a static website using Azure Blob Storage.</p>
<h2 id="heading-what-is-azure-blob-storage">What is Azure Blob Storage?</h2>
<p>Azure Blob Storage is a cloud-based service for storing large amounts of unstructured data. It supports hosting static content like HTML, CSS, JavaScript, and images, making it a great option for static websites.</p>
<h3 id="heading-step-by-step-guide-to-hosting-a-static-website-on-azure-blob-storage">Step-by-Step Guide to Hosting a Static Website on Azure Blob Storage</h3>
<p>Creating and hosting a portfolio website has never been easier! With platforms like <strong>ThemeWagon</strong> providing stunning free and premium templates, and <strong>Azure Blob Storage</strong> offering cost-effective hosting, you can get your site online in no time.</p>
<p>In this guide, we’ll walk you through:</p>
<ol>
<li><p>Downloading a portfolio template from ThemeWagon.</p>
</li>
<li><p>Hosting your static website on Azure Blob Storage</p>
</li>
</ol>
<hr />
<h2 id="heading-step-1-download-a-portfolio-template-from-themewagon"><strong>Step 1: Download a Portfolio Template from ThemeWagon</strong></h2>
<hr />
<h3 id="heading-step-11-visit-the-themewagon-website"><strong>Step 1.1: Visit the ThemeWagon Website</strong></h3>
<ol>
<li><p>Open your web browser and go to the <a target="_blank" href="https://themewagon.com">ThemeWagon website</a>.</p>
</li>
<li><p>Use the <strong>search bar</strong> or navigate to the <strong>Portfolio Templates</strong> section.</p>
<blockquote>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732045779301/0697496c-db31-4e4f-8b97-caac7be3d477.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732046099560/af4ce9e2-4034-4086-ae15-fe1d5978d047.png" alt class="image--center mx-auto" /></p>
</blockquote>
</li>
</ol>
<hr />
<h3 id="heading-step-12-choose-your-template"><strong>Step 1.2: Choose Your Template</strong></h3>
<ol>
<li><p>Browse through the portfolio templates.</p>
</li>
<li><p>Click on a template to view its details. Check out the demo to ensure it meets your requirements.</p>
</li>
</ol>
<blockquote>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732046341764/4396e0d4-e5a1-45c2-8d88-c1351c8951c0.png" alt class="image--center mx-auto" /></p>
</blockquote>
<hr />
<h3 id="heading-step-13-download-the-template"><strong>Step 1.3: Download the Template</strong></h3>
<ol>
<li><p>If the template is free:</p>
<ul>
<li>Click the <strong>Download</strong> button and save the <code>.zip</code> file to your computer.</li>
</ul>
</li>
<li><p>For premium templates:</p>
<ul>
<li>Purchase the template, then download the <code>.zip</code> file.</li>
</ul>
</li>
</ol>
<blockquote>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732046446949/67d2264b-dc66-4c55-8a35-d5a0f05eb22d.png" alt class="image--center mx-auto" /></p>
</blockquote>
<hr />
<h3 id="heading-step-14-extract-the-template-files"><strong>Step 1.4: Extract the Template Files</strong></h3>
<ol>
<li><p>Locate the downloaded <code>.zip</code> file.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732080318866/6ecbceef-ac54-4be5-bfc8-a5b932e7909d.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Extract the contents to a folder using tools like <strong>WinRAR</strong> or <strong>7-Zip</strong>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732080424714/4dc07f44-9b40-4063-9d37-e01c5ef789b7.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Inside the extracted folder, you'll find:</p>
<ul>
<li><p><code>index.html</code></p>
</li>
<li><p>Folders for <strong>CSS</strong>, <strong>JavaScript</strong>, <strong>images</strong>, etc.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732080571183/e9e2fbed-72e5-46bb-be09-dc8e7bdeb506.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Go to your code editor and Open the unzipped Folder using any code Editor of your choice e.g Visual studio code(VS code)</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732081270731/c5488d23-4560-4185-bc65-7669728f5447.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732081277825/1e996c36-b0bc-4760-8420-7125852f1bc4.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
</ol>
<p>Create a new file 404.html and paste the codes below</p>
<ul>
<li>And then Save using Control S for Windows or Command S for Mac</li>
</ul>
<hr />
<h2 id="heading-step-2-host-the-static-website-on-azure-blob-storage"><strong>Step 2: Host the Static Website on Azure Blob Storage</strong></h2>
<p>Azure Blob Storage is ideal for hosting static websites. Follow these steps to deploy your downloaded template.</p>
<hr />
<h3 id="heading-step-21-create-an-azure-storage-account"><strong>Step 2.1: Create an Azure Storage Account</strong></h3>
<ol>
<li><p>Log in to the <a target="_blank" href="https://portal.azure.com">Azure Portal</a>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732082523224/86d73f0b-deac-4b5e-bdaf-f60099c61860.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Click <strong>Create a resource</strong> &gt; <strong>Storage</strong> &gt; <strong>Storage account</strong>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732082595247/27a7ed45-945f-4a1d-8c41-c505e9c0b56d.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732082758010/4a9db790-8c0d-4ca4-a5b9-527c6121a9cb.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732082774967/e279a845-d28a-43fe-94e8-8d299b375e83.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Fill in the required fields:</p>
<ul>
<li><p><strong>Resource group</strong>: Select an existing one or create a new one.</p>
</li>
<li><p><strong>Storage account name</strong>: Enter a globally unique name.</p>
</li>
<li><p><strong>Region</strong>: Choose a region close to your audience.</p>
</li>
<li><p><strong>Performance</strong>: Choose <strong>Standard</strong>.</p>
</li>
<li><p><strong>Redundancy</strong>: Select <strong>LRS (Locally Redundant Storage)</strong>.</p>
</li>
</ul>
</li>
<li><p>Click <strong>Review + Create</strong>, and then click <strong>Create</strong>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732083221411/84fa077a-de8d-4336-a7a3-bb36720aae32.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732083330257/9a242257-f0db-46fc-bcd4-601a3fc60688.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732083517853/7752e106-9f00-40e1-880a-ecb1c2865140.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732084061448/b092f6a5-b42f-4070-8666-33312b5ab7e6.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h3 id="heading-step-22-enable-static-website-hosting"><strong>Step 2.2: Enable Static Website Hosting</strong></h3>
<ol>
<li><p>Open your storage account in the Azure Portal.</p>
</li>
<li><p>In the left-hand menu, select <strong>Static website</strong> under <strong>Data management</strong>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732084097920/fc9c31af-b516-4adc-af52-5bff5c9ad3d4.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Toggle <strong>Static website</strong> to <strong>Enabled</strong>.</p>
<ul>
<li><p><strong>Index document name</strong>: Enter <code>index.html</code>.</p>
</li>
<li><p><strong>Error document path</strong>: (Optional) Enter <code>404.html</code>.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732084240282/53a0eb56-9b35-4b1e-9452-1b7f2743d64a.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
<li><p>Click <strong>Save</strong>. Azure will provide a <strong>Primary Endpoint URL</strong>—this is your website’s public address.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732084739759/29288fdf-0630-41e0-9d9d-3596bfe8d3dc.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h3 id="heading-step-23-upload-your-template-files"><strong>Step 2.3: Upload Your Template Files</strong></h3>
<ol>
<li><p>Navigate to the <strong>Containers</strong> section of your storage account.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732084936165/be1aa61e-fda3-4236-95d5-546d91608c6c.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732084944038/b368c76a-b614-47eb-8e35-f5532ce9b5ac.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Open the <code>$web</code> container (automatically created when static website hosting is enabled).</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732085055571/316a74cb-9b33-4c79-8cf3-41b80a4cc89c.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Click <strong>Upload</strong> and select all files from your extracted folder (HTML, CSS, JavaScript, images, etc.).</p>
<ul>
<li><p>Maintain the folder structure as it is.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732085152803/e595ee87-335a-4214-9f72-623f69e2cbb7.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732085247061/ded52043-2525-4ced-a3ab-82ab2ff52212.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732085435771/5317adc2-f67a-4127-bced-61004913224c.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
</ol>
<hr />
<h3 id="heading-step-24-test-your-website"><strong>Step 2.4: Test Your Website</strong></h3>
<ol>
<li><p>Copy the <strong>Primary Endpoint URL</strong> from the Static Website settings.</p>
</li>
<li><p>Paste it into your browser. Your portfolio website should now be live!</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732085560035/8882c802-41fd-4600-93b5-8d6c9fe685b7.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-3-optional-add-a-custom-domain"><strong>Step 3: (Optional) Add a Custom Domain</strong></h2>
<p>To make your website more professional, you can add a custom domain.</p>
<ol>
<li><p>Update your domain’s DNS settings to include a <strong>CNAME</strong> record pointing to the Azure website endpoint.</p>
</li>
<li><p>In the Azure Portal, navigate to the <strong>Custom domain</strong> section of your storage account.</p>
</li>
<li><p>Enter your custom domain name and validate it.</p>
</li>
</ol>
<hr />
<h3 id="heading-step-4-optional-enable-https"><strong>Step 4: (Optional) Enable HTTPS</strong></h3>
<p>Azure Blob Storage provides HTTPS for the default domain. To enable HTTPS for a custom domain:</p>
<ol>
<li><p>Use <strong>Azure Front Door</strong> or <strong>Azure CDN</strong>.</p>
</li>
<li><p>Follow the configuration steps to secure your site.</p>
</li>
</ol>
<hr />
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>By following these steps, you can easily create and host a stunning portfolio website:</p>
<ol>
<li><p>Download a professional template from <strong>ThemeWagon</strong>.</p>
</li>
<li><p>Host it on <strong>Azure Blob Storage</strong> for reliable and scalable access.</p>
</li>
</ol>
<p>Now, go ahead and showcase your work with your new portfolio site!</p>
<p><strong>Happy Hosting!</strong> 🎉</p>
]]></content:encoded></item><item><title><![CDATA[Understanding the Core Architectural Components of Microsoft Azure]]></title><description><![CDATA[Microsoft Azure is one of the leading cloud computing platforms, providing a wide range of services to help businesses and developers build, deploy, and manage applications. To fully utilize Azure, it’s essential to understand its core architectural ...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/understanding-the-core-architectural-components-of-microsoft-azure</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/understanding-the-core-architectural-components-of-microsoft-azure</guid><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[#hagital consulting]]></category><category><![CDATA[ARM]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Fri, 15 Nov 2024 17:19:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731690937349/a47f802f-7391-4b42-91d3-3be44a4c4a63.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Microsoft Azure is one of the leading cloud computing platforms, providing a wide range of services to help businesses and developers build, deploy, and manage applications. To fully utilize Azure, it’s essential to understand its core architectural components. These components form the foundation of Azure's cloud environment, ensuring scalability, reliability, and flexibility.</p>
<p>In this blog, we’ll dive deep into the essential building blocks of Azure’s architecture, exploring how they work together to deliver seamless cloud services.</p>
<hr />
<h2 id="heading-core-architectural-components-of-azure"><strong>Core Architectural Components of Azure</strong></h2>
<h3 id="heading-1-azure-regions"><strong>1. Azure Regions</strong></h3>
<p>Azure operates data centers worldwide, grouped into regions to provide localized and reliable cloud services.</p>
<ul>
<li><p><strong>Definition</strong>: A region is a geographical area that contains one or more Azure data centers.</p>
</li>
<li><p><strong>Purpose</strong>: Regions allow users to deploy resources close to their target audience to minimize latency and meet data residency requirements.</p>
</li>
<li><p><strong>Examples</strong>: Azure regions include <strong>East US</strong>, <strong>West Europe</strong>, and <strong>Southeast Asia</strong>.</p>
</li>
<li><p><strong>Paired Regions</strong>: Every Azure region is paired with another to ensure business continuity. For example, <strong>East US</strong> is paired with <strong>West US</strong> for disaster recovery and data redundancy.</p>
</li>
</ul>
<hr />
<h3 id="heading-2-azure-resource-groups"><strong>2. Azure Resource Groups</strong></h3>
<p>Resource groups are logical containers used to organize Azure resources.</p>
<ul>
<li><p><strong>Definition</strong>: A resource group is a container for related resources that share the same lifecycle and permissions.</p>
</li>
<li><p><strong>Purpose</strong>: They simplify management by grouping related resources, making it easier to monitor, deploy, and delete them as a unit.</p>
</li>
<li><p><strong>Key Features</strong>:</p>
<ul>
<li><p>Role-Based Access Control (RBAC): Set permissions at the resource group level.</p>
</li>
<li><p>Tagging: Add metadata to resources for easy categorization.</p>
</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-3-azure-resource-manager-arm"><strong>3. Azure Resource Manager (ARM)</strong></h3>
<p>Azure Resource Manager is the backbone of Azure's resource deployment and management.</p>
<ul>
<li><p><strong>Definition</strong>: ARM is a management layer that allows users to create, update, and delete Azure resources.</p>
</li>
<li><p><strong>Key Benefits</strong>:</p>
<ul>
<li><p>Consistent Management: Use templates, APIs, and tools for consistent resource deployment.</p>
</li>
<li><p>Dependency Mapping: Define dependencies between resources to ensure proper deployment order.</p>
</li>
<li><p>Role-Based Access Control (RBAC): Securely manage who can perform actions on specific resources.</p>
</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-4-azure-compute-services"><strong>4. Azure Compute Services</strong></h3>
<p>Azure provides scalable compute options to run applications and services.</p>
<ul>
<li><p><strong>Components</strong>:</p>
<ul>
<li><p><strong>Virtual Machines (VMs)</strong>: Fully customizable virtual servers for hosting applications.</p>
</li>
<li><p><strong>Azure Kubernetes Service (AKS)</strong>: Managed Kubernetes for containerized applications.</p>
</li>
<li><p><strong>App Services</strong>: PaaS for hosting web apps, RESTful APIs, and mobile backends.</p>
</li>
<li><p><strong>Azure Functions</strong>: Serverless compute for event-driven tasks.</p>
</li>
</ul>
</li>
<li><p><strong>Scalability</strong>: Automatically scale compute resources to handle increased workloads.</p>
</li>
</ul>
<hr />
<h3 id="heading-5-azure-networking"><strong>5. Azure Networking</strong></h3>
<p>Azure's networking services connect and secure resources globally.</p>
<ul>
<li><p><strong>Key Components</strong>:</p>
<ul>
<li><p><strong>Virtual Network (VNet)</strong>: Enables secure communication between Azure resources.</p>
</li>
<li><p><strong>Azure Load Balancer</strong>: Distributes incoming network traffic for high availability.</p>
</li>
<li><p><strong>Azure Traffic Manager</strong>: Routes user traffic to optimal endpoints based on routing rules.</p>
</li>
<li><p><strong>ExpressRoute</strong>: Provides private connections between on-premises infrastructure and Azure.</p>
</li>
<li><p><strong>Azure Firewall</strong>: Offers network security to protect resources from threats.</p>
</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-6-azure-storage"><strong>6. Azure Storage</strong></h3>
<p>Azure provides scalable, secure, and redundant storage solutions for various data needs.</p>
<ul>
<li><p><strong>Types of Storage</strong>:</p>
<ul>
<li><p><strong>Blob Storage</strong>: Unstructured data storage for documents, images, videos, etc.</p>
</li>
<li><p><strong>File Storage</strong>: Managed file shares accessible via SMB protocol.</p>
</li>
<li><p><strong>Queue Storage</strong>: Messaging services for communication between application components.</p>
</li>
<li><p><strong>Table Storage</strong>: NoSQL data store for structured data.</p>
</li>
</ul>
</li>
<li><p><strong>Redundancy Options</strong>:</p>
<ul>
<li><p>Locally Redundant Storage (LRS)</p>
</li>
<li><p>Geo-Redundant Storage (GRS)</p>
</li>
<li><p>Zone-Redundant Storage (ZRS)</p>
</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-7-azure-identity-and-access-management"><strong>7. Azure Identity and Access Management</strong></h3>
<p>Azure provides robust tools to secure access to resources.</p>
<ul>
<li><p><strong>Azure Active Directory (Azure AD)</strong>:</p>
<ul>
<li><p>Cloud-based identity and access management service.</p>
</li>
<li><p>Enables single sign-on (SSO) and multi-factor authentication (MFA).</p>
</li>
</ul>
</li>
<li><p><strong>Role-Based Access Control (RBAC)</strong>:</p>
<ul>
<li>Granular permissions management for resources.</li>
</ul>
</li>
<li><p><strong>Azure Key Vault</strong>:</p>
<ul>
<li>Securely stores secrets, certificates, and encryption keys.</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-8-azure-monitoring-and-management-tools"><strong>8. Azure Monitoring and Management Tools</strong></h3>
<p>Azure offers tools to monitor and manage resources effectively.</p>
<ul>
<li><p><strong>Azure Monitor</strong>:</p>
<ul>
<li>Collects metrics and logs to provide insights into resource performance.</li>
</ul>
</li>
<li><p><strong>Azure Advisor</strong>:</p>
<ul>
<li>Personalized recommendations to improve resource performance and cost efficiency.</li>
</ul>
</li>
<li><p><strong>Azure Service Health</strong>:</p>
<ul>
<li>Provides alerts and updates about service issues or outages.</li>
</ul>
</li>
<li><p><strong>Azure Automation</strong>:</p>
<ul>
<li>Automates repetitive tasks like patch management and configuration updates.</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-9-azure-databases"><strong>9. Azure Databases</strong></h3>
<p>Azure supports a variety of database solutions for diverse application needs.</p>
<ul>
<li><p><strong>SQL Database</strong>: Fully managed relational database.</p>
</li>
<li><p><strong>Cosmos DB</strong>: Globally distributed, multi-model NoSQL database.</p>
</li>
<li><p><strong>Azure Database for MySQL/PostgreSQL</strong>: Managed open-source database solutions.</p>
</li>
<li><p><strong>Azure Synapse Analytics</strong>: Integrates big data and data warehousing for advanced analytics.</p>
</li>
</ul>
<hr />
<h3 id="heading-10-azure-ai-and-machine-learning"><strong>10. Azure AI and Machine Learning</strong></h3>
<p>Azure simplifies the development of AI and ML models.</p>
<ul>
<li><p><strong>Azure Cognitive Services</strong>: Pre-built APIs for vision, speech, language, and decision-making.</p>
</li>
<li><p><strong>Azure Machine Learning</strong>: End-to-end service for building, training, and deploying machine learning models.</p>
</li>
</ul>
<hr />
<h3 id="heading-11-azure-security"><strong>11. Azure Security</strong></h3>
<p>Azure incorporates security at every layer of its architecture.</p>
<ul>
<li><p><strong>Azure Security Center</strong>:</p>
<ul>
<li>Unified security management and threat protection.</li>
</ul>
</li>
<li><p><strong>Azure Sentinel</strong>:</p>
<ul>
<li>Cloud-native SIEM for intelligent threat detection and response.</li>
</ul>
</li>
<li><p><strong>DDoS Protection</strong>:</p>
<ul>
<li>Protects applications from distributed denial-of-service attacks.</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-12-azure-devops"><strong>12. Azure DevOps</strong></h3>
<p>Azure DevOps provides development tools to streamline CI/CD processes.</p>
<ul>
<li><p><strong>Key Features</strong>:</p>
<ul>
<li><p>Repositories for version control.</p>
</li>
<li><p>Pipelines for continuous integration and deployment.</p>
</li>
<li><p>Boards for agile project management.</p>
</li>
<li><p>Artifacts for package management.</p>
</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-conclusion"><strong>Conclusion</strong></h3>
<p>Microsoft Azure’s core architectural components offer a robust and flexible foundation for businesses of all sizes. By understanding these components, organizations can effectively design, deploy, and manage cloud-based solutions to meet their needs. Whether it's compute power, storage, networking, or AI capabilities, Azure provides the tools to innovate and scale in a secure and cost-effective way.</p>
<p>Understanding these building blocks not only empowers businesses to maximize Azure’s potential but also prepares them for the future of cloud computing.</p>
]]></content:encoded></item><item><title><![CDATA[What is Cloud Computing & Unlocking the Potential of Cloud Computing: Pros, Cons, and Key Considerations]]></title><description><![CDATA[What is cloud computing?
Cloud computing is a technology that allows users to access and store data, applications, and computing resources over the internet instead of on a local computer or server. Essentially, it means that instead of managing phys...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/what-is-cloud-computing-unlocking-the-potential-of-cloud-computing-pros-cons-and-key-considerations</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/what-is-cloud-computing-unlocking-the-potential-of-cloud-computing-pros-cons-and-key-considerations</guid><category><![CDATA[#cloudProsAndCons]]></category><category><![CDATA[#cloudBenefit]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[TechExplained]]></category><category><![CDATA[#CloudTechnology ]]></category><category><![CDATA[digitaltransformation]]></category><category><![CDATA[TechTrends]]></category><category><![CDATA[DataStorage ]]></category><category><![CDATA[ #CloudInnovation ]]></category><category><![CDATA[SaaS]]></category><category><![CDATA[IaaS]]></category><category><![CDATA[PaaS]]></category><category><![CDATA[Devops]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Fri, 15 Nov 2024 05:36:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731648368482/eda068ff-3fbf-48c6-9d19-f2d46bde3cff.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-what-is-cloud-computing">What is cloud computing?</h3>
<p>Cloud computing is a technology that allows users to access and store data, applications, and computing resources over the internet instead of on a local computer or server. Essentially, it means that instead of managing physical servers and storage hardware, users can utilize virtual resources provided by remote servers hosted in data centers by cloud providers like Amazon Web Services (AWS), Microsoft Azure, and Google Cloud.</p>
<h3 id="heading-key-concepts-of-cloud-computing">Key Concepts of Cloud Computing</h3>
<ol>
<li><p><strong>On-Demand Availability</strong>: Users can access computing resources whenever they need them, without requiring prior setup or large infrastructure.</p>
</li>
<li><p><strong>Scalability</strong>: Cloud computing allows users to scale resources up or down based on demand. This is ideal for businesses with fluctuating workloads or growing needs.</p>
</li>
<li><p><strong>Cost Efficiency</strong>: Users pay only for the resources they use, avoiding large upfront costs for hardware and maintenance, and potentially reducing overall IT costs.</p>
</li>
<li><p><strong>Remote Access</strong>: Since cloud services are accessed via the internet, they can be used from anywhere, supporting remote work and collaboration.</p>
</li>
<li><p><strong>Resource Sharing</strong>: Cloud computing uses shared resources to serve multiple users, allowing for efficient use of resources and lowering costs.</p>
</li>
</ol>
<h3 id="heading-types-of-cloud-computing">Types of Cloud Computing</h3>
<ul>
<li><p><strong>Public Cloud</strong>: Services provided over the public internet and shared among multiple organizations.</p>
</li>
<li><p><strong>Private Cloud</strong>: A dedicated environment accessible only to a single organization, offering greater control and security.</p>
</li>
<li><p><strong>Hybrid Cloud</strong>: A combination of both public and private cloud resources, allowing data and applications to be shared between them.</p>
</li>
<li><p><strong>Multi-Cloud</strong>: Utilizing multiple cloud services from different providers to meet specific needs or avoid dependency on a single provider.</p>
</li>
</ul>
<h3 id="heading-types-of-cloud-services-cloud-computing-models">Types of Cloud Services (Cloud Computing Models)</h3>
<ol>
<li><p><strong>Infrastructure as a Service (IaaS)</strong>: Provides fundamental resources like virtual machines, storage, and networking. (Example: AWS EC2)</p>
</li>
<li><p><strong>Platform as a Service (PaaS)</strong>: Offers development tools and platforms to build and deploy applications without managing underlying infrastructure. (Example: Google App Engine)</p>
</li>
<li><p><strong>Software as a Service (SaaS)</strong>: Delivers fully managed applications to users via the internet. (Example: Microsoft 365, Salesforce)</p>
</li>
</ol>
<h3 id="heading-real-world-applications-of-cloud-computing">Real-World Applications of Cloud Computing</h3>
<ul>
<li><p><strong>Data Storage and Backup</strong>: Storing files, databases, and backups on the cloud to reduce physical storage needs.</p>
</li>
<li><p><strong>Web Hosting and Application Hosting</strong>: Hosting websites, applications, and databases on scalable cloud servers.</p>
</li>
<li><p><strong>Data Analytics and Machine Learning</strong>: Using powerful cloud-based computing resources to analyze data and build machine learning models.</p>
</li>
<li><p><strong>Remote Collaboration</strong>: Allowing teams to work together using shared, cloud-hosted applications and storage (e.g., Google Workspace, Microsoft Teams).</p>
</li>
</ul>
<p>Cloud computing has become fundamental in modern technology, enabling innovation and efficiency for businesses, developers, and everyday users alike.</p>
<h2 id="heading-the-advantages-and-disadvantages-of-cloud-computing">The Advantages and Disadvantages of Cloud Computing</h2>
<p>Cloud computing has transformed how we work, play, and connect. By offering on-demand access to vast computing resources, cloud computing enables businesses and individuals to scale their operations with ease, reduce costs, and access data from anywhere. However, it's essential to weigh both the advantages and disadvantages before fully committing to a cloud solution. Here’s a closer look at the pros and cons of cloud computing.</p>
<hr />
<h3 id="heading-advantages-of-cloud-computing">Advantages of Cloud Computing</h3>
<h4 id="heading-1-cost-savings">1. <strong>Cost Savings</strong></h4>
<ul>
<li><p>One of the main benefits of cloud computing is cost efficiency. Traditional on-premises infrastructure requires significant upfront investments in hardware, software, and IT maintenance. With cloud computing, companies only pay for the services they use, similar to a utility model.</p>
</li>
<li><p><strong>Savings on Infrastructure</strong>: Cloud providers handle the maintenance, so companies don’t need to invest in data centers or the personnel to manage them.</p>
</li>
<li><p><strong>Flexible Pricing Models</strong>: Many providers offer pay-as-you-go and subscription-based pricing, allowing businesses to scale costs in line with their actual usage and budget.</p>
</li>
</ul>
<h4 id="heading-2-scalability-and-flexibility">2. <strong>Scalability and Flexibility</strong></h4>
<ul>
<li><p>Cloud computing provides nearly unlimited scalability. Organizations can increase or decrease their resources to meet demand without needing to procure additional hardware or suffer from idle resources.</p>
</li>
<li><p><strong>Elasticity</strong>: Companies can quickly scale up their computing power during peak times and scale back down as needed, avoiding unnecessary costs.</p>
</li>
<li><p><strong>Global Reach</strong>: Many cloud providers offer data centers worldwide, allowing users to deploy resources closer to their customers, which reduces latency and improves performance.</p>
</li>
</ul>
<h4 id="heading-3-accessibility-and-collaboration">3. <strong>Accessibility and Collaboration</strong></h4>
<ul>
<li><p>Cloud services can be accessed from anywhere with an internet connection, making it easier for teams to collaborate across different locations and time zones.</p>
</li>
<li><p><strong>Remote Access</strong>: With cloud computing, employees can work from virtually any device, making remote work easier and more flexible.</p>
</li>
<li><p><strong>Real-Time Collaboration</strong>: Many cloud-based tools allow multiple people to work on the same document or project in real time, enhancing productivity and team collaboration.</p>
</li>
</ul>
<h4 id="heading-4-automatic-updates-and-patches">4. <strong>Automatic Updates and Patches</strong></h4>
<ul>
<li><p>Cloud providers manage all updates, security patches, and maintenance, freeing up internal IT teams from these tasks.</p>
</li>
<li><p><strong>Improved Security</strong>: Providers keep the systems updated with the latest security measures, which is essential for keeping data safe.</p>
</li>
<li><p><strong>Reduced Downtime</strong>: Scheduled updates and maintenance are often managed seamlessly in the background, minimizing downtime and ensuring continuous availability.</p>
</li>
</ul>
<h4 id="heading-5-data-backup-and-disaster-recovery">5. <strong>Data Backup and Disaster Recovery</strong></h4>
<ul>
<li><p>Cloud computing includes built-in data redundancy and backup capabilities, which can simplify disaster recovery.</p>
</li>
<li><p><strong>Resilience</strong>: Cloud providers replicate data across multiple locations, ensuring that even if one data center goes offline, the data remains accessible.</p>
</li>
<li><p><strong>Business Continuity</strong>: In the case of a disaster, businesses can recover their data faster, helping them resume operations more quickly.</p>
</li>
</ul>
<hr />
<h3 id="heading-disadvantages-of-cloud-computing">Disadvantages of Cloud Computing</h3>
<h4 id="heading-1-security-and-privacy-concerns">1. <strong>Security and Privacy Concerns</strong></h4>
<ul>
<li><p>Moving data and applications to the cloud introduces potential security risks, as companies must trust the cloud provider with sensitive information.</p>
</li>
<li><p><strong>Data Breaches</strong>: Cloud providers are high-value targets for cybercriminals, and a breach could expose sensitive customer or business data.</p>
</li>
<li><p><strong>Compliance</strong>: Certain industries have strict regulatory requirements (e.g., HIPAA for healthcare), and compliance can be challenging when data is hosted off-site.</p>
</li>
</ul>
<h4 id="heading-2-limited-control-and-flexibility">2. <strong>Limited Control and Flexibility</strong></h4>
<ul>
<li><p>With cloud computing, companies must rely on their provider’s infrastructure, which means less control over hardware and performance parameters.</p>
</li>
<li><p><strong>Dependency on the Provider</strong>: If a provider experiences downtime, the customer’s data or applications might be inaccessible. Also, changes made by the provider (like service updates) might not always align with a company’s specific requirements.</p>
</li>
<li><p><strong>Customization Constraints</strong>: Some cloud solutions might not be as customizable as on-premises alternatives, which could be a limitation for companies with unique technical needs.</p>
</li>
</ul>
<h4 id="heading-3-potential-downtime">3. <strong>Potential Downtime</strong></h4>
<ul>
<li><p>Although cloud providers aim to ensure high availability, downtime can still occur due to maintenance, updates, or unforeseen issues.</p>
</li>
<li><p><strong>Network Reliability</strong>: If an internet connection is lost, users won’t have access to cloud services, impacting productivity.</p>
</li>
<li><p><strong>Service Outages</strong>: Even the largest providers can experience outages. In such cases, businesses relying heavily on cloud infrastructure may face costly downtime.</p>
</li>
</ul>
<h4 id="heading-4-data-transfer-and-bandwidth-costs">4. <strong>Data Transfer and Bandwidth Costs</strong></h4>
<ul>
<li><p>While storing data in the cloud is relatively inexpensive, transferring large amounts of data in and out of the cloud can incur significant bandwidth costs.</p>
</li>
<li><p><strong>Data Egress Fees</strong>: Most providers charge fees for moving data out of their systems, which can add up if a business frequently transfers data.</p>
</li>
<li><p><strong>Performance Latency</strong>: For applications requiring rapid data access, latency might be an issue if the data center is far from the user, affecting real-time processing.</p>
</li>
</ul>
<h4 id="heading-5-risk-of-vendor-lock-in">5. <strong>Risk of Vendor Lock-In</strong></h4>
<ul>
<li><p>Transitioning from one cloud provider to another can be complex and costly, leading to vendor lock-in, where businesses are tied to a particular provider.</p>
</li>
<li><p><strong>Difficulty in Migration</strong>: Migrating large data sets or applications from one cloud environment to another can be technically challenging and require significant downtime.</p>
</li>
<li><p><strong>Loss of Flexibility</strong>: Businesses may feel constrained by a provider’s specific offerings, pricing models, and proprietary technologies.</p>
</li>
</ul>
<hr />
<h3 id="heading-final-thoughts-finding-the-right-balance">Final Thoughts: Finding the Right Balance</h3>
<p>Cloud computing offers a range of benefits, including cost savings, scalability, and accessibility, making it an excellent choice for many businesses. However, it also introduces potential drawbacks, such as security risks, limited control, and potential downtime, which companies need to consider carefully.</p>
<p>The best approach is to assess your business’s specific needs and challenges, consult with your cloud provider about the best practices for security and reliability, and possibly implement a hybrid solution that combines cloud resources with on-premises systems. By doing so, you can maximize the advantages of cloud computing while minimizing its potential disadvantages.</p>
]]></content:encoded></item><item><title><![CDATA[Step-by-Step Guide to Create and Connect to a Linux Virtual Machine Scale Set in Azure]]></title><description><![CDATA[Creating a Linux Virtual Machine Scale Set (VMSS) in Azure allows you to automatically scale a set of virtual machines to handle changing workloads. In this guide, I’ll walk you through setting up a VMSS, configuring its settings, and connecting to i...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/step-by-step-guide-to-create-and-connect-to-a-linux-virtual-machine-scale-set-in-azure</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/step-by-step-guide-to-create-and-connect-to-a-linux-virtual-machine-scale-set-in-azure</guid><category><![CDATA[techblog]]></category><category><![CDATA[Devops]]></category><category><![CDATA[#AzureDevOps]]></category><category><![CDATA[StepByStepGuide]]></category><category><![CDATA[virtual machine]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[#howtos]]></category><category><![CDATA[Linux]]></category><category><![CDATA[CloudComputing]]></category><category><![CDATA[Azure]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Thu, 14 Nov 2024 07:15:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731567909329/476900bf-62d3-46ec-80bd-923adc5bb725.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Creating a Linux Virtual Machine Scale Set (VMSS) in Azure allows you to automatically scale a set of virtual machines to handle changing workloads. In this guide, I’ll walk you through setting up a VMSS, configuring its settings, and connecting to it. Screenshots will be suggested at each key step to make the process clearer.</p>
<hr />
<h3 id="heading-prerequisites">Prerequisites</h3>
<p>Before we start, ensure you have:</p>
<ol>
<li><p>An active Azure account. <a target="_blank" href="https://azure.microsoft.com/free/">Sign up for free</a> if you don’t have one.</p>
</li>
<li><p>Basic knowledge of Azure portal and virtual machine concepts.</p>
</li>
</ol>
<hr />
<h2 id="heading-step-1-navigate-to-the-azure-portal">Step 1: Navigate to the Azure Portal</h2>
<ol>
<li><p>Go to <a target="_blank" href="https://portal.azure.com/">portal.azure.com</a>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731301110154/bad13ec8-a79c-4808-999d-a369b9bb7f4f.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-2-create-a-virtual-machine-scale-set">Step 2: Create a Virtual Machine Scale Set</h2>
<ol>
<li><p>In the Azure portal, search for "Virtual Machine Scale Sets" in the search bar at the top.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731535489733/aa94522d-a8e9-43ad-91ad-e296867dfdc3.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Select <strong>Virtual Machine Scale Sets</strong> from the dropdown, and click <strong>+ Create</strong> to start the setup process.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731535580394/5dd69078-a9bb-4474-9745-8c94bf583f33.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731535808976/acf7ce8e-aa75-4cd4-8a5e-bb3d7cd9de8c.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-3-configure-basic-settings">Step 3: Configure Basic Settings</h2>
<ol>
<li><p>In the <strong>Basics</strong> tab, enter the following informatio<strong>Subscription</strong>: Select your Azure subscription.</p>
<ul>
<li><p><strong>Resource group</strong>: Either create a new resource group or select an existing one.</p>
</li>
<li><p><strong>Region</strong>: Choose the region where you want to deploy the VM scale set.</p>
</li>
<li><p><strong>Scale set name</strong>: Provide a name for your scale set.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731536170587/e5bb13db-3baa-44b5-b64c-530a981caa48.png" alt class="image--center mx-auto" /></p>
</li>
<li><p><strong>Orchestration mode</strong>: Choose <strong>Uniform</strong> (default) for identical VMs, or <strong>Flexible</strong> if you need more control.</p>
</li>
</ul>
</li>
</ol>
<p>    <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731560703497/df4f5509-5c56-4fad-bbac-47d5e68bfd1a.png" alt class="image--center mx-auto" /></p>
<ul>
<li><p><strong>Scaling Configuration</strong></p>
<ol>
<li><p>Set the <strong>Initial instance count</strong> (e.g., 2 instances).</p>
</li>
<li><p>Enable <strong>Autoscale</strong> if you want the VMSS to automatically adjust the number of VMs based on demand.</p>
</li>
<li><p>Configure scale-out and scale-in rules if autoscaling is enabled (e.g., increase by 1 instance when CPU usage is above 75%).</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563074952/c677bab9-1ef9-4a78-a44d-40d44f802003.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563161037/1c968cb0-7673-4db9-88d1-fe08e749adf6.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563237267/32d9262a-b797-46f0-b984-35cdb5ea8a9f.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563351974/454084ca-ab4d-466e-9769-212911fa256c.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
</li>
<li><p><strong>Operating System</strong>: Select <strong>Linux</strong>.</p>
</li>
<li><p><strong>Image</strong>: Choose a Linux image, like Ubuntu Server 18.04 or 24.04 LTS.</p>
</li>
<li><p><strong>Size</strong>: Pick a VM size suitable for your workload (e.g., Standard_D2s_v3).</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731560985299/27163b26-52fc-40c0-98fe-ab150acfa3d7.png" alt class="image--center mx-auto" /></p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731561158296/a0a7b45f-0e4d-440c-9a1e-79d1fa7ae989.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<ol start="2">
<li><p>Click <strong>Next: Disks &gt;</strong> to proceed.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731561258075/14a859b1-3e17-4258-9dee-27b90bf0f025.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-4-configure-disk-options">Step 4: Configure Disk Options</h2>
<ol>
<li><p>On the <strong>Disks</strong> tab, select <strong>Standard SSD</strong> for cost-effective storage, or choose <strong>Premium SSD</strong> if performance is critical.</p>
</li>
<li><p>Configure any additional disks if necessary.</p>
</li>
<li><p>Click <strong>Next: Networking &gt;</strong>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731561438760/784144ea-0619-458a-970f-12a0e94623db.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-5-set-up-networking">Step 5: Set Up Networking</h2>
<ol>
<li><p>In the <strong>Networking</strong> tab, select the <strong>Virtual network</strong> you wish to use or create a new one.</p>
</li>
<li><p>Choose a <strong>Subnet</strong> for the VMs in the scale set.</p>
</li>
<li><p>Enable <strong>Load Balancing</strong> if you want to distribute traffic across VMs.</p>
</li>
<li><p>Enable <strong>Public IP</strong> for individual instances if necessary for direct connections, though it’s generally recommended to connect via Load Balancer for security.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731561620269/56fe42a8-e296-4d6c-b4f7-d562233bf5de.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731561770092/ad5c72f9-55d1-4e54-bc34-cfc1f05a6369.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731561823558/4634d7e0-f341-4500-a7bd-8830ab18c69b.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731561940299/2db25c26-85aa-4133-8481-37df9a1e427f.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731562289749/7393a75e-2b1e-4738-8205-8131bc61708e.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731562397420/2601136e-caa7-43b1-9fe4-90973a56b9f8.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731562486537/c4b501e1-822b-4815-9038-339e60b55d3b.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Click <strong>Next: Management &gt;</strong>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563489577/e710ce58-6e8a-4b5e-8570-de96badd3221.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<h2 id="heading-step-6-configure-management-options">Step 6: Configure Management Options</h2>
<ol>
<li><p>Set the <strong>Diagnostics</strong> options to enable monitoring.</p>
</li>
<li><p>Choose <strong>Identity and Access Management</strong> settings if needed for security policies.</p>
</li>
<li><p>Enable <strong>Auto-shutdown</strong> if you want to reduce costs by automatically turning off VMs during off-hours.</p>
</li>
<li><p>Click <strong>Review + create</strong> to finalize the configuration.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563754660/a321a1a8-4668-4e2a-9743-f6b86182f12e.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-7-review-and-create-the-scale-set">Step 7: Review and Create the Scale Set</h2>
<ol>
<li><p>Azure will validate your configuration. If all settings are correct, click <strong>Create</strong> to start deploying the scale set.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563883023/af87c8f3-9ae0-439a-9970-dc31abda8e97.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731563998067/c7a77770-8589-4578-b063-6b93c3ae81af.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Wait for the deployment to complete, which may take a few minutes.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731564117044/89cee86a-7e89-4b3b-adf6-9e8dd2f54872.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<hr />
<h2 id="heading-step-8-connect-to-a-vm-in-the-scale-set">Step 8: Connect to a VM in the Scale Set</h2>
<ol>
<li><p>Once deployment is complete, go to the <strong>Scale Set</strong> overview page.</p>
</li>
<li><p>Select <strong>Instances</strong> from the left menu to view the list of VMs in the scale set.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731564330775/70d8407e-7386-41a1-a0cd-ce019d12c4df.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731564404496/8295dca6-0b3a-4afb-a717-a24425385514.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Click on one of the instance names to access its details.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731564509917/bb2274f6-d704-4e1f-985d-ebfbd8dc8651.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731564605915/1e2d6b8f-ddf5-4929-9c3e-f73de8b22c2b.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Under <strong>Settings</strong>, go to <strong>Networking</strong> and locate the <strong>Public IP address</strong> (if assigned).</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731564917337/f3cc72a5-881e-48ce-a66f-8988fe3f9409.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731565026931/7d978402-54aa-41f6-ab7f-71e4f160facc.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Open a terminal and connect using SSH:</p>
<pre><code class="lang-bash"> ssh -i &lt;The path to your downloaded Pem Key file&gt; azureuser@&lt;PublicIP&gt;
</code></pre>
<p> Replace <code>&lt;PublicIP&gt;</code> with the actual IP address of the instance.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731566582056/07f07cd3-253a-4109-9c3b-b0708e30d468.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731566616256/b0dd4e13-31dc-4a87-8a7b-1a1c9c4ad015.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-9-verify-connectivity">Step 9: Verify Connectivity</h2>
<ol>
<li>Run a few commands on the connected VM to verify everything is set up as expected.</li>
</ol>
<p>Consider setting up monitoring tools to observe the performance and scalability of the VMSS.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731566809741/7039a426-f436-4479-abef-0bd94dc15537.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731566950564/0c898085-6fd0-45d4-a8f4-e27c576c5909.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-conclusion">Conclusion</h3>
<p>You have successfully set up a Linux Virtual Machine Scale Set, configured autoscaling, and connected to an individual instance. By following this guide, you can scale your application’s backend to handle different levels of demand seamlessly.</p>
]]></content:encoded></item><item><title><![CDATA[Creating a Linux VM on Microsoft Azure and Setting Up NGINX]]></title><description><![CDATA[Here's a step-by-step guide on creating a Linux VM on the Azure portal and setting it up with NGINX. This guide will take you from creating the VM to configuring NGINX on it.
This tutorial will guide you through creating a Linux VM on Microsoft Azure...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/creating-a-linux-vm-on-microsoft-azure-and-setting-up-nginx</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/creating-a-linux-vm-on-microsoft-azure-and-setting-up-nginx</guid><category><![CDATA[Azure]]></category><category><![CDATA[azure-devops]]></category><category><![CDATA[virtual machine]]></category><category><![CDATA[linux for beginners]]></category><category><![CDATA[#hagital consulting]]></category><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Sun, 03 Nov 2024 23:00:00 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730985004138/b47b69a6-f109-4e42-be72-d12b00bc086c.webp" alt class="image--center mx-auto" /></p>
<p>Here's a step-by-step guide on creating a Linux VM on the Azure portal and setting it up with NGINX. This guide will take you from creating the VM to configuring NGINX on it.</p>
<p>This tutorial will guide you through creating a Linux VM on Microsoft Azure and installing NGINX for serving web content.</p>
<hr />
<h3 id="heading-step-1-log-into-the-azure-portal">Step 1: Log into the Azure Portal</h3>
<ol>
<li><strong>Go to the</strong> <a target="_blank" href="https://portal.azure.com/"><strong>Azure Portal</strong></a> and log in with your Azure credentials.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730888590055/f3bb9abe-fc25-4781-84b6-5227e9f8669e.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-2-create-a-new-virtual-machine">Step 2: Create a New Virtual Machine</h3>
<ol>
<li><p>In the left sidebar of the Azure Portal, navigate to <strong>Virtual Machines</strong>, or use the search bar to find "Virtual Machines."</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730888791661/86a0b176-c145-4f95-9a15-b2d018f4ad8b.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730888809058/cb632b53-d482-4072-aff9-71e946e581c7.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Click <strong>+ Create</strong> and select <strong>Azure Virtual Machine</strong>.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730888895165/f6df8e41-24ef-4172-aa85-f49f5e4c3078.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-3-configure-basic-settings-for-the-vm">Step 3: Configure Basic Settings for the VM</h3>
<ol>
<li><p><strong>Subscription</strong>: Choose your Azure subscription.</p>
</li>
<li><p><strong>Resource Group</strong>: Select an existing resource group, or create a new one if needed.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730956163509/35d63fc5-701a-4534-96c3-8aa1d22ced21.png" alt class="image--center mx-auto" /></p>
</li>
<li><p><strong>Virtual Machine Name</strong>: Enter a name, such as "MyLinuxVM."</p>
</li>
<li><p><strong>Region</strong>: Select a region that’s closest to you or your users.</p>
</li>
<li><p><strong>Availability Options</strong>: Select as needed (for this tutorial, leave it at the default setting).</p>
</li>
<li><p><strong>Image</strong>: Choose <strong>Ubuntu Server 24.04 LTS -x64 Gen2</strong> (or any Linux image that supports NGINX).</p>
</li>
<li><p><strong>Size</strong>: Select a VM size according to your workload. For basic testing, the <strong>Standard_B1s</strong> size is affordable.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730956492681/f253eaea-3d04-4e71-828d-12158d7e9b8c.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730956500317/f67194bb-1c48-4057-a806-1ad4a0061c57.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-4-set-up-ssh-authentication">Step 4: Set Up SSH Authentication</h3>
<ol>
<li><p><strong>Authentication Type</strong>: Choose <strong>SSH public key</strong> for secure login without a password.</p>
</li>
<li><p><strong>Username</strong>: Enter a username like <code>azureuser</code>.</p>
</li>
<li><p><strong>SSH Public Key Source</strong>: Select <strong>Generate new key pair</strong> if you don’t have an SSH key or <strong>Upload public key</strong> if you already have one.</p>
<ul>
<li><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730956683414/092ddc49-3714-495c-be27-6848deb9c605.png" alt class="image--center mx-auto" /></li>
</ul>
</li>
</ol>
<hr />
<h3 id="heading-step-5-configure-networking">Step 5: Configure Networking</h3>
<p>In the <strong>Networking</strong> tab, you’ll configure the network settings.</p>
<ol>
<li><p><strong>Virtual Network</strong>: Choose the default virtual network or create a new one.</p>
</li>
<li><p><strong>Subnet</strong>: Use the default subnet.</p>
</li>
<li><p><strong>Public IP</strong>: Ensure that this is set to <strong>Yes</strong> for external access.</p>
</li>
<li><p><strong>NIC Network Security Group</strong>: Choose <strong>Basic</strong> and check <strong>Allow selected ports</strong>.</p>
</li>
<li><p><strong>Inbound Port Rules</strong>: Enable both <strong>SSH (22)</strong> and <strong>HTTP (80)</strong> to allow NGINX to serve web traffic over HTTP.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730957000097/770410ee-9c52-4e2e-9171-de265728a006.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730957082359/738f25df-2ebe-4574-8e23-80dc705f3e6e.png" alt class="image--center mx-auto" /></p>
<p><strong>Screenshot:</strong> Capture the Networking tab showing the virtual network, public IP, and SSH/HTTP port rules.</p>
<h3 id="heading-step-6-review-and-create-the-vm">Step 6: Review and Create the VM</h3>
<ol>
<li><p>Click on the <strong>Review + create</strong> button to finalize the settings.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730957270551/dfd1b454-59e6-405d-af08-75b99b3b2899.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>After a quick validation, click <strong>Create</strong> to deploy the VM.</p>
</li>
</ol>
<p>Azure will start the deployment, which may take a few minutes.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730957601587/8a1a439d-e69e-4f95-a1ab-6419556c6e82.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730957618284/e799a0c0-4242-420d-9568-5f7713409b2d.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730957793635/3ce29744-ffc9-4d97-ad4c-fc6432691475.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-7-retrieve-the-vms-public-ip-address">Step 7: Retrieve the VM's Public IP Address</h3>
<p>After the deployment is complete, navigate to the <strong>Virtual Machines</strong> section and click on your new VM. In the <strong>Overview</strong> tab, locate the <strong>Public IP address</strong> of the VM.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730957906116/44a6cb11-0f96-4392-8f34-d99871ccec45.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-8-connect-to-your-vm-via-ssh">Step 8: Connect to Your VM via SSH</h3>
<ol>
<li><p>Open a Terminal on your local machine and connect to the VM using SSH:</p>
<pre><code class="lang-bash"> ssh -i /Users/siliasodion/Downloads/MyLinuxVm_key.pem azureuser@23.99.83.118
</code></pre>
<ul>
<li><p>Get the path to your downloaded key.pem file</p>
</li>
<li><p>Replace <code>your_username</code> with the username you set in Step 4.</p>
</li>
<li><p>Replace <code>your_vm_ip</code> with the VM's public IP address.</p>
</li>
</ul>
</li>
<li><p><strong>Confirm Connection</strong>: If prompted, type “yes” to confirm the connection.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730958459403/2e7f8370-2051-4134-8f07-7fde574151f0.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730958770449/3ceaeed7-807b-4c7c-b092-db395da2b038.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-9-update-the-vm-and-install-nginx">Step 9: Update the VM and Install NGINX</h3>
<p>Once connected to your VM, start by updating it, then install NGINX.</p>
<ol>
<li><p><strong>Update package lists</strong> to ensure your packages are up-to-datsudo apt update</p>
<pre><code class="lang-bash"> sudo apt update
</code></pre>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730958918802/8724b2a6-a56d-43d5-ad22-f75c672c65d9.png" alt class="image--center mx-auto" /></p>
</li>
<li><p><strong>Install NGINX</strong> with the following command:</p>
<pre><code class="lang-bash"> sudo apt install nginx -y
</code></pre>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730959052098/7979e740-909e-4243-82a6-31c5885f2961.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>After the installation completes, <strong>start and enable NGINX</strong> so it automatically runs on startup:</p>
<pre><code class="lang-bash"> sudo systemctl start nginx
 sudo systemctl <span class="hljs-built_in">enable</span> nginx
</code></pre>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730959263192/80ffa28c-851b-4c82-8070-fa00d65306d6.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-10-verify-nginx-installation">Step 10: Verify NGINX Installation</h3>
<ol>
<li><p>After installing NGINX, verify that it’s running by checking its status:</p>
<pre><code class="lang-bash"> sudo systemctl status nginx
</code></pre>
<p> You should see a status of “active (running)” if NGINX is installed and running correctly.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730959589723/f0d9f389-fefc-4778-ae94-30f861b4ade8.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-step-11-access-the-nginx-welcome-page">Step 11: Access the NGINX Welcome Page</h3>
<ol>
<li><p>Open a web browser and enter your VM’s public IP address (from Step 7) in the address bar:</p>
<pre><code class="lang-bash"> http://your_vm_ip
</code></pre>
</li>
<li><p>If NGINX is set up correctly, you should see the default NGINX welcome page, which confirms that NGINX is serving web content from your Azure VM.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730959892598/465a15c1-64c4-4cf4-bf20-70dd8f515ed3.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-troubleshooting-tips">Troubleshooting Tips</h3>
<ol>
<li><p><strong>Connection Refused on Port 80</strong>: Ensure that HTTP (80) is open in the network security group (Step 5).</p>
</li>
<li><p><strong>NGINX Not Running</strong>: Check the service status with <code>sudo systemctl status nginx</code> and look for errors.</p>
</li>
</ol>
<hr />
<h3 id="heading-conclusion">Conclusion</h3>
<p>Congratulations! You've successfully created a Linux VM on Microsoft Azure, installed NGINX, and served your first web page. This setup can now serve as a foundation for deploying web applications, testing websites, or hosting files on the cloud.</p>
<p>This guide provides you with everything you need to get started with NGINX on Azure. Happy hosting!</p>
]]></content:encoded></item><item><title><![CDATA[How to Create a Windows Operating System Virtual Machine in Microsoft Azure]]></title><description><![CDATA[Introduction
Creating a virtual machine (VM) in Microsoft Azure is a key skill for anyone looking to leverage cloud computing, whether for personal projects, application development, or enterprise solutions. Azure virtual machines offer flexibility, ...]]></description><link>https://silias809-cloud-newbie.hashnode.dev/how-to-create-a-windows-operating-system-virtual-machine-in-microsoft-azure</link><guid isPermaLink="true">https://silias809-cloud-newbie.hashnode.dev/how-to-create-a-windows-operating-system-virtual-machine-in-microsoft-azure</guid><dc:creator><![CDATA[Silias Odion]]></dc:creator><pubDate>Sat, 02 Nov 2024 10:05:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1730393068124/55bb8be3-f1e3-409e-ba89-f5e4a6d35267.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>Creating a virtual machine (VM) in Microsoft Azure is a key skill for anyone looking to leverage cloud computing, whether for personal projects, application development, or enterprise solutions. Azure virtual machines offer flexibility, scalability, and access to a variety of resources, making them ideal for running everything from simple applications to complex infrastructure setups. In this guide, we’ll walk through the steps to create a virtual machine in Azure, from setting up essential configurations to accessing your VM. By the end, you’ll have a functional virtual machine ready for development, testing, or deployment. Let’s get started!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730309419751/7c3e539e-1dcc-4f9b-a28a-7b34bc289c4f.jpeg" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-1-log-into-the-azure-portal">Step 1: Log into the Azure Portal</h3>
<ul>
<li><a target="_blank" href="https://portal.azure.com"><strong>Descript</strong></a><strong>ion</strong>: Begin by logging int<a target="_blank" href="https://portal.azure.com">o your Azure</a> account via the <a target="_blank" href="https://portal.azure.com">Azure Portal</a></li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730390369921/5d22a2a4-3f64-4474-b785-2077027237d9.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-2-access-the-create-a-resource-option">Step 2: Access the “Create a Resource” Option</h3>
<ul>
<li><p><strong>Description</strong>: Once logged in, you’ll be on the Azure dashboard. On the left-hand side menu, click on <strong>Create a resource</strong>. This opens a new window where you can choose from a list of resources.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730390388847/3c85f637-5c20-41fd-a665-d9063ba7aa6e.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<h3 id="heading-step-3-search-and-select-virtual-machine">Step 3: Search and Select “Virtual Machine”</h3>
<ul>
<li><strong>Description</strong>: In the “Create a resource” window, use the search bar at the top to type <strong>Virtual Machine</strong>. Select <strong>Virtual Machine</strong> from the options that appear.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730390409274/18c0eb04-307e-41bb-9a36-8c5595a7ed09.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730390470794/8652c645-c4c3-4ac8-b5a1-7a46df97958e.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-4-configure-the-basics-of-your-virtual-machine">Step 4: Configure the Basics of Your Virtual Machine</h3>
<ul>
<li><p><strong>Description</strong>: The first tab you’ll see is the <strong>Basics</strong> tab. Here, you’ll enter essential details for your VM:</p>
<ul>
<li><p><strong>Subscription</strong>: Choose the subscription you’re using.</p>
</li>
<li><p><strong>Resource Group</strong>: Select an existing resource group or create a new one.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730390602164/a791757a-2cd0-4203-95fa-9e5e09fc82bf.png" alt class="image--center mx-auto" /></p>
</li>
<li><p><strong>Virtual Machine Name</strong>: Enter a name for your VM, like "MyFirstVM."</p>
</li>
<li><p><strong>Region</strong>: Select the Azure region where your VM will be hosted.</p>
</li>
<li><p><strong>Availability Options</strong>: Choose <strong>Availability zone</strong> or <strong>Availability set</strong> if you need redundancy.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730390585175/8eef0c47-0a03-4921-8f00-8d20d05cd5ad.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
</ul>
<h3 id="heading-step-5-choose-the-virtual-machine-image-and-size">Step 5: Choose the Virtual Machine Image and Size</h3>
<ul>
<li><strong>Description</strong>: Scroll down to select the <strong>Image</strong> (operating system) for your VM, such as <strong>Windows Server 2019</strong> or <strong>Ubuntu Server 20.04 LTS</strong>. Then, choose the <strong>Size</strong> based on your CPU and memory requirements.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730390634910/bdad7a3d-986c-490c-a1eb-8848d7ff4d44.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391003151/8110de25-c607-4fe2-957b-daf9148b04ef.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391025870/d1a4ba33-9424-4cf2-bc08-d8daf2142e9e.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-6-configure-administrator-account">Step 6: Configure Administrator Account</h3>
<ul>
<li><p><strong>Description</strong>: In the same <strong>Basics</strong> tab, set up the admin account details to manage your VM:</p>
<ul>
<li><p><strong>Authentication Type</strong>: Choose between <strong>Password</strong> or <strong>SSH Public Key</strong>.</p>
</li>
<li><p><strong>Username</strong> and <strong>Password/SSH Key</strong>: Provide a username and either a password or SSH key.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391050563/03ceb439-e677-4056-b0bf-204070736d68.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391072024/421dcb28-1236-449b-9433-3dfff0d91455.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-7-configure-disk-options">Step 7: Configure Disk Options</h3>
<ul>
<li><p><strong>Description</strong>: In the <strong>Disks</strong> tab, select the OS disk type (Standard SSD, Premium SSD, or HDD) based on performance and cost needs. You can also add data disks if required</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391124664/cada0dbc-06a1-488d-8c50-ce0cdebf712e.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<h3 id="heading-step-8-set-up-networking">Step 8: Set Up Networking</h3>
<ul>
<li><strong>Description</strong>: Switch to the <strong>Networking</strong> tab to configure network settings for the VM, including the <strong>Virtual Network (VNet)</strong>, <strong>Subnet</strong>, and <strong>Public IP</strong>. You can accept the defaults or customize these settings.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391185207/65cc0327-2d8c-4481-ba94-ddb12498b077.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-9-set-up-monitoring-optional">Step 9: Set Up Monitoring (Optional)</h3>
<ul>
<li><strong>Description</strong>: On the <strong>Monitoring</strong> tab, you can enable monitoring options such as <strong>Boot diagnostics</strong>, <strong>Guest OS diagnostics</strong>, and <strong>Auto-shutdown</strong> if needed.Step 10: Review and Create the Virtual Machine</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730541662990/01c32861-a614-4853-bb30-77d076aee8d9.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-10-review-and-create-the-virtual-machine">Step 10: Review and Create the Virtual Machine</h3>
<ul>
<li><p><strong>Description</strong>: After completing all necessary tabs, go to the <strong>Review + Create</strong> tab. Azure will validate the settings, and if everything is correct, you’ll see a green checkmark. Click <strong>Create</strong> to start the VM deployment.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391279562/112786ee-798f-46a4-a663-b1e5022f8f0c.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<h3 id="heading-step-11-access-and-manage-your-virtual-machine">Step 11: Access and Manage Your Virtual Machine</h3>
<ul>
<li><strong>Description</strong>: Once the VM is created, go to your <strong>Virtual Machines</strong> page, select your VM, and use the <strong>Connect</strong> button to log in via RDP (for Windows) or SSH (for Linux).</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391359674/4ffba6ea-162e-4b0f-8fed-3dbb566ef80b.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391403234/1c956c89-9e4f-44dd-bf55-f1a48e43f6e4.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-12-connect-to-your-windows-vm">Step 12: Connect to Your Windows VM</h3>
<ul>
<li><strong>Description</strong>: Once deployment is complete, go to the <strong>Virtual Machines</strong> section in your Azure portal. Select your VM and click <strong>Connect</strong>. Follow the instructions for connecting via <strong>Remote Desktop Protocol (RDP)</strong>, using the username and password you set up in Step 6.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391576575/760c7946-baec-447b-8ac8-7569ab3a141d.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391644265/5f7db235-60ac-4c02-8b18-25d5b0534671.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730391679380/c6028255-4037-4430-a9e9-e78c2d0ac399.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-step-13-double-click-on-the-rdp-file-to-launch-vm">Step 13 : Double click on the RDP File to Launch VM</h3>
<p><strong>Description</strong>: Double-click on the downloaded RDP file to initiate a remote desktop session with your virtual machine. This action will open the Remote Desktop Protocol (RDP) client, allowing you to securely connect and manage your VM directly from your local device.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730392656189/d08a1394-daad-4c3a-acbc-35c2b4063b90.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Creating a virtual machine in Microsoft Azure is a simple yet powerful way to get started with cloud computing. Whether you’re testing an app, running isolated development environments, or hosting scalable services, Azure VMs offer the flexibility and power you need.</p>
]]></content:encoded></item></channel></rss>