# Jenkins/Docker/Terraform/Git - Complete Data

## **Jenkins :-**

**Prerequisites**

* **Operating System**: Linux, Windows, macOS
    
* **Hardware**: Minimum 256 MB RAM, 1 GB+ recommended
    
* **Java**: Java 8 or later (Java 11 is recommended)
    

**Version**

* The latest Long-Term Support (LTS) version is recommended. As of now, it's Jenkins 2.387.2.
    

**Methodology**

* Continuous Integration (CI) and Continuous Delivery (CD)
    

**Architecture**

* **Master-Agent Architecture**:
    
    * **Master**: Manages tasks like scheduling build jobs, dispatching builds to agents, and monitoring agents.
        
    * **Agent**: Executes the builds.
        

**Workflow**

* **Pipeline**: Defines the steps of your build process using a DSL (Domain-Specific Language) in a Jenkinsfile.
    

**Stateful or Stateless**

* **Stateful**: Maintains state through configuration and job histories stored on disk.
    

**Agent or Agent-less**

* **Agent-based**: Requires Jenkins agents (nodes) to execute build jobs.
    
    ---
    

## **Docker :**

**Prerequisites**

* **Operating System**: Linux, Windows 10/11, macOS
    
* **Hardware**: 64-bit processor, 4 GB RAM minimum
    
* **Software**: Containerization support (Hyper-V for Windows, Hypervisor for macOS)
    

**Version**

* The latest stable version of Docker Engine (20.10+).
    

**Methodology**

* Containerization
    

**Architecture**

* **Client-Server Architecture**:
    
    * **Docker Client**: Sends requests to the Docker Daemon.
        
    * **Docker Daemon**: Manages Docker objects (images, containers).
        

**Workflow**

* **Dockerfile**: Defines the steps to build Docker images.
    
* **Commands**: docker build, docker run, docker-compose.
    

**Stateful or Stateless**

* **Stateless**: Containers are typically stateless; state persistence requires volumes.
    

**Agent or Agent-less**

* **Agent-less**: Docker does not require agents for container orchestration on a single host but may use tools like Kubernetes for multi-host orchestration.
    
    ---
    

## **Terraform:**

**Prerequisites**

* **Operating System**: Linux, Windows, macOS
    
* **Software**: None, as Terraform is a standalone binary.
    

**Version**

* The latest stable version, often around 1.4+.
    

**Methodology**

* Infrastructure as Code (IaC)
    

**Architecture**

* **Command-Line Interface (CLI)**:
    
    * **Backend**: Stores state, performs operations.
        
    * **Providers**: Manage resources from various platforms.
        

**Workflow**

* **Configuration Files**: Written in HCL (HashiCorp Configuration Language).
    
* **Commands**: terraform init, terraform plan, terraform apply.
    

**Stateful or Stateless**

* **Stateful**: Maintains state files to track infrastructure changes.
    

**Agent or Agent-less**

* **Agent-less**: Executes operations directly via API calls.
    
    ---
    

## **Git:**

**Prerequisites**

* **Operating System**: Linux, Windows, macOS
    
* **Software**: None, Git is a standalone binary.
    

**Version**

* The latest stable release, typically 2.40+.
    

**Methodology**

* Version Control System (VCS)
    

**Architecture**

* **Distributed Architecture**:
    
    * Each clone of the repository contains the full history.
        

**Workflow**

* **Branching and Merging**: Create branches, commit changes, and merge branches.
    
* **Commands**: git clone, git commit, git push, git merge.
    

**Stateful or Stateless**

* **Stateful**: Repositories maintain a full history of changes.
    

**Agent or Agent-less**

* **Agent-less**: Operates as a distributed system without the need for agents.
    

**Summary**

Each tool serves a distinct purpose and fits into different stages of software development and deployment:

* **Jenkins**: CI/CD, Stateful, Agent-based
    
* **Docker**: Containerization, Stateless (typically), Agent-less (single host)
    
* **Terraform**: Infrastructure as Code, Stateful, Agent-less
    
* **Git**: Version Control, Stateful, Agent-less
    

This overview highlights the key characteristics of Jenkins, Docker, Terraform, and Git, providing a solid foundation for understanding their roles and how to work with them effectively.
