<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mercy Ndonga</title>
    <description>The latest articles on DEV Community by Mercy Ndonga (@mercyndonga).</description>
    <link>https://dev.to/mercyndonga</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2579044%2F8f220a4f-bec5-4f63-9ef9-d017a00c83e8.jpg</url>
      <title>DEV Community: Mercy Ndonga</title>
      <link>https://dev.to/mercyndonga</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mercyndonga"/>
    <language>en</language>
    <item>
      <title>🧱 Terra Biteʒ 3: Instance Gratification ⚡️</title>
      <dc:creator>Mercy Ndonga</dc:creator>
      <pubDate>Wed, 28 May 2025 23:00:14 +0000</pubDate>
      <link>https://dev.to/mercyndonga/terra-bitez-3-instance-gratification-3bol</link>
      <guid>https://dev.to/mercyndonga/terra-bitez-3-instance-gratification-3bol</guid>
      <description>&lt;p&gt;Day 3 of the #30DayTerraformChallenge was pure &lt;strong&gt;instance gratification&lt;/strong&gt; – no more just talking about cloud infrastructure, but actually deploying it and watching code bring resources to life!&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Quick Wins of the Day:
&lt;/h2&gt;

&lt;p&gt;I achieved two key deployments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ A 🖥️ &lt;strong&gt;Single Server&lt;/strong&gt; — a basic standalone EC2 instance with no configurations.&lt;/li&gt;
&lt;li&gt;✅ A 🌐 &lt;strong&gt;Web Server&lt;/strong&gt; — an EC2 instance that auto-installs Apache and serves a custom web page using &lt;code&gt;user_data&lt;/code&gt;. (a fully functional web server)
Seeing &lt;code&gt;terraform apply&lt;/code&gt; work its magic? Priceless! ✨&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Key Differences: Single Server vs Web Server
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Single Server 🖥️&lt;/th&gt;
&lt;th&gt;Web Server 🌐&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Basic EC2 VM&lt;/td&gt;
&lt;td&gt;Hosts a website&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;User Data Script&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Installs Apache &amp;amp; HTML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HTTP Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Visible in Browser&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  1. The Simple Start: Deploying a Basic EC2 Instance 👶
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Every cloud journey begins somewhere, and for me, it was a fundamental EC2 instance. This represents the simplest form of compute in AWS – a virtual server spun up straight from code.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🖥️ Single Server: Basic EC2 Setup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This is a minimal EC2 instance — no web server, no automation, just a VM in the cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why deploy this?&lt;/strong&gt; To confirm my Day 2 setup was solid and to witness the raw power of &lt;code&gt;terraform apply&lt;/code&gt; in action for basic resource creation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;📜 Code: single-server.tf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="k"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_providers&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;source&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"~&amp;gt; 5.0"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"af-south-1"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"single-server"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"ami-0914bddde8faa93a0"&lt;/span&gt; &lt;span class="c1"&gt;# Amazon Linux 2023 AMI&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t3.micro"&lt;/span&gt;
  &lt;span class="nx"&gt;key_name&lt;/span&gt;      &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"cloudykey"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"single-server"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  💬 Code Comments:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;provider "aws"&lt;/strong&gt;: Your entry point to AWS, specifying the region (af-south-1 for Nairobi vibes! 🌍).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;resource "aws_instance"&lt;/strong&gt;: The core block for creating an EC2 VM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ami&lt;/strong&gt;: The Amazon Machine Image – essentially the operating system pre-configured.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;instance_type&lt;/strong&gt;: Defines the CPU, memory, and networking capacity (e.g., t3.micro is usually free-tier eligible).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;key_name&lt;/strong&gt;: Links to your SSH key pair for secure remote access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;tags&lt;/strong&gt;: Simple key-value pairs for organizing and identifying your resources in AWS.&lt;/li&gt;
&lt;/ul&gt;

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




&lt;h2&gt;
  
  
  2. Beyond Basic: Spinning Up A Web Server! 🌐
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This EC2 instance runs a startup script to install Apache and serve a static HTML page.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌐 Web Server: With Apache and HTML Page
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why deploy this? To demonstrate automating server configuration post-launch (user_data) and managing network traffic (Security Groups).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;📜 Code: web-server.tf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Terraform 0.13 and later:&lt;/span&gt;

&lt;span class="k"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_providers&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;source&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"~&amp;gt; 5.0"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Configure the AWS provider&lt;/span&gt;
&lt;span class="k"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"af-south-1"&lt;/span&gt; &lt;span class="c1"&gt;# Specify your desired AWS Region&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Create an EC2 Instance&lt;/span&gt;
&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"web-server"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;                    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"ami-0914bddde8faa93a0"&lt;/span&gt; &lt;span class="c1"&gt;# Amazon Linux 2023 AMI ID for af-south-1&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt;          &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t3.micro"&lt;/span&gt;             &lt;span class="c1"&gt;# Free tier eligible&lt;/span&gt;
  &lt;span class="nx"&gt;key_name&lt;/span&gt;               &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"cloudykey"&lt;/span&gt;
  &lt;span class="nx"&gt;vpc_security_group_ids&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;aws_security_group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;web-server-sg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="nx"&gt;user_data&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
              #!/bin/bash
              sudo yum update -y           # Update all installed packages
              sudo yum install -y httpd    # Install Apache Web Server
              sudo systemctl start httpd   # Start the Apache Web Server Service
              sudo systemctl enable httpd  # Configure Apache to start on every reboot

              echo "&amp;lt;!DOCTYPE html&amp;gt;
              &amp;lt;html&amp;gt;
              &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;We Are Live, Baby!🚀🎉🥳&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;
              &amp;lt;body style='background-color:#1e1e1e; color:#00ffcc; text-align:center; padding-top:15%; font-family:monospace;'&amp;gt;
              &amp;lt;p&amp;gt;Infrastructure as Code? More like &amp;lt;strong&amp;gt;Magic as Code!😂💫✨&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
              &amp;lt;/body&amp;gt;
              &amp;lt;/html&amp;gt;" &amp;gt; /var/www/html/index.html
&lt;/span&gt;&lt;span class="no"&gt;              EOF

&lt;/span&gt;  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"web-server"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Data source to Default VPC&lt;/span&gt;
&lt;span class="k"&gt;data&lt;/span&gt; &lt;span class="s2"&gt;"aws_vpc"&lt;/span&gt; &lt;span class="s2"&gt;"default_vpc"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;default&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_security_group"&lt;/span&gt; &lt;span class="s2"&gt;"web-server-sg"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"web-server-ssh-http-sg"&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Allow SSH and HTTP inbound traffic for web server"&lt;/span&gt;
  &lt;span class="nx"&gt;vpc_id&lt;/span&gt;      &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aws_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;default_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="c1"&gt;# Or hardcode your VPC ID&lt;/span&gt;

  &lt;span class="nx"&gt;ingress&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;from_port&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;
    &lt;span class="nx"&gt;to_port&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;
    &lt;span class="nx"&gt;protocol&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"tcp"&lt;/span&gt;
    &lt;span class="nx"&gt;cidr_blocks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"0.0.0.0/0"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# From ANYWHERE - Be cautious! Wide open for testing only&lt;/span&gt;
    &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Allow SSH"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;ingress&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;from_port&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;
    &lt;span class="nx"&gt;to_port&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;
    &lt;span class="nx"&gt;protocol&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"tcp"&lt;/span&gt;
    &lt;span class="nx"&gt;cidr_blocks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"0.0.0.0/0"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# From ANYWHERE - Be cautious! Wide open for testing only&lt;/span&gt;
    &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Allow HTTP"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;egress&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;from_port&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;     &lt;span class="c1"&gt;# All Ports&lt;/span&gt;
    &lt;span class="nx"&gt;to_port&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;     &lt;span class="c1"&gt;# All Ports&lt;/span&gt;
    &lt;span class="nx"&gt;protocol&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"-1"&lt;/span&gt;  &lt;span class="c1"&gt;# All Protocols&lt;/span&gt;
    &lt;span class="nx"&gt;cidr_blocks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"0.0.0.0/0"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# To ANYWHERE&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  💬 Code Comments &amp;amp; What's New:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;user_data Power&lt;/strong&gt;: This is where the real "Magic as Code" shines! It's a bash script that runs when the instance first launches. I used it to:

&lt;ul&gt;
&lt;li&gt;➡️ Update packages, install Apache.&lt;/li&gt;
&lt;li&gt;➡️ Start/enable the Apache service.&lt;/li&gt;
&lt;li&gt;➡️ Create my awesome custom HTML welcome page:"Infrastructure as Code? More like Magic as Code!😂💫✨"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;aws_security_group&lt;/strong&gt;: This acts as a virtual firewall for your server.

&lt;ul&gt;
&lt;li&gt;🔒 It allows Port 22 (SSH) for secure remote access.&lt;/li&gt;
&lt;li&gt;🔒 It allows Port 80 (HTTP) so web browsers can connect to our page.&lt;/li&gt;
&lt;li&gt;🔒 Caution: 0.0.0.0/0 means "from anywhere." Super easy for testing, but in production, you'd restrict this to known IPs for better security!&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;data "aws_vpc" "default_vpc"&lt;/strong&gt;: A neat way to reference your default VPC without hardcoding its ID.&lt;/li&gt;

&lt;/ul&gt;

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

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




&lt;h2&gt;
  
  
  🧪 The Terraform Lifecycle: From Code to Cloud (and Back!) 🔁
&lt;/h2&gt;

&lt;p&gt;I truly experienced the core Terraform workflow:&lt;/p&gt;

&lt;p&gt;➡️ &lt;strong&gt;terraform init&lt;/strong&gt;: Initializes the working directory, downloading necessary provider plugins (like hashicorp/aws). It's the setup step.&lt;br&gt;
➡️ &lt;strong&gt;terraform plan&lt;/strong&gt;: Before applying any changes, terraform plan shows you exactly what Terraform will do. It's a crucial "dry run" to avoid surprises!&lt;br&gt;
➡️ &lt;strong&gt;terraform apply&lt;/strong&gt;: Brings your infrastructure to life! It executes the changes outlined in the plan, creating, updating, or deleting resources in your cloud provider.&lt;br&gt;
➡️ &lt;strong&gt;terraform destroy&lt;/strong&gt;: The responsible cleanup crew! This command tears down all the resources managed by your Terraform configuration. Crucial for avoiding unwanted cloud costs! 💰&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Brain Bytes from Day 3 🧠
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;'terraform apply' is Real Power!&lt;/strong&gt;: Transforms code into live cloud infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layered Deployments&lt;/strong&gt;: Start simple, build complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;'user_data'&lt;/strong&gt; for Automation: Automates server setup right after launch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Groups as Firewalls&lt;/strong&gt;: Essential for controlling network access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Lifecycle&lt;/strong&gt;: Remember init -&amp;gt; plan -&amp;gt; apply -&amp;gt; destroy!
Budgeting: Always terraform destroy when done!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Next? ➡️
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Day 3: Mission accomplished! Code was tangible and deployed real infrastructure. &lt;/li&gt;
&lt;li&gt;Stay tuned for more awesome automation on Day 4!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📡 Let’s Connect:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://linkedin.com/in/mercy-ndonga" rel="noopener noreferrer"&gt;LinkedIn💼&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>🧱 Terra Biteʒ 2: AWS Handshake 🤝</title>
      <dc:creator>Mercy Ndonga</dc:creator>
      <pubDate>Wed, 28 May 2025 10:54:49 +0000</pubDate>
      <link>https://dev.to/mercyndonga/terra-bitez-2-aws-handshake-k3p</link>
      <guid>https://dev.to/mercyndonga/terra-bitez-2-aws-handshake-k3p</guid>
      <description>&lt;p&gt;Day 2 of my Terraform journey was all about forging a powerful alliance: Terraform and Amazon Web Services (AWS)! This is where the magic of Infrastructure as Code truly begins.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Secure Your AWS Kingdom: IAM is FREE! 🥳
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ditch the root user (it's like leaving your castle door wide open! 😱). We're all about creating a dedicated &lt;strong&gt;IAM (Identity and Access Management) User&lt;/strong&gt;. Think granular permissions – keys to specific rooms, not the entire fortress. Best part? &lt;strong&gt;IAM is a FREE AWS service!&lt;/strong&gt; 🎉&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Here’s the quick setup:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt; ➡️ &lt;strong&gt;AWS Console &amp;gt; IAM:&lt;/strong&gt; Navigate and add a new user.&lt;/li&gt;
&lt;li&gt; ➡️ &lt;strong&gt;Programmatic Access:&lt;/strong&gt; Select this type.&lt;/li&gt;
&lt;li&gt; ➡️ &lt;strong&gt;Permissions:&lt;/strong&gt; For learning, &lt;code&gt;AdministratorAccess&lt;/code&gt; gets us going.&lt;/li&gt;
&lt;li&gt; ➡️ &lt;strong&gt;🔑 Grab Your Keys:&lt;/strong&gt; Download that &lt;code&gt;.csv&lt;/code&gt; with your &lt;strong&gt;Access key ID&lt;/strong&gt; and &lt;strong&gt;Secret access key&lt;/strong&gt;. Guard them like gold! 🔒&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💻 Connecting Your Dev Machine: &lt;code&gt;aws configure&lt;/code&gt; FTW!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Time to link your local VS Code (or your favorite IDE's terminal) to your AWS account:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt; ✔️ &lt;strong&gt;Install AWS CLI:&lt;/strong&gt; (If you haven't yet).&lt;/li&gt;
&lt;li&gt; ✔️ &lt;strong&gt;Terminal Time:&lt;/strong&gt; Open your terminal in VS Code.&lt;/li&gt;
&lt;li&gt; ✔️ &lt;strong&gt;Run &lt;code&gt;aws configure&lt;/code&gt;:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;➡️ Enter your &lt;strong&gt;AWS Access Key ID&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;➡️ Enter your &lt;strong&gt;AWS Secret Access Key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;➡️ Set your &lt;strong&gt;Default region name&lt;/strong&gt; (e.g., &lt;code&gt;af-south-1&lt;/code&gt;🌍).&lt;/li&gt;
&lt;li&gt;➡️ (Optional) Choose an &lt;strong&gt;Output format&lt;/strong&gt; (like &lt;code&gt;json&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;✨ Boom! Your local setup is now authenticated and ready for action!&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Verification Checkpoint
&lt;/h2&gt;

&lt;p&gt;To make &lt;em&gt;sure&lt;/em&gt; Terraform and AWS are BFFs, I did a quick check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AWS CLI Check:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sts get-caller-identity
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Expected Output:&lt;/strong&gt; This should tell you about the IAM user you configured, confirming AWS CLI is working.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```json
{
  "UserId": "AIDACKCEVSQ6C2EXAMPLE",
  "Account": "123456789012",
  "Arn": "arn:aws:iam::123456789012:user/my-iam-user"
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqzxemrg4yjqqzl5ig5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqzxemrg4yjqqzl5ig5l.png" alt="AWS STS Get Caller Identity Output" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤝 Terraform &amp;amp; AWS: Speaking the Same Language
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Here's the cool part: Terraform uses the secure credentials you configured with &lt;code&gt;aws configure&lt;/code&gt; to talk to AWS behind the scenes. This allows Terraform to make the necessary API calls to build, tweak, and tear down your infrastructure based on your code. Automation unlocked! 🚀&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚧 Troubleshooting Corner
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Error: No valid credential sources found&lt;/code&gt;&lt;/strong&gt;: Classic! Usually means your &lt;code&gt;aws configure&lt;/code&gt; went wrong, or Terraform can't find your &lt;code&gt;~/.aws/credentials&lt;/code&gt; file. Double-check those &lt;code&gt;aws configure&lt;/code&gt; steps.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💰 Pro Tip: Cloud Budgets are Your Friend! 🤝
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep those cloud costs in check! Always remember to &lt;code&gt;terraform destroy&lt;/code&gt; resources you're not actively learning with. Let's build knowledge, not unexpected bills! 😉&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enable MFA (Multi-Factor Authentication)&lt;/strong&gt; on your &lt;strong&gt;root account&lt;/strong&gt; (first!) and highly privileged IAM users. It's a game-changer! 🔐&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Brain Bytes from Day 2 🧠
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication is King:&lt;/strong&gt; &lt;code&gt;aws configure&lt;/code&gt; = AWS access. No &lt;code&gt;aws configure&lt;/code&gt;, no Terraform fun.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify, verify, verify:&lt;/strong&gt; &lt;code&gt;aws sts get-caller-identity&lt;/code&gt; is your friend after config changes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎉 What's Next? The Real Building Begins!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Terraform and AWS are officially connected!☁️ &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Day 3: Time to actually &lt;em&gt;deploy&lt;/em&gt; something small – maybe an EC2 instance?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;📡 Connect with me:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/mercy-ndonga" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt; 💼&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;`#terraform #aws #iac #cloud #devops #30dayterraformchallenge #cloudcomputing &lt;/p&gt;

</description>
    </item>
    <item>
      <title>🛠 Terra Biteʒ 1: Terraform Prep Party! 🎉</title>
      <dc:creator>Mercy Ndonga</dc:creator>
      <pubDate>Tue, 27 May 2025 09:28:34 +0000</pubDate>
      <link>https://dev.to/mercyndonga/terra-bitez-1-terraform-prep-party-16kb</link>
      <guid>https://dev.to/mercyndonga/terra-bitez-1-terraform-prep-party-16kb</guid>
      <description>&lt;p&gt;Hey there! 👋&lt;br&gt;&lt;br&gt;
Welcome to &lt;strong&gt;Terra Biteʒ 1&lt;/strong&gt; of my 30-Day Terraform Challenge journey! Today’s mission: set the stage for my cloud adventure with a deep dive into &lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt; and &lt;strong&gt;Terraform&lt;/strong&gt;. Let’s break it down:&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Quick Wins of the Day:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Grasped core IaC concepts
&lt;/li&gt;
&lt;li&gt;✅ Installed and configured my DevOps toolkit
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌩 Why Code Your Cloud? (Intro to IaC)
&lt;/h2&gt;

&lt;p&gt;In traditional IT ops, infrastructure was manually set up—slow, error-prone, and inconsistent. Enter &lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt;—a game-changer in &lt;strong&gt;DevOps&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;🧠 &lt;strong&gt;IaC lets us define, deploy, and destroy cloud infrastructure using code.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No more click-ops. Just clean, trackable, automatable configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔍 Types of IaC Tools:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ad hoc scripts&lt;/strong&gt;: Basic automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration mgmt tools&lt;/strong&gt;: e.g. Ansible, Puppet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server templating&lt;/strong&gt;: Immutable images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provisioning tools&lt;/strong&gt;: Like Terraform! 🚀&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧱 Why IaC is a Big Deal:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt; ⚡: Automate deploys, cut manual work
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt; ✅: No “it works on my machine” drama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versioned Infrastructure&lt;/strong&gt; 🔁: Track infrastructure like code with Git
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusable Modules&lt;/strong&gt; 🧩: Repeat patterns, eliminate repetitive setup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-Service Infrastructure&lt;/strong&gt; 🧑‍💻: Empower devs to build fast
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌍 Terraform 101: Your Cloud’s Architect
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt; is the IaC tool of choice for multi-cloud infrastructure. Here’s why it rocks:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Declarative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You say &lt;em&gt;what&lt;/em&gt; you want, Terraform figures out &lt;em&gt;how&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agentless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Works directly with cloud APIs, no agents needed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-cloud&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AWS, Azure, GCP? One tool to rule them all.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔧 My Terraform "Party Pack" Setup
&lt;/h2&gt;

&lt;p&gt;To get hands-on, I set up my full IaC environment:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VS Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Code editor of choice 🎨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;For version control 🔁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AWS CLI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;For cloud API access ☁️&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Terraform CLI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core tool for IaC 💻&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🔌 Must-Have VS Code Extensions:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🧩 &lt;strong&gt;Hashicorp Terraform&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;🧩 &lt;strong&gt;Hashicorp HCL&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;🧩 &lt;strong&gt;AWS Toolkit&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Material Icon Theme&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🌈 &lt;strong&gt;Indent Rainbow&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Terraform Core Commands
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;terraform init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prepares the project (downloads providers)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;terraform plan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dry run – see what changes would happen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;terraform apply&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Executes and provisions infra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;terraform destroy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Destroys resources (careful!) 💣&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧁 Terra Biteʒ Recap:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Today’s Output:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Terraform installed and ready
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Feeling:&lt;/strong&gt; Energized and prepped for the Terraform deep-dive ahead!&lt;br&gt;
Stay tuned for &lt;strong&gt;Terra Biteʒ 2&lt;/strong&gt;!&lt;/p&gt;




&lt;h2&gt;
  
  
  📡 Let’s Connect:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/WanjiruNdonga/" rel="noopener noreferrer"&gt;GitHub🐙&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://linkedin.com/in/mercy-ndonga" rel="noopener noreferrer"&gt;LinkedIn💼&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>awsaimlke</category>
      <category>terraform</category>
      <category>30daysofchallenge</category>
      <category>infrastructureascode</category>
    </item>
  </channel>
</rss>
