<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux &amp; Automation on Sagar Panda | DevOps &amp; Cloud Infra Engineer</title><link>https://new.sagarpanda.com/categories/linux--automation/</link><description>Recent content in Linux &amp; Automation on Sagar Panda | DevOps &amp; Cloud Infra Engineer</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 24 May 2026 12:45:10 +0530</lastBuildDate><atom:link href="https://new.sagarpanda.com/categories/linux--automation/index.xml" rel="self" type="application/rss+xml"/><item><title>Turn Your GitHub Repository into a Self-Managing Workflow</title><link>https://new.sagarpanda.com/blogs/github-automation/</link><pubDate>Sun, 24 May 2026 12:45:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/github-automation/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a
 href="https://new.sagarpanda.com/blogs/github-actions/"&gt;In my previous article, I wrote the fundamentals of GitHub Actions and how they can simplify CI/CD pipelines&lt;/a&gt;. But modern repositories need much more than just automated builds and deployments.&lt;/p&gt;
&lt;p&gt;As projects grow, maintaining pull requests, managing issues, handling releases, updating dependencies, and reviewing security manually becomes repetitive and time-consuming.&lt;/p&gt;</description></item><item><title>GitLab Setup Unlocked: Your 10-Minute Fast-Track Guide</title><link>https://new.sagarpanda.com/blogs/gitlab/gitlab-setup/</link><pubDate>Sun, 12 Apr 2026 10:45:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/gitlab/gitlab-setup/</guid><description>&lt;h2 id="setup-host"&gt;Setup Host&lt;a href="#setup-host" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;First, set up an instance. I chose &lt;strong&gt;AWS EC2&lt;/strong&gt;, but you can use any cloud provider or your own physical server.&lt;/p&gt;
&lt;h3 id="hardware-requirements"&gt;Hardware Requirements&lt;a href="#hardware-requirements" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Do not try to use the &amp;ldquo;Free Tier&amp;rdquo; &lt;code&gt;t2.micro&lt;/code&gt; or &lt;code&gt;t3.micro&lt;/code&gt;. GitLab runs several background services (PostgreSQL, Redis, Sidekiq) that require significant memory.&lt;/p&gt;</description></item><item><title>Set Up mTLS in NGINX for Robust Web Security.</title><link>https://new.sagarpanda.com/blogs/nginx/nginx-mtls/</link><pubDate>Mon, 09 Dec 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/nginx/nginx-mtls/</guid><description>&lt;h3 id="what-is-mtls"&gt;What is mTLS:&lt;a href="#what-is-mtls" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;mTLS, or &lt;strong&gt;mutual TLS&lt;/strong&gt;, is a security protocol that ensures &lt;strong&gt;both&lt;/strong&gt; the client and the server authenticate each other when they communicate over a network. It’s like a handshake where both sides check each other’s identity, making sure that both are who they say they are.&lt;/p&gt;</description></item><item><title>Fortify Your Security with CrowdSec — A Quick Start Guide</title><link>https://new.sagarpanda.com/blogs/linux/crowdsec/</link><pubDate>Mon, 30 Sep 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/linux/crowdsec/</guid><description>&lt;h3 id="what-is-crowdsec"&gt;What is CrowdSec:&lt;a href="#what-is-crowdsec" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;CrowdSec is an open-source security tool designed to help protect servers and applications from cyberattacks. It works by analyzing logs from your systems to detect suspicious activity, such as brute-force attempts, and then takes action to block or prevent those threats.&lt;/p&gt;</description></item><item><title>The Essential Role of Exit Codes in Bash Scripting</title><link>https://new.sagarpanda.com/blogs/linux/shellscript4/</link><pubDate>Wed, 26 Jun 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/linux/shellscript4/</guid><description>&lt;h2 id="what-are-exit-codes-in-linux"&gt;What are exit codes in linux&lt;a href="#what-are-exit-codes-in-linux" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In Linux and Unix-like systems, an exit code is a numeric value returned by a command or a script after completion. It indicates the success or failure of the command or script execution.&lt;/p&gt;</description></item><item><title>Linux Terminal tips - Part 2</title><link>https://new.sagarpanda.com/blogs/linux/linux-tips2/</link><pubDate>Tue, 28 May 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/linux/linux-tips2/</guid><description>&lt;h3 id="1-reverse-search-cmds"&gt;1. Reverse search cmds:&lt;a href="#1-reverse-search-cmds" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;To reuse a command, use Ctrl + R and type a few matching keywords to see the recently used cmds being shown up. The search is based on the command history.&lt;/p&gt;
&lt;p&gt;
&lt;figure
 class="image-figure not-prose my-8"
 data-lightbox-enabled="
 true
 "
 data-gallery-type="auto"
 data-image-width="0"
 data-image-height="0"
 data-image-src="https://miro.medium.com/v2/resize:fit:1400/format:webp/1*8d6OCQLH_WCzvQCcUpCfcQ.gif"
&gt;
 &lt;div class="image-container"&gt;
 &lt;img
 src="https://miro.medium.com/v2/resize:fit:1400/format:webp/1*8d6OCQLH_WCzvQCcUpCfcQ.gif"
 alt="captionless image"
 
 
 width="1472" height="302"
 
 loading="lazy"
 decoding="async"
 data-gallery-src="https://miro.medium.com/v2/resize:fit:1400/format:webp/1*8d6OCQLH_WCzvQCcUpCfcQ.gif"
 data-gallery-alt="captionless image"
 data-gallery-title=""
 /&gt;&lt;/div&gt;

 &lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Linux Terminal tips - Part 1</title><link>https://new.sagarpanda.com/blogs/linux/linux-tips1/</link><pubDate>Sun, 05 May 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/linux/linux-tips1/</guid><description>&lt;h3 id="introduction"&gt;Introduction:&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In the labyrinth of Linux commands, managing tasks can be daunting. Fear not! Here are some handy tips and tricks up your sleeve to streamline your day-to-day operations, making every task a breeze&lt;/p&gt;
&lt;h3 id="1-clearing-terminal"&gt;1. Clearing terminal:&lt;a href="#1-clearing-terminal" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Use Ctrl + L to clean the terminal instead of typing clear every time.&lt;/p&gt;</description></item><item><title>If Statement - Conditional in Bash Scripting</title><link>https://new.sagarpanda.com/blogs/linux/shellscrpt3/</link><pubDate>Fri, 22 Mar 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/linux/shellscrpt3/</guid><description>&lt;h3 id="intro"&gt;Intro:&lt;a href="#intro" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;So, what’s the deal with &amp;lsquo;if&amp;rsquo; statements? Think of them as the script’s way of making decisions. It’s like having a little script buddy that can say, &amp;ldquo;Hey, if this thing happens, do this. Otherwise, try something else!&amp;rdquo;&lt;/p&gt;</description></item><item><title>Variables and Math Functions in Bash</title><link>https://new.sagarpanda.com/blogs/linux/shellscript2/</link><pubDate>Sun, 10 Mar 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/linux/shellscript2/</guid><description>&lt;h3 id="what-is-a-variable"&gt;What is a variable:&lt;a href="#what-is-a-variable" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A variable is a container where we can store some value which have possibility to change.&lt;/p&gt;
&lt;p&gt;Just like any other programming language, bash also has variables, in fact we saw one default variable in the 1st chapter which is $SHELL. There are many other default variables such as $HOME, $PWD, $PATH, $USER etc.&lt;/p&gt;</description></item><item><title>Introduction to Shell Scripting for Beginners</title><link>https://new.sagarpanda.com/blogs/linux/shellscript1/</link><pubDate>Thu, 29 Feb 2024 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/linux/shellscript1/</guid><description>&lt;h3 id="whats-shell"&gt;What’s Shell:&lt;a href="#whats-shell" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In simple terms shell is a program that takes input as commands and passes the operating system (OS) to perform the desired task.&lt;/p&gt;
&lt;p&gt;In linux we have many shell programs such as bash, zsh, fish and etc. We are going to use bash in this series.&lt;/p&gt;</description></item><item><title>Let’s Encrypt SSL Configuration using Certbot</title><link>https://new.sagarpanda.com/blogs/nginx/letsencrypt-ssl/</link><pubDate>Mon, 06 Nov 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/nginx/letsencrypt-ssl/</guid><description>&lt;h3 id="what-is-ssltls"&gt;What is SSL/TLS:&lt;a href="#what-is-ssltls" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;SSL or Secure Sockets Layer is a security protocol used to establish an encrypted connection between your web browser and a web server.&lt;/p&gt;
&lt;p&gt;This ensures that the data transfer between you and the server can’t be read by an intruder.&lt;/p&gt;</description></item><item><title>A Beginner’s Introduction to GitHub Actions</title><link>https://new.sagarpanda.com/blogs/github-actions/</link><pubDate>Sat, 21 Oct 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/github-actions/</guid><description>&lt;!-- ![action workflow](https://miro.medium.com/v2/resize:fit:1358/format:webp/1*_7mJjD1resPodxT7agk16w.png) --&gt;
&lt;p&gt;&lt;strong&gt;Intro:&lt;/strong&gt; GitHub action is a CI/CD platform to create build, test and deployment pipeline for our application. This is a yaml based configuration.&lt;/p&gt;
&lt;p&gt;In this tutorial, we are going to see the basics of github action and then proceed to integrate SonarQube SAST with it in the next post.&lt;/p&gt;
&lt;p&gt;Prerequisite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub ac&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="set-up"&gt;Set Up&lt;a href="#set-up" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;First create a repository on github and add a simple program that prints just hello world.&lt;/p&gt;</description></item><item><title>Ansible — Error Handling, Roles and Valult</title><link>https://new.sagarpanda.com/blogs/ansible/ansible3/</link><pubDate>Sun, 18 Jun 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/ansible/ansible3/</guid><description>&lt;p&gt;In the earlier posts, we saw how to &lt;a
 href="https://new.sagarpanda.com/blogs/ansible/ansible1/"&gt;&lt;strong&gt;&lt;em&gt;Setup Ansible&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;, &lt;a
 href="https://new.sagarpanda.com/blogs/ansible/ansible2/"&gt;&lt;strong&gt;&lt;em&gt;simple playbooks with groups, variables, conditionals and loop&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this article we’ll discuss about using Notify Handler, Roles, Error Handling and Vault in Ansible.&lt;/p&gt;
&lt;h2 id="notify-and-handler"&gt;Notify and Handler&lt;a href="#notify-and-handler" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Handler is a special task that executes when called by &lt;code&gt;notify&lt;/code&gt;keyword. The &lt;code&gt;notify&lt;/code&gt; keyword is applied to a task and accepts a list of handler names that are notified on a task change.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, when we are operating on any webserver, instead of restarting the service every time we can specify the time when its required using notify and handler.&lt;/p&gt;</description></item><item><title>Ansible - Groups, Vars and Loop</title><link>https://new.sagarpanda.com/blogs/ansible/ansible2/</link><pubDate>Mon, 29 May 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/ansible/ansible2/</guid><description>&lt;p&gt;In the &lt;a
 href="https://new.sagarpanda.com/blogs/ansible/ansible1/"&gt;&lt;strong&gt;&lt;em&gt;previous article&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;, we saw how to install Ansible, ping a server and a simple playbook.&lt;/p&gt;
&lt;p&gt;In this article we’ll discuss about using groups , use of variables and loops in a playbook.&lt;/p&gt;
&lt;p&gt;This setup includes 3 machines. The controller node is a local machine where the managed nodes are two ec2 instances.&lt;/p&gt;
&lt;h2 id="inventory-groups"&gt;Inventory Groups&lt;a href="#inventory-groups" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Ansible allows you to organize hosts into groups within the inventory file. Grouping hosts enables you to target specific subsets of hosts and apply different configurations or tasks based on their roles or characteristics.&lt;/p&gt;</description></item><item><title>Getting started with Ansible - Configuration Managament</title><link>https://new.sagarpanda.com/blogs/ansible/ansible1/</link><pubDate>Sun, 21 May 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/ansible/ansible1/</guid><description>&lt;h3 id="introduction"&gt;Introduction:&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Ansible is an open source configuration management utility. It can automate and standardize the configuration of remote hosts and virtual machines. We can perform application installation, system update and many such operations.&lt;/p&gt;
&lt;h3 id="why-use-ansible"&gt;Why use Ansible:&lt;a href="#why-use-ansible" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Ansible is very handy when it comes to installation of software on large numbers of machines. But why ansible when we can use Chef or Puppet.&lt;/p&gt;</description></item><item><title>SonarQube Setup with Jenkins</title><link>https://new.sagarpanda.com/blogs/sonarqube-jenkins/</link><pubDate>Mon, 01 May 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/sonarqube-jenkins/</guid><description>&lt;h3 id="introduction"&gt;Introduction:&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;SonarQube is an open-source platform used to perform continuous review and verification of code quality to detect bugs, vulnerabilities and code smells in the application.&lt;/p&gt;
&lt;p&gt;In this tutorial, we’ll see how to install and configure it for a project. All the codes and configuration are on &lt;a
 href="https://github.com/sagarkrp/SonarQube_Gradle.git"target="_blank"
 rel="noopener noreferrer"
 class="inline-flex items-center gap-1"
 &gt;Github&lt;svg class="h-3 w-3 flex-shrink-0" id="external-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/&gt;&lt;/svg&gt;
 &lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Load Balancing Magic — Unleashing the Potential of NGINX.</title><link>https://new.sagarpanda.com/blogs/nginx/nginx-lb/</link><pubDate>Sat, 22 Apr 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/nginx/nginx-lb/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="what-is-nginx"&gt;What is NGINX:&lt;a href="#what-is-nginx" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Nginx (pronounced engine x /ˌɛndʒɪnˈɛks/ EN-jin-EKS) is an open source HTTP web and reverse proxy server.&lt;/p&gt;</description></item><item><title>Apache HTTP Server Configurations</title><link>https://new.sagarpanda.com/blogs/apache/apache-config/</link><pubDate>Mon, 27 Mar 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/apache/apache-config/</guid><description>&lt;p&gt;In the previous post, we saw how to install and setup Apache web server. In this article we’ll see how to configure a basic web application, enable SSL/TLS and few more basic configuration in regards to security enhancements.&lt;/p&gt;
&lt;h3 id="prerequiste"&gt;Prerequiste:&lt;a href="#prerequiste" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a
 href="https://new.sagarpanda.com/tags/apache/"&gt;Install Apache&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to install Apache HTTP web server on Linux.</title><link>https://new.sagarpanda.com/blogs/apache/apache-setup/</link><pubDate>Wed, 25 Jan 2023 19:26:10 +0530</pubDate><guid>https://new.sagarpanda.com/blogs/apache/apache-setup/</guid><description>&lt;h3 id="introduction"&gt;Introduction:&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;If you ever worked with web application then you must have came across the term “Apache”. The Apache HTTP server is an open source web server.&lt;/p&gt;
&lt;p&gt;In this article we’ll take a look on how to install and configure Apache on various popular Linux distributions (Debian/Ubuntu, RHEL/Rocky Linux/Alma Linux).&lt;/p&gt;</description></item></channel></rss>