<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Jhooq</title><link>https://jhooq.com/post/</link><description>Recent content in Posts on Jhooq</description><generator>Hugo -- gohugo.io</generator><copyright>Copyright © 2019–2020, Jhooq; all rights reserved.</copyright><lastBuildDate>Mon, 09 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jhooq.com/post/index.xml" rel="self" type="application/rss+xml"/><item><title>AI Caught My Cloud Failure Before I Did</title><link>https://jhooq.com/kestra-ai-cloud-monitoring/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://jhooq.com/kestra-ai-cloud-monitoring/</guid><description>
Table of Contents What Are We Building? Architecture Overview Prerequisites Project Structure Step 1: Multi-Cloud Infrastructure with Terraform Providers Configuration AWS Module — VPC, Subnet, Security Group, EC2 GCP Module — Network, Firewall, VM Root Main and Outputs Step 2: The Flask App — CrashLab API Intentional Chaos — 30% Error Rate Health Check Endpoint Log Endpoint — No SSH Needed Step 3: Running Kestra with Docker Step 4: AI Health Check Flow How the Kestra Errors Block Works The AI Agent Task — Google Gemini 2.</description></item><item><title>AWS API Gateway from Beginner to Expert ?</title><link>https://jhooq.com/aws-api-gateway/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-api-gateway/</guid><description>
Table of Contents What is API Gateway? Why and How? What is it? Why use it? How does it work? Understanding API Methods Tutorial: Creating Your First API with Lambda Step 1: Create a Simple Lambda Function Step 2: Create a REST API in API Gateway Step 3: Create a Resource and Method Step 4: Deploy Your API Proxy vs. Non-Proxy Lambda Integration Lambda Proxy Integration (The Easy Way) Lambda Non-Proxy Integration (The Custom Way) Bonus: Request Validation Create a Model in API Gateway HTTP API vs.</description></item><item><title>Azure Function App</title><link>https://jhooq.com/azure-function-app/</link><pubDate>Sat, 19 Jul 2025 00:00:00 +0000</pubDate><guid>https://jhooq.com/azure-function-app/</guid><description>
Table of Content HTTP Trigger Azure Function App Timer-Triggered Azure Function App Azure Queue Storage Trigger Azure Function App Authentication using Azure Entra ID How to Deploy an Azure HTTP Trigger Function App Using Python and the Azure CLI Azure Function Apps offer a powerful serverless compute option that allows developers to execute code in response to events—without managing infrastructure. In this step-by-step guide, we'll walk you through deploying an Azure Function App using Python, from local development to cloud deployment, using the Azure CLI and the Azure Functions Core Tools.</description></item><item><title>Azure Virtual Machine Course</title><link>https://jhooq.com/azure-master-course-vm/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://jhooq.com/azure-master-course-vm/</guid><description>
Table of Content Terraform Code for Azure Virtual Machine Azure Course Slides 1. Terraform Code for Azure Virtual Machine 1## main.tf 23resource &amp;#34;azurerm_linux_virtual_machine&amp;#34; &amp;#34;dev_eu_north_ubuntu_vm&amp;#34; { 4name = &amp;#34;dev-eu-north-ubuntu2204-vm&amp;#34; 5resource_group_name = azurerm_resource_group.dev_eu_north_rg.name 6location = azurerm_resource_group.dev_eu_north_rg.location 7size = &amp;#34;Standard_F2&amp;#34; 8admin_username = &amp;#34;rahulwagh&amp;#34;9#admin_password = &amp;#34;G&amp;lt;7€YraRgk_7lnksE}yu37`Fe&amp;#34; 10 disable_password_authentication = true 11admin_ssh_key { 12username = &amp;#34;rahulwagh&amp;#34; 13public_key = file(&amp;#34;/Users/rahulwagh/.ssh/dev-vm-ssh-key-pair.pub&amp;#34;) 14} 1516network_interface_ids = [ 17azurerm_network_interface.dev_eu_north_nic.id, 18] 1920os_disk { 21caching = &amp;#34;ReadWrite&amp;#34; 22storage_account_type = &amp;#34;Standard_LRS&amp;#34; 23} 2425source_image_reference { 26publisher = &amp;#34;Canonical&amp;#34; 27offer = &amp;#34;0001-com-ubuntu-server-jammy&amp;#34; 28sku = &amp;#34;22_04-lts&amp;#34; 29version = &amp;#34;latest&amp;#34; 30} 31} 3233resource &amp;#34;azurerm_network_interface&amp;#34; &amp;#34;dev_eu_north_nic&amp;#34; { 34name = &amp;#34;dev-eu-north-nic&amp;#34; 35location = azurerm_resource_group.</description></item><item><title>Learn AWS S3 ?</title><link>https://jhooq.com/aws-s3-course/</link><pubDate>Mon, 09 Sep 2024 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-s3-course/</guid><description>
S3 Bucket Presentation S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket S3 Bucket</description></item><item><title>Ansible Handlers Explained Real-World Use Cases &amp; Examples test</title><link>https://jhooq.com/ansible-handlers/</link><pubDate>Tue, 19 Sep 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-handlers/</guid><description>
Introduction Welcome to another ansible blog post! I am Rahul, and today, we'll dive deep into Ansible Handlers. Before we jump straight into the demo, let's lay a solid foundation by understanding the 'what' and 'when' of Ansible Handlers.
Table of Content What Are Ansible Handlers? Setting Up the Ansible Handler Setting up the Ansible task 3.1 Installing the Nginx Application Server 3.2 Updating Website Content 3.3 Calling the Ansible handlers Multiple Ansible Handlers using listen keyword Ansible Handler order Conclusion &amp;amp; Key Takeaways 1.</description></item><item><title>Securing Sensitive Data in Terraform</title><link>https://jhooq.com/terraform-secure-sensitive-data/</link><pubDate>Mon, 03 Jul 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-secure-sensitive-data/</guid><description>
Securing Sensitive Data in Terraform Table of Content Introduction Securing Sensitive Data with Terraform 2.1 Securely managing Terraform variables 2.2 Encrypting Sensitive Data at Rest 2.3 Encrypting Sensitive Data in Transit 2.4 The use of sensitive argument in Terraform to prevent logging of sensitive data Practical Examples of Securing Sensitive Data 3.1 Using environment variables for sensitive data 3.2 Securing sensitive data with AWS Key Management Service (KMS) 3.</description></item><item><title>Boost Your AWS Security with Terraform : A Step-by-Step Guide</title><link>https://jhooq.com/security-practices-aws-terraform/</link><pubDate>Fri, 30 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/security-practices-aws-terraform/</guid><description>
1. Introduction Security in the cloud is not just an option; it's an imperative. Much like a well-guarded fortress, your cloud infrastructure needs robust, scalable defenses. AWS provides us with a wealth of tools and best practices for this task, but managing them manually can feel like trying to organize an unruly group of knights.
Enter Terraform, our trusted steward, enabling us to manage our defenses in a structured, efficient, and version-controlled manner.</description></item><item><title>How to Load Input Data from a File in Terraform?</title><link>https://jhooq.com/terraform-load-data-from-input-file/</link><pubDate>Mon, 26 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-load-data-from-input-file/</guid><description>
Terraform, HashiCorp's infrastructure as code (IaC) tool, is a favorite among developers and system administrators for its simplicity and power in managing and provisioning data center infrastructure.
However, as with any technology, there are complexities that arise as we go deeper. One such complexity is loading input data from a file. Let's address this topic in detail.
Table of Content What is Input Data in Terraform? Why Load Input Data from a File?</description></item><item><title>Can Terraform be used to provision on-premises infrastructure?</title><link>https://jhooq.com/terraform-provision-on-premise-infra/</link><pubDate>Tue, 20 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-provision-on-premise-infra/</guid><description>
Yes, Terraform can be used to provision on-premises servers, but there are some differences compared to how it manages cloud resources. While Terraform can directly interact with the APIs of many cloud providers to manage their resources, it does not have direct access to an API for your on-premises infrastructure.
To provision on-premises servers, you would likely need to use an abstraction layer that Terraform can interface with. Here are a few examples which you can see in the table of content:</description></item><item><title>Fixing the Terraform Error creating IAM Role. MalformedPolicyDocument Has prohibited field Resource</title><link>https://jhooq.com/terraform-malformed-policy-document/</link><pubDate>Tue, 20 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-malformed-policy-document/</guid><description>
Today, we'll unravel a common hurdle that you might encounter while working with Terraform and AWS:
Error creating IAM Role. MalformedPolicyDocument: Has prohibited field Resource
This error can put a wrinkle in your cloud deployment process, but don't worry. I'm here to guide you through it, step by step.
By the end of this post, you'll have a good grasp of what this error means, why it happens, and most importantly, how to fix it.</description></item><item><title>In terraform how to handle null value with default value?</title><link>https://jhooq.com/terraform-replace-null-value-with-default-value/</link><pubDate>Mon, 19 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-replace-null-value-with-default-value/</guid><description>
When working with Terraform, it is common to encounter scenarios where certain variables or attributes may have null values.
In this blog post, we will explore techniques to handle null values in Terraform and discuss how you can leverage default values to ensure smooth configuration workflows and maintain the desired state of your infrastructure.
Table of Content Understanding Null Values in Terraform Challenges of Null Values Handling Null Values with Default Values Use Conditional Expressions for handling null values Use conditional Assignment for handling null values Use Terraform Modules for handling null values Conclusion 1.</description></item><item><title>Terraform use module output variables as inputs for another module?</title><link>https://jhooq.com/terraform-ouput-module-input-another-module/</link><pubDate>Mon, 19 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-ouput-module-input-another-module/</guid><description>
One of the key features that sets Terraform apart is its modular architecture, enabling the reuse of code and fostering collaboration across teams. In this blog post, we'll dive deep into the concept of output variables in Terraform modules and explore how they can be leveraged as inputs for another module, enabling powerful infrastructure orchestration and flexibility.
Table of content Understanding Terraform Modules Exploring Output Variables Defining Output Variables Using Output Variables as Inputs Benefits and Use Cases Conclusion 1.</description></item><item><title>How to Reference a Resource Created by a Terraform Module?</title><link>https://jhooq.com/terraform-reference-module-output/</link><pubDate>Sun, 18 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-reference-module-output/</guid><description>
Greetings to all DevOps enthusiasts and cloud technology practitioners! In today's blog post, we'll delve deeper into one of the key components of infrastructure as code (IaC) - Terraform.
More specifically, we'll discuss how to reference a resource created by a Terraform module. This capability provides a more flexible, scalable, and efficient way to manage your infrastructure.
What are Terraform and Terraform Modules? Before we dive into the details, let's set the context with a quick overview of Terraform and Terraform Modules.</description></item><item><title>Understanding Terraform Escape Sequences</title><link>https://jhooq.com/terraform-escape-sequences/</link><pubDate>Sun, 18 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-escape-sequences/</guid><description>
In this blog post share with you another fascinating aspect of Terraform - escape sequences. I remember when I first learned about escape sequences, and the moment it all clicked was magical. So, let's get ready to dive in!
Just like in any language, escape sequences in Terraform are our way of communicating non-graphic characters or characters with special meanings. We often find them in string literals, surrounded by a backslash ().</description></item><item><title>(docker run -d) Why Does a Docker Container Stop Automatically?</title><link>https://jhooq.com/docker-stop-container-after-docker-run/</link><pubDate>Sat, 17 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-stop-container-after-docker-run/</guid><description>
Introduction Docker has become an indispensable tool in modern software development, offering the ability to package applications and their dependencies into lightweight containers.
However, if you're like me, you may have encountered a puzzling situation where your Docker container unexpectedly stops after running the docker run -d command.
In this blog post, I'll guide you through the reasons behind this behavior and provide practical examples and solutions to help you overcome this challenge.</description></item><item><title>How to fix private-dns-enabled cannot be set because there is already a conflicting DNS domain?</title><link>https://jhooq.com/terraform-error-private-dbs-enabled/</link><pubDate>Sat, 17 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-error-private-dbs-enabled/</guid><description>
Navigating the intricacies of Amazon Web Services (AWS) can be a complex task. Even seasoned developers working with Infrastructure as Code (IaC) tools like Terraform and CloudFormation may occasionally face frustrating obstacles.
A common stumbling block arises from conflicts in Virtual Private Cloud (VPC) settings, particularly when managing private DNS domains.
In this blog post, I'll guide you through resolving an error stating -
private-dns-enabled cannot be set because there is already a conflicting DNS domain for secretsmanager.</description></item><item><title>Attach and detach from Docker's process?</title><link>https://jhooq.com/docker-attach-detach-process/</link><pubDate>Wed, 14 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-attach-detach-process/</guid><description>
Docker is a fantastic tool for containerization that provides the flexibility of isolating your application with its environment on a single system. One of the features Docker offers is the ability to attach and detach from Docker processes. This post provides a step-by-step guide to working with this feature.
Prerequisites Basic knowledge of Docker. Docker installed on your machine. Refer this for Docker Installation. Step 1: Start a Docker Container in detach mode Firstly, we need to have a Docker container up and running.</description></item><item><title>Use SSH credentials in Jenkins with SSH, SCP, SFTP</title><link>https://jhooq.com/jenkins-ssh-with-scp-sftp/</link><pubDate>Thu, 08 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/jenkins-ssh-with-scp-sftp/</guid><description>
There are various ways in Jenkins for using the SSH credentials to perform SSH, SCP or SFTP. You have to choose which one is more suitable for your need and project setup.
In this blog post I will walk you through the couple of options with which you can accomplish the SSH, SCP or SFTP
Table of Content Using SSH Agent Plugin Credentials Binding Plugin 1. Using SSH Agent Plugin 1.</description></item><item><title>How I Change Name of My Docker Repository and Rename Images?</title><link>https://jhooq.com/docker-change-repository-name/</link><pubDate>Wed, 07 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-change-repository-name/</guid><description>
Have you ever found yourself needing to change the repository name or rename a Docker image?
I recently faced this challenge and got to know that it is a very simple yet effective process to accomplish it. In this blog post, I want to share my step-by-step process of changing the repository name and renaming Docker images.
Let's dive in together!
Section 1: Understanding Docker Image Tags Before we get started, let's take a moment to understand Docker image tags.</description></item><item><title>Step-By-Step Guide to Setting Up SSH Keys for Jenkins</title><link>https://jhooq.com/jenkins-setup-ssh-keys/</link><pubDate>Wed, 07 Jun 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/jenkins-setup-ssh-keys/</guid><description>
Jenkins, the popular open-source automation server that's been making waves in the tech industry.
Today, we'll go through an important aspect of Jenkins - setting up Secure Shell (SSH) keys for securely publishing and transferring files. It may sound daunting, but trust me, I'll guide you every step of the way. Let's get started!
Step 1. Creating an SSH Key Pair on Your Jenkins Server We're going to kick things off by generating a new SSH key pair right on your Jenkins server.</description></item><item><title>How to permanently add private ssh key(macOS, Windows, Ubuntu)?</title><link>https://jhooq.com/ssh-key-add-permanently/</link><pubDate>Fri, 26 May 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ssh-key-add-permanently/</guid><description>
In our increasingly connected world, the security of our digital interactions is more critical than ever. Just like you lock your front door when you leave the house, you need to secure your online presence too.
One of the keys to this virtual lock is called an SSH Key. If you've ever tried accessing remote servers or pushing commits to your Git repository, you're probably familiar with the importance of these keys.</description></item><item><title>Use Terraform to manage AWS IAM Policies, Roles and Users</title><link>https://jhooq.com/terraform-manage-user-roles-policy/</link><pubDate>Tue, 09 May 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-manage-user-roles-policy/</guid><description>
This blog post is going to be a comprehensive guide on managing the AWS IAM User, IAM Roles and IAM Policies using Terraform.
Managing IAM Users, Roles and Policies are always crucial from a security perspective. Proper management of the IAM User, IAM Roles and IAM Policies can really improve the operational burden as well as the security of the AWS environment.
In this blog post, we are going to use Terraform to manage the IAM User, IAM Roles and IAM Policies.</description></item><item><title>How to split Your Terraform main.tf File into Multiple Files</title><link>https://jhooq.com/terraform-split-main-tf/</link><pubDate>Thu, 04 May 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-split-main-tf/</guid><description>
Table of Content Why someone need to split the terraform main.tf into multiple files? How to split the main.tf file: A Step-by-Step Approach 2.1 Identify Resources and Data Sources 2.2 Create Separate .tf Files for Resources and Data Sources 2.3 Migrate Resource and Data Source Blocks into individual .tf files 2.4 Define Variables and Outputs Run terraform init, terraform validate, terraform plan and terraform apply commands Conclusion 1.</description></item><item><title>How to use Terraform variable within variable</title><link>https://jhooq.com/terraform-var-within-var/</link><pubDate>Thu, 04 May 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-var-within-var/</guid><description>
1. Terraform Variables Variables are an important part of Terraform because they let users change settings and make them more flexible and reusable.
You can avoid hardcoding values in your Terraform configuration files by using variables. This makes your code more flexible.
In this blog post we will focus on how to use Variables within variables and what the practices you should follow in such scenarios.
Table of Content Terraform Variables Terraform Variable within Variable The Concept Use Cases Use lookup function to fetch variable value from another variable Using locals and variable to implement variable within variable Advantages Best Practices !</description></item><item><title>Mastering the Terraform Lookup Function for Dynamic Keys</title><link>https://jhooq.com/terraform-lookup-function/</link><pubDate>Wed, 03 May 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-lookup-function/</guid><description>
1. Introduction Infrastructure as code (IaC) is a key part of gaining efficiency, scalability, and manageability in the rapidly changing tech world of today. Many DevOps teams now use Terraform, which is a famous IaC tool.
The Terraform lookup function for dynamic keys has become a powerful way to improve your IaC workflows. This is one of its many benefits. In this piece, we'll go over the Terraform lookup function for dynamic keys and show you how to use it to its full potential.</description></item><item><title>How to Use SSH Keys with Ansible for Secure Server Management?</title><link>https://jhooq.com/ansible-ssh-keys-for-server-mgmt/</link><pubDate>Tue, 02 May 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-ssh-keys-for-server-mgmt/</guid><description>
Introduction There are a couple of ways in which you can securely connect to a remote server using Ansible.
Using the SSH Keys (Public, Private) Using the remote server password Both methods are widely used by DevOps practitioners, and both are secure. But still, if I would like to vote for Using the SSH keys for secure server management,
In this blog post, we are going to take a look at:</description></item><item><title>Why YAML is so important in Ansible?</title><link>https://jhooq.com/ansible-yaml-is-so-important/</link><pubDate>Tue, 02 May 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-yaml-is-so-important/</guid><description>
Table of Content What is YAML? Example of YAML? Why Ansible needs YAML? Example of Ansible Playbook written in YAML What are rules for writing Ansible Playbook using YAMLs? Advantages of YAML in Ansible YAML vs Other Data Serialization Formats What is YAML? YAML is a recipe for computers that helps them understand what information means. It looks like a plan with items and steps, but it tells the computer what to do instead of making food.</description></item><item><title>Copy files to EC2 and S3 bucket using Terraform</title><link>https://jhooq.com/terraform-copy-file-ec2-s3/</link><pubDate>Fri, 28 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-copy-file-ec2-s3/</guid><description>
This blog post will guide you on how to use Terraform-Provisioners to copy/upload files to EC2 as well as the S3 bucket.
Table of Content Pre-requisites Setup AWS credentials in the Terraform file Setup an EC2 instance, a security group, and SSH key pair resources. Use file provisioner to upload the file to EC2 Upload files to the S3 bucket using Terraform. Initialize and Apply the Terraform configuration. Conclusion Let's take a look at the prerequisites:</description></item><item><title>Troubleshooting Error creating EC2 Subnet InvalidSubnet Range The CIDR is Invalid</title><link>https://jhooq.com/terraform-invalid-subnet/</link><pubDate>Thu, 27 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-invalid-subnet/</guid><description>
In this blog post we will take a look on how to fix the issue of Error: Creating EC2 Subnet: InvalidSubnet.Range: The CIDR '100.1.1.0/24' is Invalid
Error: creating EC2 Subnet: InvalidSubnet.Range: The CIDR '100.1.1.0/24' is invalid Table of Content Introduction Understanding the Error InvalidSubnet.Range Error CIDR Notation Prerequisites for Troubleshooting AWS Account AWS CLI Troubleshooting the Error Identifying the Incorrect CIDR Block Correcting the CIDR Block Re-creating the EC2 Subnet Best Practices for Subnet Configuration Planning IP Addressing Private vs.</description></item><item><title>Troubleshooting InvalidParameter Security group and subnet belong to different networks</title><link>https://jhooq.com/terraform-security-group-with-different-subnet/</link><pubDate>Thu, 27 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-security-group-with-different-subnet/</guid><description>
I got stuck with the error InvalidParameter: Security group sg-08e153383fca86934 and subnet subnet-00e3adcfceb3cf8ee belong to different networks when I was working on one of AWS project where I need to set-up following using Terraform -
VPC Subnet Internet Gate, NAT Route Table EC2 Instance Security group Here is the screenshot of the error which I got -
InvalidParameter: Security group sg-08e153383fca86934 and subnet subnet-00e3adcfceb3cf8ee belong to different networks Troubleshooting Steps As the error says there is mismatch in the network of security group and subnet.</description></item><item><title>How to set-up Cron Jobs in Docker Containers?</title><link>https://jhooq.com/docker-run-cron-job-inside-container/</link><pubDate>Wed, 26 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-run-cron-job-inside-container/</guid><description>
Cron jobs are undoubtedly among the easiest and most often used methods for task scheduling. It is easy to see why every Linux user is familiar with cron jobs:
they are highly helpful Simple to set up Need very little maintenance. We will go through using Cron Jobs in Docker containers in this tutorial.
Table of Content Why Use Cron Jobs In A Docker Container? How Do You Set-up and Run A Cron Job In A Docker Container?</description></item><item><title>4 Ways to copy file from localhost to docker container</title><link>https://jhooq.com/docker-copy-file-localhost-to-container/</link><pubDate>Tue, 25 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-copy-file-localhost-to-container/</guid><description>
When working with Docker containers, one of the most common tasks is to copy files from the local host to a container that is already operating.
In this post, we will explore a variety of methods for coping files from a local host to a Docker container that is already in operation.
Table Of Content Copy file using the Docker CLI command &amp;quot;docker cp&amp;quot;: Copy file using docker bind volume Copy files and directory with Docker compose Copy file using Dockerfile &amp;quot;COPY&amp;quot; instruction 1.</description></item><item><title>Multiple commands execution in Docker Compose?</title><link>https://jhooq.com/docker-compose-execute-multiple-commands/</link><pubDate>Mon, 24 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-compose-execute-multiple-commands/</guid><description>
Using Docker Compose's command option, you may run a series of tasks all at once. You may use this setting to tell the container to run -
A specific command Set of commands For multiple command execution, consider the following example use of the command option:
1version:&amp;#39;3.7&amp;#39;23services:4myservice:5image:myimage:latest6#Using the &amp;amp;&amp;amp; operator to write multiple commands7command:&amp;gt;8sh -c &amp;#34;echo &amp;#39;Command 1&amp;#39; &amp;amp;&amp;amp; echo &amp;#39;Command 2&amp;#39;&amp;#34; When this container boots up, the myservice service will execute the instructions echo 'Command 1' and echo 'Command 2'.</description></item><item><title>Clone Public and Private Git Repositories with Ansible</title><link>https://jhooq.com/ansible-git-clone-repository/</link><pubDate>Fri, 21 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-git-clone-repository/</guid><description>
Ansible is a potent automation tool that can be used for configuration management and application deployment, while Git is one of the most widely used version control systems currently in use.
We will examine multiple Ansible-based methods for cloning public and private git repository in this blog article.
Ansible is a potent tool for automating processes and managing infrastructure. It is notably helpful for automating repetitive processes and managing large-scale systems.</description></item><item><title>How to Limit Ansible playbook on Hosts, Groups and multiple hosts?</title><link>https://jhooq.com/ansible-limit-hosts/</link><pubDate>Mon, 17 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-limit-hosts/</guid><description>
Infrastructure as code management is possible with the help of the robust automation tool Ansible.
Using playbooks, which are YAML files that provide a series of actions and configurations to apply to a group of computers, you can build and automate complicated IT operations using Ansible.
For testing, troubleshooting, or security purposes, you might need to restrict the use of your playbook to a single or group of hosts, though.</description></item><item><title>Easy Fix for 'zsh command not found ansible' Error After Installing Ansible with Pip</title><link>https://jhooq.com/ansible-zsh-command-not-found/</link><pubDate>Sun, 16 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-zsh-command-not-found/</guid><description>
It's conceivable that the directory where pip installed Ansible is not in your system's PATH environment variable if you used pip to install Ansible and are getting the error message -
1zsh: command not found: ansible. There are a few options for fixing this issue depending on your local Ansible configuration. So please go over both alternatives and choose the one that makes the most sense.
Solution 1: Adding Ansible installation path to system $PATH variable Solution 2: Use full path to the Ansible Binary (Not recommended) Solution 3: Create an alias for the Ansible command Solution 4: Install Ansible using a package manager Solution 5: Check if pip installed Ansible in a user-specific location Solution 1: Adding Ansible installation path to system $PATH variable This problem may be resolved by setting the PATH environment variable on your system to include the location where Ansible is installed.</description></item><item><title>Demystifying Hosts, Inventory Roles, and Tasks</title><link>https://jhooq.com/ansible-roles-inventory-hosts-tasks/</link><pubDate>Sat, 15 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-roles-inventory-hosts-tasks/</guid><description>
Are you interested in finding out how to automate your IT infrastructure and manage your servers with Ansible?
You've come to the proper location if so! We'll go in-depth on the in this blog article and demonstrate how to use the following -
Inventory file - What are Hosts or Inventory Files? Tasks - How to define Roles in Ansible Playbook Main playbook - How to write your ansible playbook?</description></item><item><title>Fixing-Unable to start service apache2 Job for apache2.service failed because the control process exited with error code?</title><link>https://jhooq.com/ansible-apache-failed-to-start/</link><pubDate>Fri, 14 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-apache-failed-to-start/</guid><description>
Many companies utilize the well-known open-source web server Apache2 to host websites and applications. You might experience a problem where the service cannot be started and you see an error message like &amp;quot;Unable to start service apache2: Job for apache2.service failed because the control process exited with error code&amp;quot;.
Whether you are installing Apache2 manually or using Ansible to automate the process. I will walk you through the troubleshooting procedures to resolve this issue in this post.</description></item><item><title>Why Ansible is the Ultimate Tool for DevOps Teams - A Beginner's Guide?</title><link>https://jhooq.com/why-ansible-is-ultimate-tool-for-devops/</link><pubDate>Mon, 03 Apr 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/why-ansible-is-ultimate-tool-for-devops/</guid><description>
DevOps practices have grown in popularity as businesses try to produce software more quickly and effectively. Ansible is one of the tools that DevOps teams need to help automate and streamline their processes. Ansible is an open-source automation tool that makes it simple for users to automate their network devices, applications, and infrastructure.
It is a popular option for DevOps teams all over the world thanks to its agentless design, straightforward syntax, and powerful features.</description></item><item><title>Managing strings in Terraform: A comprehensive guide</title><link>https://jhooq.com/terraform-string-handling/</link><pubDate>Sun, 22 Jan 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-string-handling/</guid><description>
Managing strings in Terraform can be a bit tricky, but with the right techniques and tools, it can be done with ease.
One of the most important things to keep in mind when working with strings in Terraform is to properly format them. This means using proper indentation, spacing, and line breaks to make the code more readable and easier to understand.
Additionally, you should also use quotes around strings to ensure that they are interpreted correctly by Terraform.</description></item><item><title>How to use terraform depends_on meta argument?</title><link>https://jhooq.com/terraform-depends-on/</link><pubDate>Fri, 13 Jan 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-depends-on/</guid><description>
The &amp;quot;depends_on&amp;quot; meta argument in Terraform is used to specify dependencies between resources within a Terraform configuration.
This allows Terraform to properly order the creation, modification, and destruction of resources, ensuring that dependent resources are created or modified only after the resources they depend on have been created or modified.
For example -
Let's say you have a Terraform configuration that creates an Amazon S3 bucket and an Amazon EC2 Instance.</description></item><item><title>Ansible how to fix destination path already exists and is not an empty directory?</title><link>https://jhooq.com/ansible-destination-path-already-exist/</link><pubDate>Thu, 12 Jan 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-destination-path-already-exist/</guid><description>
I got an error when I am trying to do the git clone on the remote machine using Ansible and the error message which I got was destination path already exists and is not an empty directory
Ansible error destination path already exists and is not an empty directory How do fix ansible's destination path already exists error when you are trying to clone the git repo? In my case, the error came because I already had .</description></item><item><title>What is user_data in Terraform?</title><link>https://jhooq.com/terraform-user-data/</link><pubDate>Mon, 02 Jan 2023 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-user-data/</guid><description>
Table of Content What is user_data in Terraform? When to use user_data in Terraform? Terraform user_data : How to execute shell script inside EC2 instance using? How to accomplish common tasks - Folder creation, Package installation with Terraform user_data How to use ${file(&amp;quot;&amp;quot;)} function with user_data? Using template_file with user_data Conclusion What is user_data in Terraform? In Terraform, the user_data attribute is used to pass data to an instance at launch time.</description></item><item><title>Why you should not store terraform state file(.tfstate) inside Git Repository?</title><link>https://jhooq.com/terraform-do-not-store-tfstate-in-git/</link><pubDate>Tue, 27 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-do-not-store-tfstate-in-git/</guid><description>
It is generally not recommended to commit .tfstate files to Git or any other version control system. .tfstate files contain sensitive information about the infrastructure managed by Terraform, including the current state of resources and the configurations used to create them. If these files are committed to version control and made publicly available, they could potentially be accessed by unauthorized users, posing a security risk.
Instead of committing .tfstate files to version control, it is recommended to store them remotely using a backend such as S3, Azure Storage, or Google Cloud Storage.</description></item><item><title>How to import existing resource using terraform import comand?</title><link>https://jhooq.com/terraform-import-resource/</link><pubDate>Fri, 23 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-import-resource/</guid><description>
To import an existing infrastructure resource into Terraform, you can use the terraform import command. This command allows you to take an existing resource that was created outside of Terraform and bring it under Terraform management.
In this blog, we will take two examples -
How to import EC2 Instance? How to import S3 Bucket? How to import module? Also, we are going to take a look on the -</description></item><item><title>Terraform - A detailed guide on setting up ALB(Application Load Balancer) and SSL?</title><link>https://jhooq.com/terraform-guide-alb-ssl/</link><pubDate>Tue, 20 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-guide-alb-ssl/</guid><description>
Why do we need an SSL Certificate for an Application Load Balancer (ALB) in AWS? SSL certificates are used to establish secure connections between clients and servers over the internet. They are particularly important for protecting sensitive information, such as login credentials or financial data, when it is transmitted between the client and the server.
In the context of an Application Load Balancer (ALB) in AWS, SSL certificates are used to terminate SSL connections to the ALB.</description></item><item><title>How to release(delete) Elastic IP from AWS?</title><link>https://jhooq.com/aws-release-elastic-ip/</link><pubDate>Thu, 15 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-release-elastic-ip/</guid><description>
I thought of writing this blog because I have a personal AWS account which I generally use for learning purposes but a couple of months ago assigned the Elastic IP address to one of my experimental EC2 accounts and forgot about deleting the EC2 instance as well as releasing(deleting) Elastic IP addressfor about a month.
Although I have used t2.micro EC2 instance but still, I have to pay for the price of Elastic IP which I was using along with other resources.</description></item><item><title>Testing Infrastructure as Code with Terraform?</title><link>https://jhooq.com/terraform-testing-infra-as-code/</link><pubDate>Tue, 13 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-testing-infra-as-code/</guid><description>
Testing infrastructure as code (IaC) involves verifying the functionality and behavior of the code used to manage and provision infrastructure in a cloud environment. IaC allows organizations to automate the provisioning and management of their infrastructure, which can improve efficiency, reduce errors, and enable faster deployment of applications and services.
Testing IaC involves using a combination of manual and automated testing techniques to verify the correctness, reliability, and maintainability of the code.</description></item><item><title>How to remove a resource from Terraform state?</title><link>https://jhooq.com/terraform-remove-resource-from-state/</link><pubDate>Mon, 12 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-remove-resource-from-state/</guid><description>
To remove a resource from the Terraform state, you can use the $ terraform state rm command. This command allows you to remove resources from the Terraform state file.
1. How to remove a single resource from terraform state file? Here are the steps which you should follow before you remove any resource -
List the resource- Using the following terraform list resource command first you can check how many resources you are planning to remove from the state file.</description></item><item><title>What is Terraform null Resource?</title><link>https://jhooq.com/terraform-null-resource/</link><pubDate>Fri, 09 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-null-resource/</guid><description>
Terraform null_resource is one of the features which is underused by the DevOps professional. When I looked at Terraform's documentation for null_resource I felt they have not put much effort into explaining null_resource in more detail.
But when I tried the null_resource by myself I really felt to use it more often inside my Terraform project. In this blog, I will talk about null_resource and what are the different use cases for it.</description></item><item><title>In terraform how to skip creation of resource if the resource already exist?</title><link>https://jhooq.com/terraform-check-if-resource-exist/</link><pubDate>Wed, 07 Dec 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-check-if-resource-exist/</guid><description>
In a Terraform project there are situations where a Developer feels a need to pre-check if the resource exists or not and many times I also wondered if is it possible to check the existence of the resource to avoid the duplicity of the resource. In this blog, we are gonna see -
Why it is not possible to decide dynamically if the resource exists or not? What are alternate ways we have in Terraform to check the existence of resources?</description></item><item><title>How to setup Virtual machine on Google Cloud Platform</title><link>https://jhooq.com/how-to-setup-virtual-machine-on-google-cloud-platform/</link><pubDate>Tue, 29 Nov 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/how-to-setup-virtual-machine-on-google-cloud-platform/</guid><description>
Working on a cloud platform always sounds interesting but what if you have some framework where you can automate your cloud infrastructure. In this article, we are going to see How to set up your first Virtual Machine on Google Cloud The platform using Terraform
This article is aimed at the beginner who is just starting with Terraform and Google Cloud Platform(GCP).
Prerequisite The only prerequisite is - You must install Terraform before jumping to Google Cloud Setup.</description></item><item><title>How to use Terraform locals?</title><link>https://jhooq.com/how-to-use-terraform-locals/</link><pubDate>Mon, 28 Nov 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/how-to-use-terraform-locals/</guid><description>
In programming world we have concept of variables, similar to that in Terraform we also have concept of Terraform Locals.
What is Terraform locals?
Here is an very basic example code which show - &amp;quot;How to create locals in Terraform?&amp;quot;
1## Example of local with static value 23locals { 4my_local = &amp;#34;value&amp;#34; 5} As you can see in the above code locals are very easy to define. In the later section of this blog we will take a look on dynamic way to assign the value.</description></item><item><title>How to fix - AWS ECR docker login error storing credentials - err exit status 1?</title><link>https://jhooq.com/aws-ecr-docker-login-error-credential/</link><pubDate>Sun, 02 Oct 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-ecr-docker-login-error-credential/</guid><description>
This is a short troubleshooting blog post on how to fix the following error when performing the aws ecr get-login-password --region &amp;lt;region-name&amp;gt; | docker login -
Here is a little brief about the error -
Error saving credentials: error storing credentials - err: exit status 1, out: Post http://ipc/registry/credstore-updated: dial unix backend.sock:connection: connection refused
Here is the screenshot of the error -
AWS ECR docker login error storing credentials err exit status 1 Table of Content Root Cause- What are the possible root causes based on the operating system you are using?</description></item><item><title>Terraform Guide - Docker Containers &amp; AWS ECR(elastic container registry)?</title><link>https://jhooq.com/terraform-docker-container-guide/</link><pubDate>Wed, 28 Sep 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-docker-container-guide/</guid><description>
Terraform is the most popular IaC(Infrastructure as Code) tool for provisioning your cloud infrastructure on AWS, GCP and Azure.
Terraform capabilities are not limited to cloud infrastructure instead you can use Terraform for other container infrastructure provisioning also. In this blog post, we will take a look at &amp;quot;How to Use Terraform for provisioning(setup/start/stop) of Docker container?&amp;quot;
Objective-
Setup Application- Setup a simple server application using Node.js Create Dockerfile- Create Dockerfile for Node.</description></item><item><title>How to generate SSH key in Terraform using tls_private_key?</title><link>https://jhooq.com/terraform-generate-ssh-key/</link><pubDate>Mon, 19 Sep 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-generate-ssh-key/</guid><description>
The Terraform's module tls_private_key can help you to generate the TLS Private key. Here is what happens when you use Terraform's tls_private_key module -
At first you generate RSA or ECDAS private key. After generating the private key we need to encode the private key as PEM file. After that tls_private_key module will help you to download the private_key(PEM) locally Finally the tls_private_key module will also set the permission to 0600 All the above tasks are carried out behind the scene by module tls_private_key.</description></item><item><title>How to fix-Terraform Error acquiring the state lock ConditionalCheckFiledException?</title><link>https://jhooq.com/terraform-conidtional-check-failed/</link><pubDate>Mon, 12 Sep 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-conidtional-check-failed/</guid><description>
It might be possible that you are in the middle of running terraform plan or terraform apply command but unfortunately, you ended up with the error - Error locking state: Error acquiring the state lock: ConditionalCheckFailedException: The conditional request failed.
Here is one of the same errors which I have faced while I was working on one of my terraform projects for saving terraform state using DynamoDB
Error acquiring the state lock: ConditionalCheckFailedException: The conditional request failed In this blog, we will have a more detailed look at the possible root cause as well as how to fix the error.</description></item><item><title>Terraform Template - A complete guide?</title><link>https://jhooq.com/terraform-template/</link><pubDate>Fri, 09 Sep 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-template/</guid><description>
In this blog post, we are gonna talk about Terraform templates we are just gonna cover the six topics for Terraform template -
What is Terraform template and what's the importance of Terraform template What is the extension by which you can save your Terraform template Project structure and Terraform template location in the project? How to call a Terraform template inside your Terraform script AWS Example using Terraform Template - Set up AWS IAM users and IAM role permissions for IAM user Conclusion 1.</description></item><item><title>Fixing terraform x509 certificate signed by unknown authority?</title><link>https://jhooq.com/x509-certificate-signed/</link><pubDate>Wed, 07 Sep 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/x509-certificate-signed/</guid><description>
The error x509: certificate signed by unknown authority is a very common problem faced by developers.
terraform x509: certificate signed by unknown authority There are many reasons behind this issue -
self-signed certificate not issued by a trusted certificate authority (CA) Expiration of the current certificate Due to a changed hostname Corporate network where the traffic is intercepted by firewall and it replaces the certificates by adding own self-signed certificate How to Fix it?</description></item><item><title>Learn $ grep command with 15 examples</title><link>https://jhooq.com/linux-grep-command/</link><pubDate>Mon, 05 Sep 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/linux-grep-command/</guid><description>
In this blog post we are gonna talk about one of the most basic command of linux which is grep, also we are going to see the 15 different examples on &amp;quot;How to use grep?&amp;quot;.
It doesn't matter you are an experienced developer or you are just a beginner out of these 15 examples you're just gonna learn something new.
What is grep?
grep command in the linux is used to search a text present inside a file.</description></item><item><title>AWS S3 - How to host static website?</title><link>https://jhooq.com/aws-deploy-static-website/</link><pubDate>Wed, 24 Aug 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-deploy-static-website/</guid><description>
Websites differ in the type of content they offer. The content can be divided into two categories, static and dynamic. A website built on static content consists of -
HTML files Images Javascript CSS And it does not change based on user interaction. No matter how many times a user visits a static website, the content remains uniform in nature.
The data or web pages presented by the website will not change unless the creator or developer of the site updates the files or publishes any new content.</description></item><item><title>AWS ECS &amp; Fargate - How to deploy docker container</title><link>https://jhooq.com/aws-fargate-docker-container/</link><pubDate>Wed, 17 Aug 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-fargate-docker-container/</guid><description>
When developers are working to containerize an application, there are several steps involved. Getting the source code ready is merely half the job done. To package it in a container and get it into a runnable state, a developer will need to build a Dockerfile, which will contain all the necessary packages, runtimes, and dependencies, in addition to the application source code.
Once the Dockerfile has been successfully built, the resulting container image will have to be published in a central image registry, which can be either local or online.</description></item><item><title>How to push Docker Images to AWS ECR(Elastic Container registry)?</title><link>https://jhooq.com/docker-push-image-to-ecr/</link><pubDate>Tue, 02 Aug 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-push-image-to-ecr/</guid><description>
Docker is all about containerizing your applications. For a developer, running containers locally through docker can be a bit overwhelming as there are multiple dimensions involved, such as ensuring that containers can communicate over a network, provisioning persistent storage, pushing, pulling, and copying images from one environment to another, and managing image registries. All these factors add complexity to the development process and can increase the deployment time of the application.</description></item><item><title>How to Copy Docker images from one host to another host?</title><link>https://jhooq.com/docker-copy-images/</link><pubDate>Wed, 27 Jul 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-copy-images/</guid><description>
Docker uses prebuilt images to run containers. If there's a need to run a particular container on multiple hosts, we first need to ensure that the required container image is present on all hosts. The container images can vary in size and their actual size depends upon the type of packages present in the container.
If we’re working with large sized images in an environment with low network bandwidth, pulling container images from online registries can be time consuming.</description></item><item><title>How manage access-control, permission and authorization with Permit.io</title><link>https://jhooq.com/using-permit-io/</link><pubDate>Mon, 25 Jul 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/using-permit-io/</guid><description>
Permit.io is a platform for managing your permission infrastructure and allowing you to focus on the actual business requirement. With Permit.io you do not have to build your own solution to implement authorization, it has all the features(GUI Interface, Developer SDK) which comes really handy to manage the users roles and their authorization.
As being an external tool for handling access-control, permission and authorization, permit.io can be integrated with your web application or mobile app with their powerful SDK.</description></item><item><title>Install Ansible on MacOS, Windows, Ubuntu(debian) and Fedora(rpm) - Part 1</title><link>https://jhooq.com/ansible-installation/</link><pubDate>Wed, 06 Jul 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/ansible-installation/</guid><description>
Thinking about Ansible as your configuration management tool, Great choice, of course, Ansible has a lot to offer and also a lot to learn to use effectively. Today’s article is your first step to Ansible!
In this tutorial,, we will dive together into Ansible's installation process on different platforms.
Ansible installation on Ubuntu,Limux mint, Febdora, CentOS, MacOS, Windows Table of Content Brief Intro to Ansible Prerequisites SSH key generation RPM-based Installation Debian-based installation (Ubuntu/Linux Mint) 18.</description></item><item><title>How to deploy site to Netlify manually and How to automate site deployment using FTP on other hosting service provider?</title><link>https://jhooq.com/netlify-deploy-site-with-ftp-manually/</link><pubDate>Fri, 01 Jul 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/netlify-deploy-site-with-ftp-manually/</guid><description>
Netlify hosting has excellent integration with Github, so if you own a static website like me then you can rely on Netlify automated infrastructure for automatic deployment as well as update of your website.
But there might be a situation where you need to manually control the deployment of your static website by uploading the files with some FTP tool. I have prepared this guide keeping in mind the following scenario -</description></item><item><title>Fixing the Hugo Theme on Netlify Hosting?</title><link>https://jhooq.com/netlify-fixing-hugo-theme/</link><pubDate>Wed, 29 Jun 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/netlify-fixing-hugo-theme/</guid><description>
This is a detailed blog post on how to fix the Hugo theme on Netlify hosting. I personally run this website with Hugo and I am impressed with the performance and configurations provided by the GoHugo as well as Netlify. If you are new to this setup then I would recommend reading this beginner's guide on - Hosting a website on Netlify.
Now let's talk about the issues which you might face while working with Hugo theme and Netlify.</description></item><item><title>What is persistent storage in docker and how to manage it</title><link>https://jhooq.com/docker-manage-persistent-storage/</link><pubDate>Mon, 27 Jun 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-manage-persistent-storage/</guid><description>
When working with containers, one major point of concern is the persistent storage of data. Container storage is ephemeral, meaning that the data written by the containerized application is not preserved if the container is removed. Containerized applications work on the assumption that they always start with empty storage.
Container Image layers By design, container images are immutable and layered. The running container processes use an immutable view of the container image.</description></item><item><title>Docker Installation on MacOS, Linux and Windows</title><link>https://jhooq.com/docker-installation/</link><pubDate>Tue, 21 Jun 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-installation/</guid><description>
This is blog series on Docker we will start with Docker installation on all the Machines . i.e. macOS, Linux and Windows. Also along with the installation, we will focus on all the possible issues which you can encounter during the pre-installation as well as post-installation.
Table of Content
Installation of Docker on MacOS Installation of Docker on Windows Installation of Docker on Linux Troubleshooting Docker Installation Conclusion 1.</description></item><item><title>How to set up Netlify CMS for static website?</title><link>https://jhooq.com/netlify-cms-for-static-website/</link><pubDate>Fri, 17 Jun 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/netlify-cms-for-static-website/</guid><description>
Netlify CMS is one of the most requested features by all the authors who own static websites. I'm personally running my blog from last 3 years on Hugo static site framework and I am really happy with my website performance but when I read some posts on the Netlify forum about Netlify CMS, it made me curious as well as surprised because how come a the static website is managed via CMS when it does not have any kind of database layer to store the information.</description></item><item><title>Hosting a website on Netlify</title><link>https://jhooq.com/hosting-static-website-on-netlify/</link><pubDate>Tue, 24 May 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/hosting-static-website-on-netlify/</guid><description>
This blog post is inspired by a lot of questions I received from my readers and they generally ask -
How did you design your website? Which hosting service I am using? How much does it cost to run a website with its domain name? Is it possible to run a website free? (Disclaimer - Yes you can run the website for free with your own domain name) Which hosting service provider I should choose?</description></item><item><title>How to use Terragrunt?</title><link>https://jhooq.com/terragrunt-guide/</link><pubDate>Tue, 24 May 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terragrunt-guide/</guid><description>
Terragrunt is an additional wrapper that is built on top of the Terraform. Terraform is a great Infrastructure as Code tool for managing your cloud infrastructure. But as the project size grows and you have multiple environments (Development, Testing, Staging, Production, etc..) to manage then you will realize Terraform has a lot of gaps for managing a complex and large project.
Challenges with Terraform - If you are managing multiple environments (Development, Testing, Staging, and Production etc.</description></item><item><title>Terraform and AWS Multi account Setup?</title><link>https://jhooq.com/terraform-aws-multi-account/</link><pubDate>Wed, 18 May 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-aws-multi-account/</guid><description>
This article is focused on how to use AWS multiple account setup with Terraform. Terraform is a great tool for provisioning your cloud infrastructure but as you start using Terraform for managing your cloud infrastructure you will always feel a need for multiple AWS accounts that can cater to some specific environment such as - development, test, stage, and production.
If you are following DevOps practices for managing the AWS account then it is also recommended by AWS to use multiple accounts for managing your cloud infrastructure.</description></item><item><title>Terraform and AWS credentials handling?</title><link>https://jhooq.com/terraform-aws-credentials-handling/</link><pubDate>Tue, 10 May 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-aws-credentials-handling/</guid><description>
If you are new to terraform or maybe you have been using the terraform for quite some time then might have felt the need to manage your AWS Credentials inside your terraform file.
In this blog we will go through the different ways to set up your AWS Credentials so that you do not have to re-configure the AWS Credentials every time, also we will pay attention what are the most secure way to handle your AWS Credentials</description></item><item><title>My experience of hosting static website hosting on Siteground</title><link>https://jhooq.com/using-siteground-for-static-website/</link><pubDate>Sun, 08 May 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/using-siteground-for-static-website/</guid><description>
My experience of hosting static website hosting on Siteground
It is been around 4 years ago I start my DevOps blog but along the way, I learned a lot about what goes behind hosting a website that receives thousands of users each day. I always wanted to document my journey but there is nothing much to share when your blog does not receive that much organic traffic. To put things into perspective I set a milestone of reaching 100k monthly users on my website and I reached that goal in February-2022 and now sitting on 130k monthly users.</description></item><item><title>How to use CommandLineRunner in Spring Boot Application?</title><link>https://jhooq.com/commandlinerunner-spring-boot/</link><pubDate>Thu, 24 Mar 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/commandlinerunner-spring-boot/</guid><description>
CommandLineRunner Interface is a functional interface provided by Spring Boot. The main purpose of this interface to execute a code block once before the application has finished startup. In this article, I will be addressing the need for the CommandLineRunner Interface as well as how and when to use it.
GitHub Source Code - Clone Repo
Spring Boot provides two Interface (Remember its an interface) CommandLineRunner and ApplicationRunner. Since CommandLineRunner is an interface so we must implement the CommandLineRunner interface into our class.</description></item><item><title>Prometheus-Grafana Vs Zabbix</title><link>https://jhooq.com/prometheous-grafana-vs-zabbix/</link><pubDate>Sat, 12 Mar 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/prometheous-grafana-vs-zabbix/</guid><description>
To monitor the modern cloud infrastructure SRE(Software reliability Engineer), DevOps personnel has to rely on modern automated monitoring tools such Prometheus, Grafana or Zabbix. These tools can help SREs and DevOps practitioners to analyze the production health of the production environment in the form of graphs on a real-time basis. The tools (Prometheus, Zabbix) collects the data from various resources (virtual machine, Network Storage, Routers..) and stores it locally which can be used later for visualization and analysis.</description></item><item><title>How to setup Prometheus, Grafana dashboard for Kubernetes monitoring on AWS</title><link>https://jhooq.com/prometheous-k8s-aws-setup/</link><pubDate>Fri, 18 Feb 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/prometheous-k8s-aws-setup/</guid><description>
Prometheus and Grafana are the two popular open-source tools for collecting and visualizing performance metrics. In this blog post, we are going to set up Kubernetes cluster on AWS, later we are gonna set up Prometheus server for collecting the performance metrics and Grafana for.
Prometheus and Grafana are always a great combination when it comes to measuring the site reliability index. SREs (Software Reliability Engineers) heavily rely on Prometheus and Grafana because apart from collecting performance metrics, you can also set up some alerts, live views, and custom dashboards.</description></item><item><title>How to setup Prometheus, Node Exporter and Grafana</title><link>https://jhooq.com/prometheous-grafan-setup/</link><pubDate>Fri, 18 Feb 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/prometheous-grafan-setup/</guid><description>
Performance monitoring and alerting are very crucial to measure the performance metrics of an application running in a production environment. In this blog post, we are going to talk about two popular open-source tools Prometheus and Grafana. This blog post is aimed at anyone who is trying to learn Prometheus and Grafana or has some experience with these tools.
This is going to be a very beginners guide where we will start from -</description></item><item><title>How to fix-error configuring S3 Backend no valid credential sources for S3 Backend found?</title><link>https://jhooq.com/terraform-error-config-s3/</link><pubDate>Sun, 06 Feb 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-error-config-s3/</guid><description>
I had an issue while I was trying to setup Remote S3 bucket for storing Terraform state file. The issue faced is error configuring S3 Backend no valid credential sources for S3 Backend found.
After spending some time on my local terraform setup and AWS CLI configuration I realised that my AWS CLI was using incorrect Access Key and Secret Key with my AWS CLI.
Here is the screenshot of the error when I issued terraform init -</description></item><item><title>MacOS - How to fix Mounting of NFS shared folders on Vagrant?</title><link>https://jhooq.com/vagrant-nfs-shared-volume-error/</link><pubDate>Wed, 02 Feb 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/vagrant-nfs-shared-volume-error/</guid><description>
To give you a little background on the Vagrant NFS shared folder issue which I have struggled with this issue for almost a week before I found the root cause of the problem.
Here is the vagrant's mount.nfs:connection timed out error
1default: Mounting NFS shared folders... 23The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! 45mount -o vers=3,udp 192.168.0.1:/System/Volumes/Data/Users/rwagh/Git/jhooq.com/src /var/www/jhooq 67Stdout from the command 8Stderr from the command: 9mount.</description></item><item><title>How to fix-Support for password authentication was removed. Please use a personal access token instead?</title><link>https://jhooq.com/git-personal-access-token/</link><pubDate>Sat, 22 Jan 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/git-personal-access-token/</guid><description>
GitHub has recently announced their migration to use token-based authentication which means you can no longer use your username and password for GtiHub authentication. You need to create personal access token to continue use of your GitHub Repository.
Here is my private GitHub repository which I was trying to clone and prompted with the error message -
Support for password authentication was removed. Please use a personal access token instead Before fixing the issue lets try to understand how do you clone your Git Repo?</description></item><item><title>Kubernetes Cheat Sheet for day to day DevOps operations?</title><link>https://jhooq.com/kubernetes-cheat-sheet/</link><pubDate>Sat, 15 Jan 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-cheat-sheet/</guid><description>
Note - This Kubernetes Cheat sheet is really long and detailed. I would highly recommend to use CTRL+F from the browser to search for the specific command.
Table Of Content Pods Deployments Port Forwarding Service Nodes Namespace Service Accounts Documentation Describing Resources Editing Resources Deleting Resources All get commands Abbreviations / Short forms of resource types Verbose Kubectl Cluster Kubectl Context Alias Kubectl imperative(create) vs declarative(apply) 1.</description></item><item><title>Terraform state locking using DynamoDB (aws_dynamodb_table)?</title><link>https://jhooq.com/terraform-state-file-locking/</link><pubDate>Wed, 12 Jan 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-state-file-locking/</guid><description>
Terraform state is the backbone of your terraform project for provisioning your cloud infrastructure. When you work on large infrastructure provisioning with Terraform then it is always more than one developer or team of a developer working on the same terraform project.
The problems arise when two developers try to update the same terraform state file which is stored remotely(S3 Bucket). Ideally, the update on the state file should be done incrementally so that when one developer finishes pushing its state file changes another developer can push their changes after taking the update.</description></item><item><title>Docker - ADD, Update, Export Environment variable</title><link>https://jhooq.com/docker-manage-environment-variable/</link><pubDate>Fri, 07 Jan 2022 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-manage-environment-variable/</guid><description>
When writing a Dockerfile or docker-compose.yml you often need to rely on the ENVIRONMENT variable and there could be many reasons behind it, for example -
If your container is using Python then you might wanna rely on the Python version which is set into the host machine's environment variable. another use case could be JAVA_HOME - If your container needs Java for runtime then you might wanna use existing environment variable JAVA_HOME which is being already set into the host machine's environment variable.</description></item><item><title>Managing Terraform states?</title><link>https://jhooq.com/terraform-manage-state/</link><pubDate>Thu, 30 Dec 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-manage-state/</guid><description>
Terraform has its backbone known as terraform.tfstate file any change you do with your infrastructure will have its presence in the terraform.tfstate file. So when you work with Terraform for managing and provisioning your infrastructure then terraform will always create a terraform.tfstate file for you.
In this blog post, we will go through -
What is Terraform State(terraform.tfstate) file? What is the Purpose of Terraform state file? Terraform state file Metadata Terraform State Performance and Caching What is terraform_remote_state Data source?</description></item><item><title>How to fix-Docker docker failed to compute cache key not found</title><link>https://jhooq.com/docker-failed-to-compute-cache-key/</link><pubDate>Mon, 20 Dec 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-failed-to-compute-cache-key/</guid><description>
The Docker failed to compute cache key error is result of docker buildcommand which is executed on a directory where the Dockefile is not present.
I had this issue when I was working with one of my project on my windows laptop and my directory structure looked like this -
1\parent-directory 2- test-file-1.py 3- child-directory (child directory with Dockerfile) 4- DockerFile 5- test-file-2.py If you look at the directory structure above then my Dockerfile is present under the child-directory.</description></item><item><title>How to fix docker driver failed programming external connectivity on endpoint webserver?</title><link>https://jhooq.com/docker-driver-failed-programming/</link><pubDate>Thu, 09 Dec 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-driver-failed-programming/</guid><description>
This blog post will address how to fix the docker issue EADDRINUSE (PORT or ADDRESS already in use). Here is a little error snapshot which I have taken from my docker container which I was aiming to run on port 1313 but unfortunately the port is already occupied by some other process.
1docker: Error response from daemon:driver failed programming external connectivity on endpoint 2webserver (kdudfuyfndekdur6h8e3b271db180ffbee0a56caeskdhfudeu363fbc02ea805101df21e):Error starting 3springboot proxy: Bind for 0.</description></item><item><title>Delete Kubernetes POD stuck in terminating state?</title><link>https://jhooq.com/k8s-delete-pod-stuck-terminating-state/</link><pubDate>Wed, 08 Dec 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/k8s-delete-pod-stuck-terminating-state/</guid><description>
The deletion of the Kubernetes POD depends on many factors, before you execute the kubectl delete pod command you should go through the following checkpoint -
Is the container associated with POD still running? Are there any active Kubernetes deployment associated with POD? Check if the POD persistent volume and persistent volume claim still exist? Check if the host is running out of memory? Are there any Finalizer associated with the POD?</description></item><item><title>How to Delete PV(Persistent Volume) and PVC(Persistent Volume Claim) stuck in terminating state?</title><link>https://jhooq.com/k8s-delete-pv-pvc/</link><pubDate>Tue, 07 Dec 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/k8s-delete-pv-pvc/</guid><description>
The deletion of PV(Persistent Volume) and PVC(Persistent Volume claim) is pretty much dependent on the Delete reclaim policy. When you are planning to delete the Persistent Volume as well as Persistent Volume Claim then you must follow an order -
First delete - Persistent Volume Claim Second delete- Persistent Volume (Note* - You should never delete PV(Persistent Volume) without deleting its PVC(Persistent Volume Claim))
In this blog we will address on -</description></item><item><title>Securing AWS secrets using HashiCorp Vault with Terraform?</title><link>https://jhooq.com/hashi-vault-aws-secret-terraform/</link><pubDate>Sun, 05 Dec 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/hashi-vault-aws-secret-terraform/</guid><description>
For managing the cloud resources(EC2, S3 Bucket) on AWS you need to supply the AWS secrets(region, access_key, secret_key) inside the terraform file. You can use the plain text AWS Secrets inside your terraform file and it should work fine. But from the security standpoint, it is strongly discouraged to use plain text AWS Secretes for provisioning your infrastructure using terraform.
Also AWS credentials have a long-lived scoped which makes it more vulnerable for security attacks and if you are storing long-lived AWS secrets as plain text then you are putting the complete AWS cloud infra at security risk because of bad security practices.</description></item><item><title>How to fix docker error executable file not found in $PATH?</title><link>https://jhooq.com/docker-error-executable-file/</link><pubDate>Thu, 25 Nov 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-error-executable-file/</guid><description>
You might have encountered the error executable file not found in $PATH when you are trying to run your docker container. There could be many reasons for an error like this. But in simple words, the docker can not find the binary which you want to run inside the docker container.
Let's take some examples to identify the root cause behind the error executable file not found in $PATH and we will also see how to troubleshoot it.</description></item><item><title>How to download entire S3 bucket?</title><link>https://jhooq.com/aws-download-s3-bucket/</link><pubDate>Sat, 20 Nov 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-download-s3-bucket/</guid><description>
Amazon offers S3 Bucket where S3 is a short form of Simple Storage Service which can be used for text, images, web applications, data lake, and many more in a cost-effective way. Amazon AWS service provides GUI for managing S3 bucket which includes -
Viewing S3 Bucket content Uploading the content to S3 bucket Download any specific content from S3 bucket Many other features for controlling the access and integration service and the list goes on But AWS GUI does not provide an option for downloading the entire S3 bucket.</description></item><item><title>Share kubernetes secrets between namespaces?</title><link>https://jhooq.com/kubernetes-share-secrets-namespaces/</link><pubDate>Fri, 12 Nov 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-share-secrets-namespaces/</guid><description>
Kubernetes secrets are API objects which can only be referenced by POD, so if you are working in multiple namespaces then you can not share the same kubernetes secrets. Although it is possible to copy the same kubernetes into the desired namespace.
Create kubernetes namespace testns1 In this blog post we are going to talk about alternate ways to share the secret between the multiple kubernetes namespace.</description></item><item><title>How to use Kubernetes secrets?</title><link>https://jhooq.com/kubernetes-secrets/</link><pubDate>Mon, 08 Nov 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-secrets/</guid><description>
Before we jump onto kubernetes secrets let’s first try to understand What is Secret? - Secret is sensitive information which can not be written in a plain text or shared with others. The best example of Secrets would be the password.
But Why do we need to use Kubernetes Secret? - Running a bare minimum kubernetes cluster does need a kubernetes secret but when you start deploying a docker container application then there is need of Kubernetes Secret for storing sensitive data.</description></item><item><title>Validating Kubernetes Configurations with Datree</title><link>https://jhooq.com/using-datree/</link><pubDate>Mon, 08 Nov 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/using-datree/</guid><description>
Working with Kubernetes is fun when your Kubernetes cluster is up and your nodes are working as you expected. But as a DevOps enthusiast who follows the principles of Continuous Integration and Continuous Delivery, you are aware that new changes or feature requests are always coming through the Jenkins Pipeline, and eventually, you’ll have to deploy changes into the Kubernetes cluster which feeds into your production environment.
In most cases, you will need to update your Kubernetes manifest YAMLs or Helm charts (Deployment, Service, or Pod) and apply those changes either directly into the Production or Staging or into the Test environment.</description></item><item><title>How to delete all kubernetes PODS?</title><link>https://jhooq.com/kubernetes-delete-pod/</link><pubDate>Sun, 24 Oct 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-delete-pod/</guid><description>
In kubernetes cluster we always creat and delete kubernetes PODS. PODS lifecycle is very short and it is very often that kubernetes creat a replica of a POD to provide maximum availability across the kubernetes cluster.
But considering the need, a developer might need to delete POD manually because of POD getting stuck in terminating status and kubernetes is not able to terminate the POD.
There are many alternate ways to delete the POD.</description></item><item><title>kubernetes pods getting recreated?</title><link>https://jhooq.com/kubernetes-pod-recreated/</link><pubDate>Fri, 22 Oct 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-pod-recreated/</guid><description>
One day I was working with my local kubernetes cluster which I set up using Kubespray and inside my Kubernetes cluster, I was trying to deploy my docker container. Since it was a local Kubernetes cluster so I had done a couple of Kubernetes deployments before also but after each deployment, I was deleting the Kubernetes POD, Kubernetes deployment, and Kubernetes service.
Eventually, after doing the same process 3-4 times I noticed one very strange behavior with the Kubernetes cluster, I was trying to delete the POD but the POD was getting recreated after a minute or so.</description></item><item><title>How to use Helmfile for managing helm chart?</title><link>https://jhooq.com/helmfile-manage-helmchart/</link><pubDate>Sat, 16 Oct 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/helmfile-manage-helmchart/</guid><description>
Helmfile is an another wrapper working on top of Helm Chart. Just like Helm Chart, Helmfile also uses the YAML for writing the configurations.
But why do you need Helmfile if you are working with Kubernetes and Helm Chart?
Here are some key benfits of using Helmfile -
You can bundle several Helm Charts into a Single Helmfile to manage your kubernetes eco system Helmfile helps you to keep isolation between the different environments(developemnt, staging, production) It can help you to identify the differences between the new changes which you want to apply against the existing running deployment inside kubernetes cluster Helmfile uses the Go Templates which lets you templatify your Helmfile and also you can use Sprig Library with functions - requiredEnv, exec, readFile, toYaml, fromYaml, setValueAtPath, get, tpl, required, fetchSecretValue, expandSecretRefs With the help of HelmFile you can deploy multi-tier applications inside kubernetes cluster.</description></item><item><title>How to ssh into vagrant without using vagrant SSH?</title><link>https://jhooq.com/vagrant-ssh-without-vagrant-ssh/</link><pubDate>Sun, 10 Oct 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/vagrant-ssh-without-vagrant-ssh/</guid><description>
I have been using vagrant for quite some time on my development laptop for work as well as for learning purposes. But one thing which I noticed working with Vagrant is you have to use vagrant ssh every time whenever you want to login into your virtual machine and in case if you have multiple virtual machine configured into your Vagrantfile then you have to put down the config.vm.hostname along with vagrant ssh command for example vagrant ssh myvirtualmachine.</description></item><item><title>4 Ways to Add SSH public key to Vagrant VM(Virtual Machine)?</title><link>https://jhooq.com/vagrant-copy-public-key/</link><pubDate>Fri, 08 Oct 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/vagrant-copy-public-key/</guid><description>
Vagrant helped developers to create a very lightweight, portable development machine which can be destroyed and recreated on the fly. When it comes to starting a virtual machine onto your development environment vagrant helps you to spin up the virtual machine with very few lines of codes.
But while working with Vagrant on my development environment one day I had a need to copy my public ssh keys to one of my virtual machines which I started using vagrant.</description></item><item><title>Implementing Kubernetes liveness, Readiness and Startup probes with Spring Boot Microservice Application?</title><link>https://jhooq.com/kubernetes-liveness-readiness-startup-probes/</link><pubDate>Fri, 08 Oct 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-liveness-readiness-startup-probes/</guid><description>
Maintaining a healthy kubernetes cluster is really challenging especially if you have not configured the Liveness, Readiness and Startup Probes correctly for your containers deployed under kubernetes containers.
If I have to put in a simple way -
Liveness probes - It is responsible for restarting your container, if it senses a deadlock. Kubernetes liveness probes Readiness probes - This probe will tell when the container is ready to start traffic.</description></item><item><title>How to expose port on live containers?</title><link>https://jhooq.com/expose-port-on-live-container/</link><pubDate>Tue, 21 Sep 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/expose-port-on-live-container/</guid><description>
As DevOps, we often make quite a lot of mistakes and one of the most oversight mistakes we generally do is forget to expose a port for the container.
When you realize that you have not exposed any port for the container then you start looking for ways to change the port mapping of a live container or in other words, we can say Is there a way to expose a port on a live running container.</description></item><item><title>How to expose multiple ports with Docker?</title><link>https://jhooq.com/expose-multiple-ports-of-docker/</link><pubDate>Thu, 16 Sep 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/expose-multiple-ports-of-docker/</guid><description>
When we package any application using Docker then either we create Dockerfile or docker-compose.yaml, even you can create both the files and share the files with others. There is one important aspect in both the files .i.e. PORT.
Any container which you build and ship to other developers has to have one or more defined PORT on which it can run and expose the services. As a rule of thumb, there should be at least one PORT defined inside either Dockerfile or docker-compose.</description></item><item><title>How to delete all the Git, BitBucket branches which have been merged?</title><link>https://jhooq.com/git-delete-merged-branches/</link><pubDate>Thu, 26 Aug 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/git-delete-merged-branches/</guid><description>
I usually work with multiple projects at once and whenever there is a new feature on which I had to work, I usually create a new Branch from my Master branch and once I am done with the new feature I do create a pull request and after the approval, I do merge my changes from my new Branch to my Master branch.
Well, this workflow of creating new Branch from Master is pretty widely used across the developer community for the Continuous Integration and Continuous delivery but there are some side effects with this workflow.</description></item><item><title>How to fix - unable to update URL base form redirection asked for https://github.com/rahulwagh/spring-boot-docker.git?</title><link>https://jhooq.com/github-unable-to-update-URL/</link><pubDate>Mon, 23 Aug 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/github-unable-to-update-URL/</guid><description>
I faced this issue when I was trying to clone my GitHub repository but somehow I made a mistake and instead of using the correct GitHub Repository URL I used an incorrect URL.
Here are the URLs -
Correct URL - https://github.com/rahulwagh/k8s-jenkins-aws.git Incorrect URL - https://github.com/rahulwagh/k8s-jenkins-aws But the above-mentioned scenario is one of the most common mistakes a developer does while working with multiple repository projects. In this blog post, we will go through a number of different use cases and how to troubleshoot the following error-</description></item><item><title>How to use Workspaces in Terraform?</title><link>https://jhooq.com/terraform-workspaces/</link><pubDate>Wed, 18 Aug 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-workspaces/</guid><description>
Terraform worksapces is a very logical concept where you can have multiple states of your infrastructure configuration. To put this in simple words if you are running an infrastructure configuration in development environment then the same infrastructure can be run in the production environment.
The main benefit of terraforming workspaces we get is we can have more than one state associated with a single terraform configuration.
If you have not defined any workspace then there is always a default workspace created by terraform, so you always work in a default workspace of terraform.</description></item><item><title>How to run specific terraform resource, module, target?</title><link>https://jhooq.com/terraform-run-specific-resource/</link><pubDate>Sun, 15 Aug 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-run-specific-resource/</guid><description>
Terraform file always grows as you span your infrastructure and add multiple servers to your cloud-hosted infrastructure.
But imagine you have terraform file which contains lots of resources but you only do not want to apply the complete terraform configuration but instead, you just want to run one specific or some specific resource out of your Terraform configuration.
So to run specific resources in terraform you should use -target=resource which will help you to target specific resources instead of applying complete terraform configuration.</description></item><item><title>How to restart single docker container within multiple docker container?</title><link>https://jhooq.com/docker-restart-single-container/</link><pubDate>Wed, 11 Aug 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-restart-single-container/</guid><description>
I am a real big fan of working with docker because it provides you a certain level of isolation and the ability to move your dockerize application anywhere from development to the production environment.
But often when I work with the multiple numbers of running docker containers then it is often needed to restart a single container running among the multiple containers and the reason is I need to apply some changes to my application which is running inside my docker container.</description></item><item><title>How Terraform modules works?</title><link>https://jhooq.com/terraform-module/</link><pubDate>Mon, 09 Aug 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-module/</guid><description>
Terraform is an IaC(infrastructure as Code) framework for managing and provisioning the infrastructure but have you ever thought of creating only a single terraform configuration file for managing the complete cloud infrastructure.
Well, it sounds insane because if you only have a single file for managing the complete infrastructure then it will grow in complexity as well the line of configuration code will be manifold. That is why terraform introduced a concept of module which will help you to organize your terraform configuration so that you can re-use the configuration and keep your terraform code more clean and modular.</description></item><item><title>How to edit file within Docker container or edit a file after I shell into a Docker container?</title><link>https://jhooq.com/docker-edit-file-inside-container/</link><pubDate>Thu, 05 Aug 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-edit-file-inside-container/</guid><description>
While working on my Spring Boot Microservices with Docker I felt a need to edit some of the files present under my docker container.
But when I tried to edit the file nano application.yaml it throws me an error bash: nano: command not found. So I was not able to edit the file which is present inside my running docker container.
After spending some time on google and thinking about the issue I realized docker never encourages you to edit or change anything present inside the docker container.</description></item><item><title>How to fix Error starting docker service Unit not found?</title><link>https://jhooq.com/docker-daemon-centos/</link><pubDate>Sat, 24 Jul 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-daemon-centos/</guid><description>
In this blog post, we will look at the different ways to fix the Error starting docker service Unit not found.
I faced this issue while I was trying to set up Kubernetes cluster on CentOS 8. As Kubernetes is a container orchestration tool and it is used for managing container images, so I had to install Docker before installing the Kubernetes cluster.
But after installing the Docker when I executed the following command -</description></item><item><title>How to remove old, unused images of Docker?</title><link>https://jhooq.com/docker-remove-unused-images/</link><pubDate>Sat, 24 Jul 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-remove-unused-images/</guid><description>
There are times in a project where you have been working for quite a long time and you create and tag docker images on daily basis but after some time it is generally observed that we tend to forget how many docker images we have build and tagged.
I do not see a problem in building and tagging a new docker image number of times but if you do not do the housekeeping of docker images properly you might soon consume all of disk space and then you need to look for commands which you can use for removing old, unused docker images.</description></item><item><title>Secure AWS EC2s &amp; GCP VMs with Terraform SSH Keys!</title><link>https://jhooq.com/terraform-ssh-into-aws-ec2/</link><pubDate>Tue, 20 Jul 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-ssh-into-aws-ec2/</guid><description>
This blog post will help you to understand -
How to manage SSH Keys for your EC2 Instance on AWS How to manage SSH Keys for Virtual Machine on GCP When you work on cloud services such as AWS, Google Cloud you use Terraform to setup EC2 and VMs. But to access those instances(EC2, VMS) you need to setup the SSH Keys.
As all the cloud provider does not provide password for the root user.</description></item><item><title>What is terraform provisioner?</title><link>https://jhooq.com/terraform-provisioner/</link><pubDate>Mon, 19 Jul 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-provisioner/</guid><description>
Terraform Provisioners are used to performing certain custom actions and tasks either on the local machine or on the remote machine.
The custom actions can vary in nature and it can be -
Running custom shell script on the local machine Running custom shell script on the remote machine Copy file to the remote machine Also there are two types of provisioners -
Generic Provisioners (file, local-exec, and remote-exec) Vendor Provisioners (chef, habitat, puppet, salt-masterless) Generic Provisioners - Generally vendor independent and can be used with any cloud vendor(GCP, AWS, AZURE)</description></item><item><title>How to fix Failed to get the data key required to decrypt the SOPS file?</title><link>https://jhooq.com/failed-to-get-the-data-key/</link><pubDate>Sat, 03 Jul 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/failed-to-get-the-data-key/</guid><description>
Here in this article, I have documented the steps which are needed for fixing the issue Failed to get the data key required to decrypt the SOPS file. Group 0 FAILED
Here are the instances where I faced this issue -
How to fix when you are working with Helm Chart Secretes How to fix when you are working on Google cloud 1. How to fix when you are working with Helm Chart Secretes?</description></item><item><title>How to fix WARNING UNPROTECTED PRIVATE KEY FILE!</title><link>https://jhooq.com/fix-warning-unprotected-private-key-file/</link><pubDate>Wed, 30 Jun 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/fix-warning-unprotected-private-key-file/</guid><description>
I am writing this post to document my troubleshooting steps when I faced the following issue -
WARNING: UNPROTECTED PRIVATE KEY FILE!
Permissions 0660 for jenkins-ec2.pem are too open.
It is required that your private key files are NOT accessible by others.
Load key jenkins-ec2.pem bad permissions
ubuntu@ec2-52-59-232-76.eu-central-1.compute.amazonaws.com: Permission denied (publickey)
How it happened? This issue happened when I was trying to SSH into my EC2 instance running in AWS using key pair.</description></item><item><title>How to make your Gradle build faster when you see - Starting a new Gradle Daemon for this build (subsequent builds will be faster)?</title><link>https://jhooq.com/make-gradle-build-faster/</link><pubDate>Wed, 30 Jun 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/make-gradle-build-faster/</guid><description>
Recently I was working on one of my Spring Boot Application with Gradle as my preferred build framework. I aimed to deploy Spring Boot Application to AWS EC2 instance but as soon as I started my Gradle build on my EC2 instance it kind of stuck and frozen with the following message -
Starting a new Gradle Daemon for this build (subsequent builds will be faster)
Looking at the message I assumed Maybe I am running it for the first time that is why it is taking time but after waiting for a while it just failed with the following message -</description></item><item><title>How to setup kubernetes jenkins pipeline on AWS?</title><link>https://jhooq.com/aws-kubernetes-jenkins-pipeline/</link><pubDate>Sat, 19 Jun 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/aws-kubernetes-jenkins-pipeline/</guid><description>
Hello guys It is been quite some time I was planning to write a blog post on How to set up your Kubernetes CI CD Jenkins pipeline on AWS step by step? It took some time for me to figure out all the details for setting up the continuous pipeline but at last once I was able to deploy it successfully on AWS, it was a sigh of relief for me.</description></item><item><title>Is terraform destroy needed before terraform apply?</title><link>https://jhooq.com/terraform-destroy-before-apply/</link><pubDate>Wed, 02 Jun 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-destroy-before-apply/</guid><description>
Terraform destroy will no doubt provide you a clean slate to work with your infrastructure but it is not needed to run terraform destroy before running terraform apply or plan commands.
There is one caution while working with terraform destroy command, it is not advisable to run it on a production environment because it can do some serious damage to your cloud infrastructure setup.
Just to keep everything in sync you can use terraform refersh anytime or even before you apply to terraform configuration.</description></item><item><title>How to fix terraform error Your query returned no results. Please change your search criteria and try again?</title><link>https://jhooq.com/terraform-your-query-returned-no-results/</link><pubDate>Mon, 31 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-your-query-returned-no-results/</guid><description>
The terraform error Your query returned no results. Please change your search criteria and try again can be misleading and can cause an increase in your debugging time with your Terraform configuration.
I have also faced the same issue while I was trying to set up my aws_instance on AWS.
But interestingly this issue only happened with me when I was trying to create a Data source inside my terraform configuration and I missed adding the depends_on tag inside the data source configuration.</description></item><item><title>How to use Terraform Data sources?</title><link>https://jhooq.com/terraform-data-sources/</link><pubDate>Fri, 28 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-data-sources/</guid><description>
Terraform data sources can be beneficial if you want to retrieve or fetch the data from the cloud service providers such as AWS, AZURE, and GCP. Most of the time when we use Terraform along with AWS/AZURE/GCP then we always send data in terms of instructions or configuration.
But what if you want to get the information(arn, tags, owner_id, etc.) back from the cloud service provider AWS/AZURE/GCP?
Answer - We need to use the data sources to get the resource information back.</description></item><item><title>How to use Terraform resource meta arguments?</title><link>https://jhooq.com/terraform-resource-meta-argument/</link><pubDate>Tue, 25 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-resource-meta-argument/</guid><description>
Terraform resource Meta-Arguments can be useful while setting up your cloud infrastructure. The resource arguments depends_on, count, for_Each, provider, lifecycle has some features such as -
You can create multiple aws_resource using the count for_each can be used for iteration and can also help you to create multiple aws_resource using the same block provider is used for overriding terraform default behavior using the alias With lifecycle you can prevent destroy, create resource after destroy and ignore changes to be saved inside tstate We will look into each resource meta arguments in a bit more details along with the example -</description></item><item><title>How to fix docker error invalid reference format error?</title><link>https://jhooq.com/invalid-reference-format-error/</link><pubDate>Wed, 19 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/invalid-reference-format-error/</guid><description>
In this blog post we will look on ways to fix the docker error invalid reference format error. If you look at the error carefully then it says invalide reference format which mean the image name which you are trying to use in your Dockerfile or docker command is not acceptable.
Basically a reference in docker is a pointer to image, so whenever you use image name inside your Dockerfile or docker command it get parsed and the image name should follow certain rules as described in below in the table of content -</description></item><item><title>How to fix requested access to the resource is denied?</title><link>https://jhooq.com/requested-access-to-resource-is-denied/</link><pubDate>Mon, 17 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/requested-access-to-resource-is-denied/</guid><description>
I faced the error requested access to the resource is denied while I was trying to push my docker image of spring boot application to Docker Hub but unfortunately when I issued the docker push command I immediately got the error.
In this article, we will look at How to fix requested access to the resource is denied error and also the recommended ways to use the docker push command so that you can avoid this type of error in the future.</description></item><item><title>How to fix Docker error cannot delete docker container conflict unable to remove repository reference?</title><link>https://jhooq.com/docker-error-cannot-delete-docker-container-conflict/</link><pubDate>Fri, 14 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-error-cannot-delete-docker-container-conflict/</guid><description>
Docker error cannot delete docker container conflict unable to remove repository reference This error comes when you try to delete/remove your docker image before removing your docker container. The basic principle of docker says you should always remove your docker container first before removing the docker image.
In this article, we are going to see how to fix this issue along with the recommended way to handle the removal/deletion of the docker container and docker images.</description></item><item><title>How to fix docker error no space left on device?</title><link>https://jhooq.com/docker-error-no-space-left/</link><pubDate>Thu, 13 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/docker-error-no-space-left/</guid><description>
Sometimes you must clean up your disk so that you can download the docker image and run it. But if you do not have sufficient space available on your disk then you might end up with the error no space left on device.
In this blog, we are going to see a number of ways to fix this error because I had this issue many times while working with docker.</description></item><item><title>How to use Terraform Dynamic blocks?</title><link>https://jhooq.com/terraform-dynamic-block/</link><pubDate>Mon, 10 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-dynamic-block/</guid><description>
Terraform Dynamic Block is important when you want to create multiple resources inside of similar types, so instead of copy and pasting the same terraform configuration in the terraform file does not make sense and it is not feasible if you need to create hundreds of resources using terraform.
If we describe terraform dynamic block in simple words then it is for loop which is going to iterate over and will help you to create a dynamic resource.</description></item><item><title>Terraform - How to nuke AWS resources and save additional AWS infrastructure cost?</title><link>https://jhooq.com/terraform-nuke/</link><pubDate>Sat, 01 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-nuke/</guid><description>
Working in the AWS cloud is always fun until you are not paying your AWS bills from your pocket. Being a developer we work on our developer machine and we do not much worry much about resources(CPU, Memory, and Disk space) because nowadays developer machines (Laptops/desktops) are very powerful. Apart from the initial purchase cost, it will not only consume a very tiny amount of electricity if you keep it running days and nights.</description></item><item><title>Understanding terraform count, for_each and for loop?</title><link>https://jhooq.com/terraform-for-and-for-each-loop/</link><pubDate>Sat, 01 May 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-for-and-for-each-loop/</guid><description>
When working with &amp;quot;collection variables&amp;quot; in Terrafrom, you must understand &amp;quot;loops with count,&amp;quot; &amp;quot;loops with for each,&amp;quot; and &amp;quot;for loop.&amp;quot; If you don't, it will be very hard to go through collections like list, map, and set.
This article is mostly about how loops work. We'll look at an example of each idea in more depth:
Table of Content Loops with count 1.1 Iterate List using count 1.</description></item><item><title>How to connect localhost from docker container?</title><link>https://jhooq.com/connect-localhost-from-dcoker/</link><pubDate>Thu, 29 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/connect-localhost-from-dcoker/</guid><description>
Docker container always works in isolation from host machine. But sometimes you need to connect localhost(host machine) from your docker container to perform certain tasks.
In this article we are going to look - How to access the host machine from docker conatiner?
There are different ways to achieve -
Using default docker bridge connection .i.e. docker0 On Windows machine On Linux/Mac machine 1. Using default bridge connection .</description></item><item><title>How to use Terraform output values?</title><link>https://jhooq.com/how-to-use-terraform-output-values/</link><pubDate>Mon, 26 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/how-to-use-terraform-output-values/</guid><description>
In this article we are going to look on terraform output values. Terraform output values will be really useful when you want to debug your terraform code. Terraform output values can help you to print the attributes reference(arn, instance_state, outpost_arn, public_ip, public_dns etc) on your console.
The typical syntax of Terraform output values is -
How to use terraform output locals? Once you run your terraform apply command, it is going to print Hello this is output onto your console.</description></item><item><title>How to create multiple values files inside helm chart?</title><link>https://jhooq.com/helm-multiple-values-files/</link><pubDate>Fri, 23 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/helm-multiple-values-files/</guid><description>
Helm Chart is a very feature-rich framework when you are working with complex Kubernetes cluster and deployment. Helm chart provides a very convenient way to pass values.yaml and use it inside your Helm Chart.
But for this article, we will focus on -
How to create multiple values files inside the helm chart?
Click on the blog post if you want to know more about How to pass environment variables inside your helm chart ?</description></item><item><title>How to fix error configuring Terraform AWS Provider error validating provider credentials error calling sts GetCallerIdentity SignatureDoesNotMatch?</title><link>https://jhooq.com/error-configuring-terraform-aws-provider/</link><pubDate>Mon, 19 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/error-configuring-terraform-aws-provider/</guid><description>
In this article we are going to troubleshoot an issue related to Terraform and AWS.
This is occurs when you are trying to use your Old or expired - Access keys (access key ID and secret access key) of your aws account.
You are error should look like -
Error: error configuring Terraform AWS Provider: error validating provider credentials: error calling sts:GetCallerIdentity: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided.</description></item><item><title>How to fix Invalid function argument on line in provider credentials file google Invalid value for path parameter no file exists</title><link>https://jhooq.com/gcp-invalid-function-argument-credential-file/</link><pubDate>Mon, 19 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/gcp-invalid-function-argument-credential-file/</guid><description>
Working with terraform can tricky sometime and specially if you are working with cloud service provider such as Google Cloud Platform.
I have faced the following issue while I was working with my first Terrafrom project with Google Cloud.
Error Invalid function argument on main.tf line 2, in provider google credentials = file(gcp-account.json) Invalid value for path parameter no file exists at gcp-account.json this function works only with files that are distributed as part of the configuration source code, so if this file will be created by a resource in this configuration you must instead obtain this result from an attribute of that resource.</description></item><item><title>How to fix error value for undeclared variable a variable named was assigned on the command line?</title><link>https://jhooq.com/value-for-undeclared-variable/</link><pubDate>Fri, 16 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/value-for-undeclared-variable/</guid><description>
In this article we are going to fix
Error Value for undeclared variable A variable named was assigned on the command line, but the root module does not declare a variable of that name. To use this value, add a variable block to the configuration
The above mentioned issue very common with terraform and 99% of the case you might have forgotten -
Either declaring variable Or did not create a variable.</description></item><item><title>What is variable.tf and terraform.tfvars?</title><link>https://jhooq.com/terraform-variable-and-tfvars-file/</link><pubDate>Sun, 11 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-variable-and-tfvars-file/</guid><description>
Terraform variable.tf is a file where you can define variables for your Terraform configuration. This file can contain the variable definitions as well as the optional default value for the variable. Here is an example of variable.tf which has -
Two variables with no default value - instance_type, github_repo
One variable with default value - location
1# variable.tf 23# No default value 4variable &amp;#34;instance_type&amp;#34; { 5type = string 6description = &amp;#34;EC2 Instance Type&amp;#34; 7}89# No default value 10variable &amp;#34;tag&amp;#34; { 11type = string 12description = &amp;#34;The tag for the EC2 instance&amp;#34; 13}1415# default value for the variable location 16variable &amp;#34;location&amp;#34; { 17type = string 18description = &amp;#34;The project region&amp;#34; 19default = &amp;#34;eu-central1&amp;#34; 20} Terraform variables.</description></item><item><title>How would I learn DevOps(If I had to Start Over)</title><link>https://jhooq.com/how-to-learn-devops/</link><pubDate>Fri, 09 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/how-to-learn-devops/</guid><description>
I got this question many times like how should I start learning DevOps. Well in this article we are gonna talk about
How should I learn DevOps by myself if I had to start from scratch?
Devops learning path There are certain caveats which I would like to mention -
Learning can different for everyone - The first one is the learning can be different for everyone there are certain topics which might be easy for you to understand but for some of you it might be a little difficult because you might be coming from a different programming background</description></item><item><title>How to use ApplicationRunner in Spring Boot application?</title><link>https://jhooq.com/applicationrunner-spring-boot/</link><pubDate>Sun, 04 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/applicationrunner-spring-boot/</guid><description>
The Application Runner interface provided by Spring Boot is a little advance than the CommandLineRunner Interface. In simple words, we can say that CommandLineRunner Interface does not do more than executing the run() method before the completion of the Spring Boot Application Life Cycle and putting all the program arguments in an array of String.
So, the question comes what is special about “ApplicationRunner”, well It allows you to define the following arguments –</description></item><item><title>How to use Terraform Variables - Locals,Input,Output</title><link>https://jhooq.com/terraform-input-variables/</link><pubDate>Thu, 01 Apr 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-input-variables/</guid><description>
Terraform variables are a way to store values that can be reused throughout your Terraform configuration.
They allow you to define a value once and reference it in multiple places throughout your configuration, making it easier to manage and update your infrastructure.
Variables are defined in the variables block in your Terraform configuration file, where you can give a name and a default value. Please refer to the following screenshot exaplaining how variables are defined inside terraform- terraform variables string, bool, number, list, set, map Terraform variables can have various type such as string, number, boolean, list, map etc.</description></item><item><title>How to fix - Python pip install connection error SSL CERTIFICATE_VERIFY_FAILED certificate verify failed</title><link>https://jhooq.com/pip-install-connection-error/</link><pubDate>Wed, 31 Mar 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/pip-install-connection-error/</guid><description>
In this article, we are going to see the error connection error SSL CERTIFICATE_VERIFY_FAILED certificate verify failed (_ssl.c:598) which you might get when you are trying to install Python on your system.
First, we are going to see the Root Cause of the error and then we are going to see 3 different ways to address this issue.
Here is the sample error message which you might be getting -</description></item><item><title>Upgrade kubernetes using kubespray</title><link>https://jhooq.com/upgrade-kubernetes-using-kubespray/</link><pubDate>Mon, 29 Mar 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/upgrade-kubernetes-using-kubespray/</guid><description>
Kubespray comes very handily when you want to upgrade or downgrade your kubernetes cluster to the specific version.
But it can be troublesome if you do not know -
How to upgrade your Kubernetes cluster using Kubespray?
Click below - If you want to learn how to setup Kubernetes cluster using Kubespray
12 Steps for Installing a Production Ready Kubernetes Cluster
Table of Content How the upgrade works for Kubespray How to checkout the correct Kubespray repository Kubespray upgrade cluster to next higher version(Graceful upgrade) Kubespray upgrade Kubernetes cluster to specific version How to downgrade your Kubernetes cluster(Unsafe upgrade example) 1.</description></item><item><title>Terraform create EC2 Instance on AWS</title><link>https://jhooq.com/terraform-ec2-instance-setup/</link><pubDate>Fri, 19 Mar 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/terraform-ec2-instance-setup/</guid><description>
This guide will help you to Create your first AWS EC2 using terraform.
When it comes to IAC(Infrastructure As Code) Terraform is always the first choice of DevOps although there are many alternatives available in the market such as Ansible, Chef, Puppet, SaltStack, CloudFormation but due the fact that -
Terraform is really easy install Terraform has very good API documentation It is widely adopted in the DevOps community Great support for a popular cloud service provider such as Google Cloud Platform, AWS.</description></item><item><title>How to fix Error creating service account googleapi Error 403 Identity and Access Management (IAM) API has not been used in project before or it is disabled</title><link>https://jhooq.com/fix-error-create-service-account-google-api/</link><pubDate>Sun, 14 Mar 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/fix-error-create-service-account-google-api/</guid><description>
In this article we are going to see - How to fix the issue - Error creating service account googleapi Error 403 Identity and Access Management (IAM) API has not been used in project 4686446XXXX before or it is disabled
(In case you need help with setting GCP Compute instance here is the guide)
Issue I also faced this issue when I was trying to create my first GCP Compute Instance using terraform.</description></item><item><title>Install terraform on Ubuntu 20.04, CentOS 8, MacOS, Windows 10, Fedora 33, Red hat 8 and Solaris 11</title><link>https://jhooq.com/install-terrafrom/</link><pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/install-terrafrom/</guid><description>
In this guide, we will focus on Installation of Terraform on a various operating system such as Ubuntu 20.04, CentOS 8, Fedora 33, Red Hat 8, and Solaris.
Install Terraform on Ubuntu 20.04, CentOS 8, Fedora 33, Red Hat 8 or Solaris Install Terraform on Windows 10 Install Terraform on MacOS Later we are also going to see How to Upgrade Terraform using tfenv?
Upgrade Terraform using tfenv Upgrade Terraform to Specific version using tfenv Uninstall the Terraform 1.</description></item><item><title>kubectl export yaml OR How to generate YAML for deployed kubernetes resources</title><link>https://jhooq.com/get-yaml-for-deployed-kubernetes-resources/</link><pubDate>Thu, 25 Feb 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/get-yaml-for-deployed-kubernetes-resources/</guid><description>
In this post, we are going to see how to get YAML of deployed Kubernetes resources(pvc, configmap, ingress, service, secret, deployment, statefulset, hpa, job, cronjob).
Most of the time we create the deployment and expose services inside the kubernetes cluster using YAMLs but here in this the post we will focus on a reverse to re-generate YAML of the deployed resources.
My Cluster Setup Generate YAML for service Generate YAML for deployment Bash script to generate all the YAML for existing k8s cluster 1.</description></item><item><title>How to fix - Error client etcd cluster is unavailable or misconfigured</title><link>https://jhooq.com/etcd-cluster-is-unavailable-or-misconfigured/</link><pubDate>Mon, 22 Feb 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/etcd-cluster-is-unavailable-or-misconfigured/</guid><description>
You might be trying to set-up your Kubernetes cluster using Kubespray but during the setup you must be stuck with the issue client etcd cluster is unavailable or misconfigured error.
But before scrolling down for solution please check in the logs again for the errros like connection refused error or subnet watch failed client: because both the error has different solution.
Solution 1 - etcd cluster is unavailable or misconfigured getsockopt: connection refused</description></item><item><title>How to fix - git@github.com permission denied (publickey). fatal could not read from remote repository and Support for password authentication was removed. Please use a personal access token instead</title><link>https://jhooq.com/github-permission-denied-publickey/</link><pubDate>Mon, 15 Feb 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/github-permission-denied-publickey/</guid><description>
git@github.com: Permission denied (public key).fatal: Could not read from remote repository. - It means GitHub is rejecting your connection because -
It is your private repo GitHub does not trust your computer because it does not have the public key of your computer. And when you try to clone the repo you get the following error message -
1git@github.com: Permission denied (public key). 2fatal: Could not read from remote repository.</description></item><item><title>Pass environment variables into Helm Chart?</title><link>https://jhooq.com/helm-pass-environment-variables/</link><pubDate>Thu, 07 Jan 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/helm-pass-environment-variables/</guid><description>
Helm chart provides a couple of ways to access or pass environment variables into the templates
set values.yaml But before you start reading the article let us make some baseline.
In this article, I have created only one chart helloworld. So I will be taking the same hellworld helm chart to pass the environment variables.
I have used the following Helm Command to create helloworld
1helm create helloworld To learn more about Helm Chart you can visit - Getting Started with Helm Chart</description></item><item><title>How to fix - Helm install unknown flag --name/Error must either provide a name or specify --generate-name?</title><link>https://jhooq.com/helm-install-unknown-flag/</link><pubDate>Tue, 05 Jan 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/helm-install-unknown-flag/</guid><description>
In Helm v3 you must use release name along with chart name in the command otherwise it will result into the following errors -
Error 1- Helm install unknown flag --name Error 2- Error: must either provide a name or specify --generate-name
Lets look at Error 1 - Caused by incorrect use of name flag This --name flag is no longer supported by the Helm v3, so if you are trying to use it somewhere in your helm commands then it will not work.</description></item><item><title>Why I dumped Wordpress and switched to Hugo static site generator</title><link>https://jhooq.com/hugo-vs-wordpress/</link><pubDate>Mon, 04 Jan 2021 00:00:00 +0000</pubDate><guid>https://jhooq.com/hugo-vs-wordpress/</guid><description>
1.Introduction I started my blog in January 2019 and like other bloggers, I also choose Wordpress as my preferred CMS tool for blogging. I was very happy with the out of the box features provided by the Wordpress but as I started putting more and more content on my blog I started to notice some problems with WordPress in terms of -
Scalability Performance 2. Behind the scene of WordPress Before I start comparing the pros and cons of Wordpress with GoHugo.</description></item><item><title>Understanding Helm dry run for template debugging</title><link>https://jhooq.com/helm-dry-run-install/</link><pubDate>Fri, 25 Dec 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/helm-dry-run-install/</guid><description>
Debugging and troubleshooting Helm Template in the complex production environment can be really daunting if you do not use helm install --dry-run --debug or helm template command for debugging the Helm Templates.
helm install --dry-run --debug :- It will validate and verify your chart by connecting to kubernetes api server and after successful validation it will render the manifest in the form of YAMLs(kubernetes resources) helm install --dry-run --debug helm template :- It will do the validation and generate the YAML manifest but it can not guarantee that generated kubernetes resource(YAMLs) is valid or not.</description></item><item><title>How to fix - Error create failed to create Secret invalid metadata.name Invalid value DNS-1123 subdomain must consist of lower case alphanumeric characters - or ., and must start and end with an alphanumeric character (e.g. example.com, regex used for validation is)</title><link>https://jhooq.com/helm-chart-failed-to-create/</link><pubDate>Tue, 22 Dec 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/helm-chart-failed-to-create/</guid><description>
In this article we are going to see how to fix - Error create failed to create Secret sh.helm.release.v1.demoChart.v1 is invalid metadata.name Invalid value sh.helm.release.v1.demoChart.v1 a DNS-1123 subdomain must consist of lower case alphanumeric characters - or ., and must start and end with an alphanumeric character (e.g. example.com, regex used for validation is [a-z0-9] ([-a-z0-9] * [a-z0-9])?(.[a-z0-9] ([-a-z0-9] * [a-z0-9])?)*)
Root Cause The root cause behind this issue can be one of the following -</description></item><item><title>Kubernetes Updates</title><link>https://jhooq.com/kubernetes-updates/</link><pubDate>Fri, 04 Dec 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-updates/</guid><description>
December 04, 2020 Kubernetes is deprecating Docker support and how should you prepare for it? As of December 02, 2020 Kubernetes has announced that going forward Kubernetes is going to deprecate Docker as their preferred container runtime environment.
In the DevOps community Docker is considered as a backbone when it comes to virtualization and since the inception of Kubernetes in the DevOps community Docker has been the preferred choice by the developer community.</description></item><item><title>Convert Kubernetes deployment YAML into Helm Chart YAML</title><link>https://jhooq.com/convert-kubernetes-yaml-into-helm/</link><pubDate>Thu, 26 Nov 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/convert-kubernetes-yaml-into-helm/</guid><description>
Convert kubernetes yamls into Helm chart In this article we are going to look how can we convert Kubernetes YAMLs into Helm Chart YAMLs.
Objective 1 : - At first we are going to create simple Kubernetes deployment(k8s-deployment.yaml)` and in that deployment we are going to deploy a microservice application.
Objective 2 : - Secondly we are going to `create service(k8s-service.yaml) for exposing the deployment as a service on NodePort.</description></item><item><title>Helm chart - Wordpress Installation with MariaDB on Kubernetes</title><link>https://jhooq.com/helm-chart-wordpress-installation/</link><pubDate>Thu, 26 Nov 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/helm-chart-wordpress-installation/</guid><description>
Wordpress Helm Chart Installation In this tutorial, we are going to install WordPress with MariaDB using the Helm Chart on Kubernetes cluster. With this installation, we are going to see - How we can upgrade as well as rollback the Helm Chart release of WordPress. This complete setup inherited the benefits of the Kubernetes .i.e. scalability and availability.
Since we are installing WordPress, so we need to have a database running behind the WordPress application.</description></item><item><title>Helm chart - How to Add/Install plugins</title><link>https://jhooq.com/helm-chart-plugin/</link><pubDate>Fri, 20 Nov 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/helm-chart-plugin/</guid><description>
Helm is feature rich framework for Kubernetes and it has one more pluggable feature know as Plugins. Helm Charts are build on the principle of pluggable component.
Hence Helm community maintains lots of additional plugin to ease out day to day operations.
You can check list of plugins here - Helm Chart Plugins
In this article we are going to focus on Helm diff plugin.
Table of Content Lets talk about - Helm Diff Plugin Lets install the Helm Diff plugin Lets play with Helm Diff Command Run Helm Diff command Uninstall the plugin Uninstall the plugin any deployment and service inside the Kubernetes cluster 1.</description></item><item><title>Getting Started with Helm Chart</title><link>https://jhooq.com/getting-start-with-helm-chart/</link><pubDate>Sat, 07 Nov 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/getting-start-with-helm-chart/</guid><description>
Helm charts are configuration ymls which are used for managing the Kubernetes resources.
In the production environment where you are managing lots of Kubernetes resources then Helm Chart can be very helpful to manage those Kubernetes resources because managing each Kubernetes resource can be a little cumbersome and daunting task.
In this article, we will start from very basic -
Table of Content Install Helm Chart Writing your first Helm Chart for Hello World Helm: Adding upstream repositories 1.</description></item><item><title>CI/CD Kubernetes | Setting up CI/CD Jenkins pipeline for kubernetes</title><link>https://jhooq.com/ci-cd-jenkins-kubernetes/</link><pubDate>Tue, 20 Oct 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/ci-cd-jenkins-kubernetes/</guid><description>
In this article we are going to focus on Setting up CI/CD Jenkins pipeline for kubernetes. We will be using GitHub, Docker, DockerHub, Jenkins and Kubernetes Cluster to achieve this.
For the complete lab session we are going to setup every component from scratch and for that we will be using Vagrant for provisioning the virtual environment. All the VMs will use Ubuntu as its base operating system.
Pre-Requisite Vagrant Virtual Box IDE(Sublime, Atom, or Visual Studio) Kubernetes Cluster (We need kubernetes cluster already setup - If you do not have kubernetes cluster then please do follow this lab session for setting it up - Kubernetes Cluster Setup) 1.</description></item><item><title>Kubernetes cluster setup with Jenkins</title><link>https://jhooq.com/kubernetes-Jenkins-and-spring-boot/</link><pubDate>Thu, 24 Sep 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/kubernetes-Jenkins-and-spring-boot/</guid><description>
In the DevOps world if you do not talk about Jenkins, Continuous Integration, and Continuous Delivery then you are missing a big chunk of it and with the inception of Kubernetes DevOps has grown its territory by 10 folds.
In this article, we are going to integrate -
Jenkins Kuberneteshttps Pre-Requisite Vagrant Virtual Box IDE(Sublime, Atom, or Visual Studio) 1. Spin-up the vagrant box Vagranfile The first and the far most we need a Kubernetes cluster and for that we need a virtual machine.</description></item><item><title>Spring Boot Microservices with Docker | Dockerfile |docker-compose.yml</title><link>https://jhooq.com/spring-boot-with-docker/</link><pubDate>Sun, 06 Sep 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/spring-boot-with-docker/</guid><description>
This article is targeted for those who want to learn more about docker and How they can integrate Docker with their existing applications.
The base application we are going to take is a Spring Boot Application. The spring Boot application will be very simple with one Microservice for “Hello World”.
Contents Creating your first Spring Boot Application Create a very basic Docker Image and run the Spring Boot Application from Docker Finally, upload Spring Boot Docker Image to hub.</description></item><item><title>How to use Persistent Volume and Persistent Claims | Kubernetes</title><link>https://jhooq.com/how-to-use-persistent-volume-and-persistent-claims-kubernetes/</link><pubDate>Sun, 30 Aug 2020 20:56:28 +0000</pubDate><guid>https://jhooq.com/how-to-use-persistent-volume-and-persistent-claims-kubernetes/</guid><description>
Working with kubernetes is always fun as well as challenging. The more you dive deep into the kubernetes ecosystem the more you learn.
It always bugged me when I started working with kubernetes that - How can I retain the data after the end of pod life cycle?
Answer is -
Kubernetes Persistent Volume and Persistent claims help you to retain the data of the pod even after the end of the pod life cycle</description></item><item><title>How to fix ProvisioningFailed persistentvolume controller no volume plugin matched</title><link>https://jhooq.com/persistent-volume-no-volume-plugin-matched/</link><pubDate>Thu, 27 Aug 2020 17:50:17 +0000</pubDate><guid>https://jhooq.com/persistent-volume-no-volume-plugin-matched/</guid><description>
Well If you ended up on this article then just like me you are also facing the Warning no volume plugin matched inside your Kubernetes cluster.
Warning ProvisioningFailed persistentvolume-controller no volume plugin matched Before you read further let me ask you a question Are you trying to set up the Dynamic Volume Provisioning on Local Virtual environment?
If your answer is YES then unfortunately Kubernetes does not support it.</description></item><item><title>Fixing – Cannot bind to requested volume: storageClasseName does not match</title><link>https://jhooq.com/storage-classe-name-does-not-match/</link><pubDate>Mon, 24 Aug 2020 17:33:16 +0000</pubDate><guid>https://jhooq.com/storage-classe-name-does-not-match/</guid><description>
I faced this issue when I started working with kuberenetes Persistent Volume and Kuberenetes Persistent Claim
This issue has occurred because its expecting storageClass to be present inside your kubernetes. Most probably you might have missed creating storageClass or you might have used the wrong storageClass name in your Persistent Volume Claim Configuration
You might have seen Warning ProvisioningFailed persistentvolume-controller storageclass.storage.k8s.io not found
Here is the full stacktrace of the error -</description></item><item><title>Fixing – pod has unbound immediate persistentvolumeclaims or cannot bind to requested volume incompatible accessmode</title><link>https://jhooq.com/pod-has-unbound-immediate-persistent-volume-claims/</link><pubDate>Sun, 23 Aug 2020 19:05:01 +0000</pubDate><guid>https://jhooq.com/pod-has-unbound-immediate-persistent-volume-claims/</guid><description>
There could be multiple reasons behind this issue. But before we jump to the solution, first let us see how to identify the issue -
How to identify the issue? Once you identify the issue then here are the possible solutions - Mismatch in the accessModes of Persistent Volume and Persistent Volume Claim PV(Persistent Volume) capacity is less than PVC(Persistent Volume Claim) Total number of PVC(Persistent Volume Claim) is higher than PV(Persistent Volume) nodeAffinity of the PV is missing Clean up the OLD PV(Persistent Volume) and PVC(Persistent Volume Claim) How to identify the issue?</description></item><item><title>Docker COPY vs Docker ADD?</title><link>https://jhooq.com/docker-copy-vs-docker-add/</link><pubDate>Fri, 14 Aug 2020 19:38:32 +0000</pubDate><guid>https://jhooq.com/docker-copy-vs-docker-add/</guid><description>
Since the inception of the docker, it has undoubtedly eased the application development for developers like us. With Docker, you no longer bounded with Operating system, architecture, frameworks, and compatibility.
With docker you can pretty much prepare your development environment with required libs and avoiding unnecessary stuffing of other libraries.
But with growing popularity of docker some docker commands makes me confuse such COPY and ADD
In the nutshell both COPY and ADD commands behave the same but still I felt a significant difference between these commands.</description></item><item><title>How to fix - nginx ingress controller crashloopbackoff error</title><link>https://jhooq.com/nginx-ingress-controller-crashloopbackoff-error/</link><pubDate>Tue, 11 Aug 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/nginx-ingress-controller-crashloopbackoff-error/</guid><description>
I faced this issue while I was trying to install the nginx ingress controller along with HAproxy loadbalancer on my kuberentes cluster.
To be honest I had this issue because I missed to create config map during the setup.
But there could be many reasons behind this issue. We will take each possible scenario and look at how to fix this issue.
1. nginx ingress controller crashloopbackoff error exit code 255 This was the first error which I got when I was trying to setup the HAProxy loadbalancer along with Nginx ingress controller on my kubernetes cluster.</description></item><item><title>6 Ways to fix - Got permission denied while trying to connect to the Docker daemon socket?</title><link>https://jhooq.com/permission-denied-docker-daemon/</link><pubDate>Sun, 02 Aug 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/permission-denied-docker-daemon/</guid><description>
I faced this issue couple of times and both times I had the same error but with different error messages text. The first error message which I got was -
docker Got permission denied while trying to connect to the Docker daemon socket at unix the second time I got the error message - Can not connect to docker daemon. Is docker -d running on this host?. But in the end, both are the same issues, in this article I have written down the different approaches which I have taken to troubleshoot this issue.</description></item><item><title>Setting up Ingress controller NGINX along with HAproxy for Microservice deployed inside Kubernetes cluster</title><link>https://jhooq.com/ingress-controller-nginx/</link><pubDate>Thu, 30 Jul 2020 08:42:10 +0000</pubDate><guid>https://jhooq.com/ingress-controller-nginx/</guid><description>
Setting up Ingress controller NGINX along with HAproxy for Microservice deployed inside Kubernetes cluster Working with kubernetes and managing the external traffic is like juggling more than two balls. All cloud service provider (GCP,AWS, Openshift, Digital Ocean) comes with their own load balancer which can help us exposing internal service deployed inside kubernetes cluster to the external world.
Exposing the services deployed within kubernetes cluster over Loadbalancer with external IP is really easy but considering the production use case -</description></item><item><title>Building first Helm Chart with Spring Boot Microservices</title><link>https://jhooq.com/building-first-helm-chart-with-spring-boot/</link><pubDate>Wed, 15 Jul 2020 21:08:41 +0000</pubDate><guid>https://jhooq.com/building-first-helm-chart-with-spring-boot/</guid><description>
When someone talks about managing the kubernetes cluster then I can very much assume that a particular someone is running a lot of kubectl, kubeadm command on terminal and which is quite obvious because managing kubernetes cluster is not as easy as it seems to be.
Managing kubernets cluster means checking cluster, pods, nodes, application deployment, replicas, load-balancer and the list goes one. So the question which arises in my mind -</description></item><item><title>How to fix kubernetes dashboard forbidden 403 error – message services https kubernetes-dashboard is forbidden User</title><link>https://jhooq.com/message-services-https-kubernetes-dashboard-is-forbidden-user/</link><pubDate>Tue, 30 Jun 2020 13:18:21 +0000</pubDate><guid>https://jhooq.com/message-services-https-kubernetes-dashboard-is-forbidden-user/</guid><description>
The objective of this article is to troubleshoot the https kubernetes-dashboard is forbidden error which you might have encountered after setting up the kubernetes dashboard but while trying to access it via browser it is throwing you forbidden error message.
This blog is divided into two section -
The actual kubernetes dashboard forbidden error Root Cause How to Troubleshoot 1. The actual kubernetes dashboard forbidden error Let me get straight to the point - You are trying to setup Kubernetes dashboard.</description></item><item><title>How to fix Kubernetes – error execution phase preflight [preflight]</title><link>https://jhooq.com/kubernetes-error-execution-phase-preflight-preflight/</link><pubDate>Tue, 16 Jun 2020 10:23:04 +0000</pubDate><guid>https://jhooq.com/kubernetes-error-execution-phase-preflight-preflight/</guid><description>
While working with kubernetes somewhere down the line you might have faced this error and there could be many reasons behind the issue error execution phase preflight
With my experience in working with kubernetes I found that this issue mostly occurs when you are trying to setup kubernetes cluster on your own and since you are setting it up by yourself than I can easily guess that you might miss a lot of technicalities and end up with this issue.</description></item><item><title>Deploy Spring Boot microservices on kubernetes?</title><link>https://jhooq.com/deploy-spring-boot-microservices-on-kubernetes/</link><pubDate>Wed, 10 Jun 2020 19:05:13 +0000</pubDate><guid>https://jhooq.com/deploy-spring-boot-microservices-on-kubernetes/</guid><description>
TL;DR: This is going to be long post and the objective of this blog post is to deploy Spring Boot Microservice into the kubernetes cluster.
The main objective here is to build everything from scratch and what I mean by that - creating a Spring Boot Application RestMicroservice, Building a Docker image and Finally deploying docker image into the kubernetes cluster. Here are the steps which we will go through -</description></item><item><title>How to fix – ansible_memtotal_mb minimal_master_memory_mb</title><link>https://jhooq.com/how-to-fix-ansible-memtotal-mb-minimal-master-memory-mb/</link><pubDate>Mon, 11 May 2020 19:54:59 +0000</pubDate><guid>https://jhooq.com/how-to-fix-ansible-memtotal-mb-minimal-master-memory-mb/</guid><description>
ansible_memtotal_mb = minimal_master_memory_mb I faced this issue during Kubernetesinstallation using kubespray. If you are facing a similar issue with your ansible-playbook then it is time to increase the memory of your VMs
For kubernetes installation using kubespray, please refer to kubespray – 12 Steps for Installing a Production Ready Kubernetes Cluster
Root Cause - Ansible need more memory for running playbook on your linux machine.</description></item><item><title>How to use kubespray – 12 Steps for Installing a Production Ready Kubernetes Cluster</title><link>https://jhooq.com/kubespray-12-steps-for-installing-a-production-ready-kubernetes-cluster/</link><pubDate>Mon, 11 May 2020 18:56:21 +0000</pubDate><guid>https://jhooq.com/kubespray-12-steps-for-installing-a-production-ready-kubernetes-cluster/</guid><description>
Before we jump into the steps of installation, if you are familiar with Puppet, Chef and Ansible (https://github.com/kubernetes-incubator/kubespray) then kubespray is going to be the best choice to set up a Kubernetes cluster. In this article, we will be going through 12 steps starting from setting up vagrant VMs till running the final ansible-playbook.
Disclaimer - If you are a beginner with kubernetes then i would highly recommend to go through the manual installation of kubernetes on Ubuntu or CentOS and for the same you can refer to -</description></item><item><title>How to setup kubernetes on CentOS 8 and CentOS 7</title><link>https://jhooq.com/15-steps-to-install-kubernetes-on-bento-centos7/</link><pubDate>Sat, 02 May 2020 11:32:10 +0000</pubDate><guid>https://jhooq.com/15-steps-to-install-kubernetes-on-bento-centos7/</guid><description>
This tutorial is for the ones who want to try out the Kubernetes installation on CentOS
(This blog post has been updated and kubernetes installation instructions can be used for CentOS 7 as well as CentOS 8).
In this article, I have simplified the installation into 15 steps for installing Kubernetes on CentOS bento/centos-7 and centos/stream8
Before you begin with installation here are prerequisites for installing Kubernetes on CentOS.
Prerequisites Reading time is about 20 minutes Vagrant 2.</description></item><item><title>6 Ways to fix : SSL certificate problem: self signed certificate in certificate chain</title><link>https://jhooq.com/2-ways-to-fix-ssl-certificate-problem-self-signed-certificate-in-certificate-chain/</link><pubDate>Fri, 01 May 2020 09:26:34 +0000</pubDate><guid>https://jhooq.com/2-ways-to-fix-ssl-certificate-problem-self-signed-certificate-in-certificate-chain/</guid><description>
You can end with SSL certificate problem: self signed certificate in certificate chain in multiple cases but with my experience these are the most common scenario (Click on individual scenarios for more details) -
Scenario 1 - Git Clone - Unable to clone remote repository: SSL certificate problem: self signed certificate in certificate chain Scenario 2 - Vagrant Up - SSL certificate problem: self signed certificate in certificate chain Scenario 3 - Node.</description></item><item><title>How to fix – How to fix - ERROR Swap running with swap on is not supported. Please disable swap</title><link>https://jhooq.com/how-to-fix-error-swap-running-with-swap-on-is-not-supported-please-disable-swap-error-execution-phase-preflight-preflight-some-fatal-errors-occurred/</link><pubDate>Fri, 24 Apr 2020 08:01:52 +0000</pubDate><guid>https://jhooq.com/how-to-fix-error-swap-running-with-swap-on-is-not-supported-please-disable-swap-error-execution-phase-preflight-preflight-some-fatal-errors-occurred/</guid><description>
The root cause for the error is swapping is on master as well as worker node.
Fixing the error Step 1 - Disable the swap on both master and worker node (please run the below command on both master and worker node)
1vagrant@master:~$ sudo swapoff -a Step 2 - After disabling the swap, re-run the kubeadm init
1vagrant@master:~$ sudo kubeadm init --apiserver-advertise-address=100.0.0.1 --pod-network-cidr=10.244.0.0/16 After that you should be able to initialize the kubernetes cluster successfully</description></item><item><title>14 Steps to Install kubernetes on Ubuntu 20.04(bento/ubuntu-20.04), 18.04(hashicorp/bionic64)</title><link>https://jhooq.com/14-steps-to-install-kubernetes-on-ubuntu-18-04-and-16-04/</link><pubDate>Fri, 24 Apr 2020 00:00:00 +0000</pubDate><guid>https://jhooq.com/14-steps-to-install-kubernetes-on-ubuntu-18-04-and-16-04/</guid><description>
(Note : - This article has been updated for installing kubernetes on ubuntu 20.04)
In this article on How to Install kubernetes on Ubuntu 20.04 and18.04 we are going to setup Kubernetes cluster along with kubeadm on Ubuntu 20.04 (The same steps can be used for the Ubuntu 18.04 as well as 16.04)
We will start setting up everything from the scratch on virtual machine. Since we are setting up kubernetes cluster, so we will be provisioning two virtual machine - kubernetes master(kmaster) and kubernetes kworker(kworker).</description></item><item><title>Quarkus Security Securing rest api with HTTPS</title><link>https://jhooq.com/quarkus-securing-rest-api-with-https/</link><pubDate>Wed, 15 Apr 2020 19:54:16 +0000</pubDate><guid>https://jhooq.com/quarkus-securing-rest-api-with-https/</guid><description>
Quarkus is no doubt one the most super-fast framework for developing the Cloud Native java application.
If you have worked with Spring Boot application than I think you are gonna love Quarkus because of its simplicity, super-fast boot time and extremely low memory usage.
For the beginner, I would highly recommend going through my article
Getting started with Quarkus | Quarkus Tutorial All right now what we are gonna do Create a simple REST endpoint application using JAVA, JAX-RS, and Quarks Securing the REST endpoint with HTTPS Enough with the intro but the next questions comes into our mind Why we need to secure our REST endpoint?</description></item><item><title>java.lang.IllegalStateException: JWTAuthContextInfo has not been initialized. Please make sure that either ‘mp.jwt.verify.publickey’ or ‘mp.jwt.verify.publickey.location’ properties are set</title><link>https://jhooq.com/jwtauthcontextinfo-has-not-been-initialized/</link><pubDate>Mon, 06 Apr 2020 08:54:26 +0000</pubDate><guid>https://jhooq.com/jwtauthcontextinfo-has-not-been-initialized/</guid><description>
It is quite evident from the exception (java.lang.IllegalStateException: JWTAuthContextInfo has not been initialized) that your are missing following key properties inside your application.properties
1mp.jwt.verify.publickey.location or
1mp.jwt.verify.publickey Resolution Step 1 : Define mp.jwt.verify.publickey.location To fix this issue you need to define mp.jwt.verify.publickey.location inside of your application.properties
1mp.jwt.verify.publickey.location=keystore/keystore.jks Step 2 : Generate self signed certificate Use the JDK keystore utility to generate a self signed certificate
1keytool -genkey -keyalg RSA -alias quarkusdemo -keystore keystore.</description></item><item><title>Run Quarkus inside docker | Dockerizing a Quarkus Application</title><link>https://jhooq.com/run-quarkus-inside-docker-container/</link><pubDate>Thu, 26 Mar 2020 14:54:50 +0000</pubDate><guid>https://jhooq.com/run-quarkus-inside-docker-container/</guid><description>
Run Quarkus inside docker container This article will guide you through building Docker image for Quarkus application and to run Quarkus application inside the docker container.
What you are building You are building docker image for Quarkus. Docker is a lightweight Linux container for running applications in a containerized model. In this article we are focusing on building docker image first. After the successful image build we are going to run Quarkus inside Docker container.</description></item><item><title>6 Ways to fix – Docker COPY failed: stat no source files were specified</title><link>https://jhooq.com/docker-copy-failed-no-source-files-were-specified/</link><pubDate>Wed, 18 Mar 2020 18:32:33 +0000</pubDate><guid>https://jhooq.com/docker-copy-failed-no-source-files-were-specified/</guid><description>
Docker COPY failed: stat no source files were specified This error I would consider one of the most basic errors which any developer can face during the initial days of Docker learning and the error Docker COPY failed: stat no source files were specified or docker copy failed no such file or directory is caused when docker copy command is not able to copy files from the build context into your image.</description></item><item><title>Getting started with Quarkus |Quarkus Tutorial</title><link>https://jhooq.com/getting-started-with-quarkus/</link><pubDate>Fri, 13 Mar 2020 22:44:01 +0000</pubDate><guid>https://jhooq.com/getting-started-with-quarkus/</guid><description>
(*Note - This article has been updated and tested on the latest version of Quarkus 1.13.6)
If you are new to Qurakus then this article will help you in Getting Started with Quarkus. In this article of Getting started with Quarkus |Quarkus Tutorial, we will be developing a Hello World RestEnd Point application as well as testing the Hot Reload feature provided by the Quarkus.
What is Quarkus? Supersonice Subatomic Java and its a Java stack from Kubernetes(k8s) native.</description></item><item><title>Kubernetes Dashboard | Kubernetes Admin GUI | Kubernetes Desktop Client</title><link>https://jhooq.com/setting-up-kubernetes-dashboard/</link><pubDate>Mon, 17 Jun 2019 21:03:37 +0000</pubDate><guid>https://jhooq.com/setting-up-kubernetes-dashboard/</guid><description>
Kubernetes comes really handy with its Kubernetes Dashboard| Kubernetes Admin GUI|Kubernetes Desktop Client.
kubernetes dashboard is a general purpose web-based UI for managing the Kubernetes cluster.
With the help of Kubernetes dashboard you can manage applications running in the cluster as well as it can help you to debug as well.
In this article we will focus on setting up Kubernetes Dashboard| Kubernetes Admin GUI|Kubernetes Desktop Client
On Minikube On Kubernetes Local cluster On Google Kubernetes Engine using Google Cloud Platform 1.</description></item><item><title>Install Kubernetes with Minikube</title><link>https://jhooq.com/kubernets-and-minikube/</link><pubDate>Sun, 09 Jun 2019 21:34:12 +0000</pubDate><guid>https://jhooq.com/kubernets-and-minikube/</guid><description>
This article on Install Kubernetes with Minikube will walk you through the steps which is required to install and setup kubernetes and minikube on your development box.
Kubernetes is an open-source platform which helps in managing containers which is used to deploy the applications, with kubernetes you can scale and automate the deployment process.
Minikube– Well it can be said mini kubernetes because it runs on development machine not in production.</description></item><item><title>Hadoop File Already Exists Exception : org.apache.hadoop.mapred.FileAlreadyExistsException</title><link>https://jhooq.com/hadoop-file-already-exists-exception/</link><pubDate>Fri, 24 May 2019 20:54:13 +0000</pubDate><guid>https://jhooq.com/hadoop-file-already-exists-exception/</guid><description>
Aim behind writing this article is to make developers aware about the issue which they might face while developing the MapReduce application. Well the above error org.apache.hadoop.mapred.FileAlreadyExistsException is one of the most basic exception which every beginner face while writing their first map reduce program.
1Exception in thread main org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/home/facebook/crawler-output already exists 2at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:146) 3at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:269) 4at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:142) 5at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290) 6at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287) 7at java.security.AccessController.doPrivileged(Native Method) 8at javax.security.auth.Subject.doAs(Subject.java:415) 9at org.</description></item><item><title>Using spring-boot-devtools in Spring Boot application</title><link>https://jhooq.com/spring-boot-devtools/</link><pubDate>Sun, 19 May 2019 23:45:12 +0000</pubDate><guid>https://jhooq.com/spring-boot-devtools/</guid><description>
When ever we talk about the Spring Boot then its always about the simplicity of the spring boot application.
With spring-boot-devtools the development task has become more enjoyable and productive. In this artivle we will be talking about Restart feature which come very handy with spring-boot-devtools.
Why do we need spring-boot-devtools?
Spring-boot-devtools provides two ways to restart your boot application : -
Build Project - When ever you build your project spring boot take care of restart trigger-file - Restart your boot application when there is change in a file In this article we will be focusing on both the ways to restart your boot application.</description></item><item><title>How to use Hibernate 5 | Tutorial</title><link>https://jhooq.com/hibernate-5/</link><pubDate>Sat, 19 Jan 2019 20:32:09 +0000</pubDate><guid>https://jhooq.com/hibernate-5/</guid><description>
Here in this post we will be looking into the basic setup of Hibernate 5 with maven.
In this tutorial we will be using -
Maven JDK 1.8**** Hibernate 5 MySQL You can also download/clone the complete workspace from GitHub : - https://github.com/rahulwagh/hibernate5.git
If you are not able to clone the repository than download the complete workspace and import in eclipse using following instruction.
Here in this post we will try to insert an employee entry into the employee table which we have created.</description></item></channel></rss>