<?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: Nnamdi Kenneth Nwosu</title>
    <description>The latest articles on DEV Community by Nnamdi Kenneth Nwosu (@dev-nnamdi).</description>
    <link>https://dev.to/dev-nnamdi</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%2F1224994%2F3b273135-7fd3-4eab-8610-5bbaa916f9d9.jpg</url>
      <title>DEV Community: Nnamdi Kenneth Nwosu</title>
      <link>https://dev.to/dev-nnamdi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev-nnamdi"/>
    <language>en</language>
    <item>
      <title>50 basic Linux commands</title>
      <dc:creator>Nnamdi Kenneth Nwosu</dc:creator>
      <pubDate>Mon, 08 Jul 2024 08:50:26 +0000</pubDate>
      <link>https://dev.to/dev-nnamdi/50-basic-linux-commands-42dg</link>
      <guid>https://dev.to/dev-nnamdi/50-basic-linux-commands-42dg</guid>
      <description>&lt;p&gt;Here are 50 basic Linux commands that are useful for navigating and managing your system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt; - Print working directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; - List directory contents.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt; - Change directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;touch&lt;/code&gt; - To create a file without any content.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat&lt;/code&gt; - Concatenate and display file content.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cp&lt;/code&gt; - Copy files or directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mv&lt;/code&gt; - Move or rename files or directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm&lt;/code&gt; - Remove files or directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir&lt;/code&gt; - Create a new directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rmdir&lt;/code&gt; - Remove an empty directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;echo&lt;/code&gt; - Display a line of text or a variable value.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nano&lt;/code&gt; - A simple text editor.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vi&lt;/code&gt; - A powerful text editor.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chmod&lt;/code&gt; - Change file or directory permissions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chown&lt;/code&gt; - Change file or directory owner and group.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;find&lt;/code&gt; - Search for files in a directory hierarchy.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grep&lt;/code&gt; - Search text using patterns.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;man&lt;/code&gt; - Display the manual for a command.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ps&lt;/code&gt; - Display information about running processes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill&lt;/code&gt; - Terminate processes by PID.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;top&lt;/code&gt; - Display and update sorted information about processes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;df&lt;/code&gt; - Report file system disk space usage.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;du&lt;/code&gt; - Estimate file space usage.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;free&lt;/code&gt; - Display memory usage.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uname&lt;/code&gt; - Print system information.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uptime&lt;/code&gt; - Tell how long the system has been running.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;whoami&lt;/code&gt; - Display the current user.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo&lt;/code&gt; - Execute a command as another user, typically the superuser.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;apt-get&lt;/code&gt; - Package handling utility for Debian-based distributions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yum&lt;/code&gt; - Package manager for RPM-based distributions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tar&lt;/code&gt; - Archive files.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;zip&lt;/code&gt; - Package and compress (archive) files.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;unzip&lt;/code&gt; - Extract compressed files.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wget&lt;/code&gt; - Retrieve files from the web.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;curl&lt;/code&gt; - Transfer data from or to a server.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ssh&lt;/code&gt; - OpenSSH client (remote login program).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scp&lt;/code&gt; - Secure copy (remote file copy program).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rsync&lt;/code&gt; - Remote file and directory synchronization.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hostname&lt;/code&gt; - Show or set the system's host name.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ping&lt;/code&gt; - Send ICMP ECHO_REQUEST to network hosts.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;netstat&lt;/code&gt; - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ifconfig&lt;/code&gt; - Configure a network interface.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ip&lt;/code&gt; - Show/manipulate routing, devices, policy routing, and tunnels.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;iptables&lt;/code&gt; - Administration tool for IPv4 packet filtering and NAT.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systemctl&lt;/code&gt; - Control the systemd system and service manager.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;journalctl&lt;/code&gt; - Query and display messages from the journal.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;crontab&lt;/code&gt; - Schedule periodic background jobs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo su&lt;/code&gt; - allows us to switch to a different user and execute one or more commands in the shell without logging out from our current session&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mount&lt;/code&gt; - Mount a file system.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;umount&lt;/code&gt; - Unmount a file system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These commands form the basis of interacting with a Linux system and performing various administrative tasks.&lt;/p&gt;

&lt;p&gt;Goodluck!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>linux</category>
      <category>bash</category>
      <category>devops</category>
    </item>
    <item>
      <title>How To Setup Kubernetes Cluster with master and worker node ( kubelet, kubeadm and kubectl)</title>
      <dc:creator>Nnamdi Kenneth Nwosu</dc:creator>
      <pubDate>Mon, 08 Jul 2024 08:10:42 +0000</pubDate>
      <link>https://dev.to/dev-nnamdi/how-to-setup-kubernetes-cluster-with-master-and-worker-node-kubelet-kubeadm-and-kubectl-4d72</link>
      <guid>https://dev.to/dev-nnamdi/how-to-setup-kubernetes-cluster-with-master-and-worker-node-kubelet-kubeadm-and-kubectl-4d72</guid>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create Two Ubuntu VM (MASTER AND WORKER): and SSH Into them using the link &lt;a href="https://dev.to/dev-nnamdi/creating-a-vm-instance-on-aws-using-ec2-and-accessing-it-using-mobaxterm-5aho"&gt;here &lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install Docker Engine on both VM and enable Docker:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install -y docker.io
sudo usermod –aG docker Ubuntu
sudo chmod 777 /var/run/docker.sock

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Installing kubelet, kubeadm and kubectl:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Download the public signing key for the Kubernetes package repositories. The same signing key is used for all repositories so you can disregard the version in the URL:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Add the appropriate Kubernetes apt repository.
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Update the apt package index, install kubelet, kubeadm and kubectl, and pin their version:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Enable the kubelet service before running kubeadm
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart kubelet
sudo systemctl status kubelet
sudo systemctl status kubelet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Adding kubeadm to a network (ON THE MASTER VM ONLY)
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo kubeadm init --apiserver-advertise-address=(PRIVATE IP OF VM) --pod-network-cidr=192.168.0.0/16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding kubenetes cluser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Back on WORKER NODE:&lt;br&gt;
 Follow the same process to - Install kubelet, kubeadm and kubectl:&lt;/p&gt;

&lt;p&gt;Join the Master and Worker with the Join Command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using the JOIN Command looks like this on the vm
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo kubeadm join 172.31.56.164:6443 --token y82mmu.a9wairsns2hhrgtu \
        --discovery-token-ca-cert-hash sha256:fd617bad969a4275a7a8d03c6bcb3a9a115196feb14c27ffc5371495e1dc6f84

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

&lt;/div&gt;


&lt;p&gt;to retrive the join command incase you didnt save it run this on Master VM&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm token create --print-join-command
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To test on Master VM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;its show node NOT READY.&lt;/p&gt;

&lt;p&gt;Set your port network Using Calico manifest:&lt;br&gt;
click &lt;a href="https://docs.tigera.io/calico/latest/getting-started/kubernetes/self-managed-onprem/onpremises" rel="noopener noreferrer"&gt;here&lt;/a&gt; for doc info&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml -O

kubectl apply -f calico.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run these commands on MASTER&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get nodes
kubectl get pod -A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a pod to TEST:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl run my-pod --image=nginx 
kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thank You for Following and Practicing. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>kubernetes</category>
      <category>ec2</category>
      <category>devops</category>
    </item>
    <item>
      <title>Creating a Ubuntu VM (instance) on AWS using EC2 and accessing it using MobaXterm</title>
      <dc:creator>Nnamdi Kenneth Nwosu</dc:creator>
      <pubDate>Mon, 08 Jul 2024 07:49:26 +0000</pubDate>
      <link>https://dev.to/dev-nnamdi/creating-a-vm-instance-on-aws-using-ec2-and-accessing-it-using-mobaxterm-5aho</link>
      <guid>https://dev.to/dev-nnamdi/creating-a-vm-instance-on-aws-using-ec2-and-accessing-it-using-mobaxterm-5aho</guid>
      <description>&lt;p&gt;Step 1: &lt;strong&gt;Create an EC2 Instance on AWS&lt;/strong&gt;&lt;br&gt;
Sign In to the &lt;a href="https://aws.amazon.com/console/" rel="noopener noreferrer"&gt;AWS Management Console&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Step 2: &lt;strong&gt;Navigate to EC2 Dashboard:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From the AWS Management Console, click on "Services" in the top left corner, then select "EC2" under the "Compute" category.&lt;/p&gt;

&lt;p&gt;Step 3: &lt;strong&gt;Launch an Instance:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the EC2 Dashboard, click the "Launch Instance" button.&lt;br&gt;
Choose an Amazon Machine Image (AMI):&lt;/p&gt;

&lt;p&gt;Select an AMI that suits your needs. For this example, let's select "UBUNTU".&lt;/p&gt;

&lt;p&gt;Step 4: &lt;strong&gt;Choose an Instance Type:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select an instance type based on the compute, memory, and storage requirements of your application. The t2.micro / t2.meduim instance type is a common choice for small applications and is eligible for the free tier.&lt;/p&gt;

&lt;p&gt;Step 5: &lt;strong&gt;Configure Instance Details:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configure the instance details according to your requirements. For a basic setup, you can leave the default settings.&lt;/p&gt;

&lt;p&gt;Step 6: &lt;strong&gt;Add Storage:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configure the storage for your instance. The default settings are usually sufficient, but you can add more volumes or change the volume type as needed, like 20-30.&lt;/p&gt;

&lt;p&gt;Step 7: &lt;strong&gt;Add Tags:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add tags to help you manage and identify your instances. Tags are key-value pairs that can be used for organization, automation, and cost allocation.&lt;/p&gt;

&lt;p&gt;Step 8: &lt;strong&gt;Select a Key Pair:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select an existing key pair or &lt;strong&gt;create a new key pair&lt;/strong&gt;. A key pair is used for secure SSH access to your instance. Download and save the key pair file (.pem) securely, as you won't be able to download it again.&lt;/p&gt;

&lt;p&gt;Step 9: &lt;strong&gt;Configure Security Group:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a new security group or select an existing one. Ensure that the security group has a rule allowing SSH traffic (port 22) from your IP address or a range of IP addresses. Example rule:&lt;br&gt;
Type: SSH&lt;br&gt;
Protocol: TCP&lt;br&gt;
Port Range: 22&lt;br&gt;
Source: My IP (or a custom range of IP addresses)&lt;/p&gt;

&lt;p&gt;Step 10: &lt;strong&gt;Review and Launch:&lt;/strong&gt;&lt;br&gt;
Review your instance configuration and click the "Launch" button.&lt;br&gt;
Click "Launch Instances" to create your EC2 instance. You'll see a confirmation page with the instance ID.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;PART 2::&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Access Your EC2 Instance Using MobaXterm&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download and Install MobaXterm:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don't already have MobaXterm installed, download and install it from the official &lt;a href="https://mobaxterm.mobatek.net/" rel="noopener noreferrer"&gt;MobaXterm&lt;/a&gt; website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open MobaXterm:&lt;/strong&gt;&lt;br&gt;
Launch MobaXterm on your local machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure the SSH Session:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on the "Session" button in the top left corner.&lt;br&gt;
Select "SSH" from the session type options.&lt;br&gt;
Enter Remote Host Information&lt;/p&gt;

&lt;p&gt;In the "Remote host" field, enter the public IP address of your EC2 instance. This information can be found in the EC2 Dashboard under "Instances".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specify Username:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enter the username for your AMI. For ubuntu, default username is ubuntu For Amazon Linux 2, the default username is ec2-user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advanced SSH Settings:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on the "Advanced SSH settings" tab.&lt;br&gt;
In the "Use private key" section, click the "Browse" button and select the .pem key pair file you downloaded when creating your EC2 instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start the SSH Session:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click "OK" to start the SSH session. MobaXterm will use the specified private key to authenticate and establish an SSH connection to your EC2 instance.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Thank You. *&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>jenkins</category>
      <category>ec2</category>
      <category>devops</category>
    </item>
    <item>
      <title>How To Create AWS Account</title>
      <dc:creator>Nnamdi Kenneth Nwosu</dc:creator>
      <pubDate>Mon, 08 Jul 2024 07:30:10 +0000</pubDate>
      <link>https://dev.to/dev-nnamdi/how-to-create-aws-account-4ie0</link>
      <guid>https://dev.to/dev-nnamdi/how-to-create-aws-account-4ie0</guid>
      <description>&lt;p&gt;Creating an AWS account involves several steps to ensure your account is set up correctly. Here's a step-by-step guide:&lt;/p&gt;

&lt;p&gt;Go to the AWS Sign Up Page:&lt;/p&gt;

&lt;p&gt;Navigate to the &lt;a href="https://aws.amazon.com/console/" rel="noopener noreferrer"&gt;AWS sign-up page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Create a New Account:&lt;/p&gt;

&lt;p&gt;Click on the "Create a new AWS account" button.&lt;/p&gt;

&lt;p&gt;Enter Your Account Information:&lt;/p&gt;

&lt;p&gt;Provide your email address, choose a password, and select an AWS account name. Click "Continue".&lt;/p&gt;

&lt;p&gt;Contact Information:&lt;/p&gt;

&lt;p&gt;Enter your contact information, including your full name, phone number, and address. Choose between a professional or personal account. Click "Create Account and Continue".&lt;/p&gt;

&lt;p&gt;Payment Information:&lt;/p&gt;

&lt;p&gt;Enter your credit card or debit card details. AWS uses this to verify your identity and to charge for any services you may use beyond the free tier. Click "Verify and Add".&lt;/p&gt;

&lt;p&gt;Identity Verification:&lt;/p&gt;

&lt;p&gt;You will be asked to verify your identity via a phone call or SMS. Enter the provided PIN to complete the verification process.&lt;/p&gt;

&lt;p&gt;Select a Support Plan:&lt;/p&gt;

&lt;p&gt;Choose a support plan. The Basic Support Plan is free, but AWS also offers Developer, Business, and Enterprise Support Plans for a fee.&lt;/p&gt;

&lt;p&gt;Confirm and Sign In:&lt;/p&gt;

&lt;p&gt;Once your account is created, you will receive a confirmation email. Click the link in the email to activate your account. Sign in to the &lt;a href="https://aws.amazon.com/console/" rel="noopener noreferrer"&gt;AWS Management Console.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After signing in, you can start using AWS services. It’s a good idea to set up some initial configurations like enabling Multi-Factor Authentication (MFA) for enhanced security and setting up billing alerts to manage costs.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awschallenge</category>
      <category>ec2</category>
      <category>awsdevops</category>
    </item>
    <item>
      <title>Best Jenkins Installation Guide</title>
      <dc:creator>Nnamdi Kenneth Nwosu</dc:creator>
      <pubDate>Mon, 08 Jul 2024 07:21:49 +0000</pubDate>
      <link>https://dev.to/dev-nnamdi/best-jenkins-installation-guide-2jl9</link>
      <guid>https://dev.to/dev-nnamdi/best-jenkins-installation-guide-2jl9</guid>
      <description>&lt;p&gt;After setting Up your ubuntu VM and SSH into it via mobaxterm.&lt;br&gt;
You can click &lt;a href="https://dev.to/dev-nnamdi/creating-a-vm-instance-on-aws-using-ec2-and-accessing-it-using-mobaxterm-5aho"&gt;Here&lt;/a&gt; For Details on How To.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Update Your System:&lt;/strong&gt;&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
sudo apt upgrade -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Install Java:&lt;/strong&gt;&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 install openjdk-11-jdk -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3: Add Jenkins Repository and Add the repository key:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget -q -O - https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ &amp;gt; /etc/apt/sources.list.d/jenkins.list'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Install Jenkins:&lt;/strong&gt;&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
sudo apt install jenkins -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5: Checking the Jenkins:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start jenkins
sudo systemctl enable jenkins
sudo systemctl status jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6: Access Your Jenkins:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;your_server_ip:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 7: Unlock Jenkins:&lt;/strong&gt;&lt;br&gt;
To unlock Jenkins, you need the initial admin password. Retrieve it by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo cat /var/lib/jenkins/secrets/initialAdminPassword
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Thank You.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>aws</category>
      <category>azure</category>
      <category>devops</category>
    </item>
    <item>
      <title>Automating Linux User Management with Bash Script</title>
      <dc:creator>Nnamdi Kenneth Nwosu</dc:creator>
      <pubDate>Wed, 03 Jul 2024 11:25:14 +0000</pubDate>
      <link>https://dev.to/dev-nnamdi/automating-linux-user-management-with-bash-script-4edp</link>
      <guid>https://dev.to/dev-nnamdi/automating-linux-user-management-with-bash-script-4edp</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Managing user accounts in a Linux environment can be a daunting task, especially when onboarding a large number of new developers. To streamline this process, I have created a Bash script, create_users.sh, which automates the creation of user accounts, assigns them to appropriate groups, generates random passwords, and logs all actions performed.&lt;/p&gt;

&lt;p&gt;This article explains the script in detail and demonstrates its usage. The script and article are part of the HNG Internship task, and you can learn more about the program (&lt;a href="https://hng.tech/internship" rel="noopener noreferrer"&gt;https://hng.tech/internship&lt;/a&gt;) and (&lt;a href="https://hng.tech/premium" rel="noopener noreferrer"&gt;https://hng.tech/premium&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv51mwrb99sp0u1gceh4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv51mwrb99sp0u1gceh4x.png" alt="Image description" width="731" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Script Breakdown&lt;/strong&gt;&lt;br&gt;
Prerequisites&lt;br&gt;
Ensure that your system has the necessary permissions to create users, groups, and modify system files. You need sudo access to run the script successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Script Explanation&lt;/strong&gt;&lt;br&gt;
Logging and Password Files Initialization:&lt;br&gt;
The script initializes the log file (/var/log/user_management.log) and the password file (/var/secure/user_passwords.csv). It sets appropriate permissions to ensure only the file owner can read the password file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LOGFILE="/var/log/user_management.log"
PASSFILE="/var/secure/user_passwords.csv"
touch $LOGFILE
touch $PASSFILE
chmod 600 $PASSFILE

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Logging Function:&lt;/strong&gt;&lt;br&gt;
A function log_action is defined to log actions with a timestamp.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;log_action() {
    echo "$(date "+%Y-%m-%d %H:%M:%S") - $1" &amp;gt;&amp;gt; $LOGFILE
}

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Input File Check:&lt;/strong&gt;&lt;br&gt;
The script checks if an input file is provided as an argument. If not, it exits with a usage message.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if [ -z "$1" ]; then
    echo "Usage: bash create_users.sh &amp;lt;name-of-text-file&amp;gt;"
    exit 1
fi

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reading Input File:&lt;/strong&gt;&lt;br&gt;
The script reads the input file line by line, processing each username and associated groups.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;while IFS=';' read -r username groups; do
    # Processing logic
done &amp;lt; "$1"

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;User and Group Creation:&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
For each line, the script:&lt;/p&gt;

&lt;p&gt;Removes leading/trailing whitespace.&lt;br&gt;
Checks if the user already exists.&lt;br&gt;
Creates the user with a personal group.&lt;br&gt;
Creates additional groups if specified and adds the user to these groups.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if id -u "$username" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then
    log_action "User $username already exists."
    continue
fi
useradd -m -s /bin/bash -G "$username" "$username"

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Password Generation:&lt;/strong&gt;&lt;br&gt;
The script generates a random password using openssl, sets it for the user, and stores it securely.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;password=$(openssl rand -base64 12)
echo "$username:$password" | chpasswd
echo "$username,$password" &amp;gt;&amp;gt; $PASSFILE

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Completion Log:&lt;/strong&gt;&lt;br&gt;
The script logs the completion of the user creation process.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;log_action "User creation process completed."
echo "User creation process completed. Check $LOGFILE for details."

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
The create_users.sh script simplifies the task of managing user accounts in a Linux environment by automating user and group creation, password generation, and logging. It ensures security and efficiency, making it an essential tool for SysOps engineers.&lt;/p&gt;

&lt;p&gt;To learn more about the HNG Internship and the opportunities it offers, visit &lt;a href="https://hng.tech/internship" rel="noopener noreferrer"&gt;here&lt;/a&gt; and &lt;a href="https://hng.tech/premium" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>bash</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
