<?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: Akuphe Dieudonne</title>
    <description>The latest articles on DEV Community by Akuphe Dieudonne (@akuphe-devops).</description>
    <link>https://dev.to/akuphe-devops</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%2F2992649%2Fc35ef797-e710-48a8-b448-2049176a955a.jpeg</url>
      <title>DEV Community: Akuphe Dieudonne</title>
      <link>https://dev.to/akuphe-devops</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akuphe-devops"/>
    <language>en</language>
    <item>
      <title>Auto-Scaling Web Application with CI/CD Pipeline on AWS</title>
      <dc:creator>Akuphe Dieudonne</dc:creator>
      <pubDate>Sun, 30 Mar 2025 07:59:29 +0000</pubDate>
      <link>https://dev.to/akuphe-devops/auto-scaling-web-application-with-cicd-pipeline-on-aws-4gm4</link>
      <guid>https://dev.to/akuphe-devops/auto-scaling-web-application-with-cicd-pipeline-on-aws-4gm4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt;&lt;br&gt;
Deploy a highly available, scalable, and secure web application on Amazon EC2 using Terraform, Ansible, and AWS DevOps tools.&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%2Ft8bnokwvrkr8daqmrb6e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8bnokwvrkr8daqmrb6e.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Setting Up My AWS Environment&lt;/strong&gt;&lt;br&gt;
First, I made sure I had the necessary tools installed on my system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y terraform ansible awscli

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, I configured AWS CLI with my credentials:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws configure

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Writing Terraform Code to Provision AWS Infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I created a project directory and initialized Terraform:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir ec2-project &amp;amp;&amp;amp; cd ec2-project
mkdir terraform &amp;amp;&amp;amp; cd terraform
terraform init

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, I wrote my Terraform configuration files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;main.tf - Setting Up AWS VPC and Subnets
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;provider "aws" {
  region = "us-east-1"
}

resource "aws_vpc" "main_vpc" {
  cidr_block = "10.0.0.0/16"
  tags = { Name = "MainVPC" }
}

resource "aws_subnet" "public_subnet" {
  vpc_id                  = aws_vpc.main_vpc.id
  cidr_block              = "10.0.1.0/24"
  map_public_ip_on_launch = true
  availability_zone       = "us-east-1a"
  tags = { Name = "PublicSubnet" }
}

resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.main_vpc.id
  tags = { Name = "MainIGW" }
}

resource "aws_route_table" "public_rt" {
  vpc_id = aws_vpc.main_vpc.id
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.gw.id
  }
}

resource "aws_route_table_association" "public_association" {
  subnet_id      = aws_subnet.public_subnet.id
  route_table_id = aws_route_table.public_rt.id
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;security_groups.tf - Setting Up Security
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_security_group" "web_sg" {
  vpc_id = aws_vpc.main_vpc.id

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = { Name = "WebSecurityGroup" }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;ec2.tf - Launching My EC2 Instance
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_instance" "web_server" {
  ami             = "ami-0c55b159cbfafe1f0"
  instance_type   = "t2.micro"
  subnet_id       = aws_subnet.public_subnet.id
  security_groups = [aws_security_group.web_sg.name]
  key_name        = "ec2-key"

  user_data = file("install_apache.sh")

  tags = { Name = "WebServer" }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;install_apache.sh - Automating Apache Installation
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
sudo yum update -y
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd
echo "&amp;lt;h1&amp;gt;Welcome to My AWS EC2 Web App&amp;lt;/h1&amp;gt;" | sudo tee /var/www/html/index.html

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Deploying with Terraform
Once everything was set up, I ran:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform apply -auto-approve

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This successfully launched my EC2 instance with Apache installed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Configuring My EC2 Instance with Ansible&lt;/strong&gt;&lt;br&gt;
After Terraform deployed my infrastructure, I configured the EC2 instance using Ansible.&lt;/p&gt;

&lt;p&gt;First, I created an Ansible inventory file with my EC2 public IP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[web_servers]
&amp;lt;EC2_PUBLIC_IP&amp;gt; ansible_user=ec2-user ansible_ssh_private_key_file=~/.ssh/id_rsa

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, I wrote an Ansible playbook (deploy.yml):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Configure Web Server
  hosts: web_servers
  become: yes
  tasks:
    - name: Install Apache
      yum:
        name: httpd
        state: present

    - name: Start Apache
      service:
        name: httpd
        state: started
        enabled: yes

    - name: Deploy Web Page
      copy:
        content: "&amp;lt;h1&amp;gt;Deployed via Ansible!&amp;lt;/h1&amp;gt;"
        dest: /var/www/html/index.html

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I executed the playbook:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ansible-playbook -i inventory.ini deploy.yml

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apache was installed, and my webpage was deployed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Setting Up a CI/CD Pipeline with AWS CodePipeline&lt;/strong&gt;&lt;br&gt;
To automate deployments, I set up AWS CodePipeline with the following stages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source Stage (AWS CodeCommit)
I created a Git repository in AWS CodeCommit and pushed my project code.&lt;/li&gt;
&lt;li&gt;Build Stage (AWS CodeBuild)
I created a buildspec.yml file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 0.2
phases:
  install:
    commands:
      - yum install -y httpd
  build:
    commands:
      - echo "Building the application..."
  post_build:
    commands:
      - echo "Build completed!"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Deploy Stage (AWS CodeDeploy)
I used AWS CodeDeploy to deploy new versions of my app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Monitoring and Security&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;I ensured high availability and security by:&lt;/strong&gt;&lt;br&gt;
✅ Enabling AWS CloudWatch for monitoring.&lt;br&gt;
✅ Setting Up AWS CloudTrail to log API calls.&lt;br&gt;
✅ Using IAM Policies to restrict access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Deliverables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1) Terraform Code to automate infrastructure deployment.&lt;br&gt;
2) Ansible Playbook to configure and deploy the app.&lt;br&gt;
3) CI/CD Pipeline for automated deployments.&lt;br&gt;
4) GitHub Repository with Documentation.&lt;br&gt;
4) Demo Video of the entire process.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>terraform</category>
      <category>ansible</category>
      <category>aws</category>
    </item>
    <item>
      <title>How to Host a Static Website on Amazon S3</title>
      <dc:creator>Akuphe Dieudonne</dc:creator>
      <pubDate>Sun, 30 Mar 2025 06:18:09 +0000</pubDate>
      <link>https://dev.to/akuphe-devops/how-to-host-a-static-website-on-amazon-s3-332j</link>
      <guid>https://dev.to/akuphe-devops/how-to-host-a-static-website-on-amazon-s3-332j</guid>
      <description>&lt;p&gt;Introduction&lt;br&gt;
Amazon Simple Storage Service (S3) provides a reliable, scalable, and cost-effective solution for hosting static websites. This guide walks you through the process of setting up and deploying a static website on S3, including configuration, permissions&lt;/p&gt;

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

&lt;p&gt;An AWS account&lt;/p&gt;

&lt;p&gt;A static website (HTML, CSS, JavaScript files ready)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create an S3 Bucket&lt;/strong&gt;&lt;br&gt;
1) Sign in to the AWS Management Console.&lt;/p&gt;

&lt;p&gt;2) Navigate to S3.&lt;/p&gt;

&lt;p&gt;3) Click Create bucket.&lt;/p&gt;

&lt;p&gt;4) Enter a unique Bucket name (must be globally unique and follow DNS naming conventions).&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%2Fc5v3s6zuj8bryo57frff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5v3s6zuj8bryo57frff.png" alt="Image description" width="800" height="470"&gt;&lt;/a&gt;5) Choose a Region close to your audience.&lt;/p&gt;

&lt;p&gt;6) Uncheck Block all public access and acknowledge the warning.&lt;/p&gt;

&lt;p&gt;7) Click Create bucket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Enable Static Website Hosting&lt;/strong&gt;&lt;br&gt;
1) Open the newly created S3 bucket.&lt;/p&gt;

&lt;p&gt;2) Go to the Properties tab.&lt;/p&gt;

&lt;p&gt;3) Scroll down to Static website hosting and click Edit.&lt;/p&gt;

&lt;p&gt;4) Choose Enable.&lt;/p&gt;

&lt;p&gt;5) Select Host a static website.&lt;/p&gt;

&lt;p&gt;6) Enter index.html as the Index document.&lt;/p&gt;

&lt;p&gt;7) (Optional) Specify an Error document (e.g., error.html).&lt;/p&gt;

&lt;p&gt;8) Click Save changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Upload Website Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgmlsjc5dbloe45bo3ne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgmlsjc5dbloe45bo3ne.png" alt="Image description" width="800" height="445"&gt;&lt;/a&gt;&lt;br&gt;
1) Open the Objects tab in your S3 bucket.&lt;/p&gt;

&lt;p&gt;2) Click Upload.&lt;/p&gt;

&lt;p&gt;3) Add all your website files (HTML, CSS, JS, images, etc.).&lt;/p&gt;

&lt;p&gt;4) Click Upload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Set Bucket Permissions&lt;/strong&gt;&lt;br&gt;
1) Navigate to the Permissions tab.&lt;/p&gt;

&lt;p&gt;2) Scroll to Bucket Policy and click Edit.&lt;/p&gt;

&lt;p&gt;3) Add the following policy to make your website publicly accessible:&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%2F93hxb471m12pkzl2dqfs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93hxb471m12pkzl2dqfs.png" alt="Image description" width="800" height="390"&gt;&lt;/a&gt;&lt;br&gt;
4) Click Save changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Access Your Website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuw6tpdo5b0glmsb9w9ps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuw6tpdo5b0glmsb9w9ps.png" alt="Image description" width="800" height="475"&gt;&lt;/a&gt;&lt;br&gt;
1) Navigate to the Properties tab.&lt;/p&gt;

&lt;p&gt;2) Under Static website hosting, find your Bucket website endpoint.&lt;/p&gt;

&lt;p&gt;3) Click the URL to view your website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Optional) Step 6: Configure a Custom Domain with Route 53&lt;/strong&gt;&lt;br&gt;
1) Purchase a domain via AWS Route 53 or use an existing domain.&lt;/p&gt;

&lt;p&gt;2) Create an S3 bucket with the same name as your domain (e.g., example.com).&lt;/p&gt;

&lt;p&gt;3) Enable Static website hosting as before.&lt;/p&gt;

&lt;p&gt;4) Go to Route 53 and create an Alias Record pointing to your S3 bucket.&lt;/p&gt;

&lt;p&gt;5) (Optional) Use AWS Certificate Manager (ACM) and CloudFront for HTTPS support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Hosting a static website on Amazon S3 is a simple and scalable solution. With S3’s cost-effectiveness and AWS integrations, it provides a powerful way to deploy and manage static content efficiently.&lt;br&gt;
&lt;a href="https://akuphe-devops.s3.us-east-1.amazonaws.com/weather-dashboard.html" rel="noopener noreferrer"&gt;LINK TO MY SIMPLE WEATHER WEB APP HOSTED ON S3 &lt;/a&gt;&lt;/p&gt;

</description>
      <category>s3</category>
      <category>devops</category>
      <category>aws</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
