


Jun 19, 2025
Efficiency and speed are crucial for any modern software development project. DevOps, a philosophy that unites development and operations, helps organizations achieve these goals by enabling teams to deliver high-quality software faster and more reliably through automation, fostering collaboration, and streamlining the software pipeline.
This guide explores the top five essential DevOps tools that are the foundation of any DevOps toolkit: Git, Jenkins, Docker, Kubernetes, and Ansible. We'll delve into the core functionalities of each tool and provide you with the essential commands to get started. Mastering these tools will lead you to embrace a DevOps mindset and contribute to a more efficient and streamlined software delivery process.
1. Git
-
Version Control: Tracks changes in code over time, allowing developers to collaborate and revert to previous versions if needed.
-
Branching & Merging: Enables parallel development by creating isolated branches for features or bug fixes and seamlessly integrates them into the main codebase.
-
Distributed Version Control System (DVCS): Unlike central repositories, Git allows developers to have a complete copy of the codebase, facilitating offline work and decentralized collaboration.
Initializes a new Git repository in your current directory.
git init
Clones an existing Git repository from a remote server (e.g., GitHub) to your local machine.
git clone <url>
Adds a specific file to the staging area for the next commit.
git add <file>
Commits the staged changes with a descriptive message
git commit -m "Your message"
Pushes your local commits to the remote repository's specified branch (e.g., origin)
git push origin <branch_name>
2. Jenkins
-
Continuous Integration (CI): Automates building, testing, and code packaging after every commit. This catches bugs early and ensures code quality.
-
Plugins: Offers a vast library of plugins for tasks like code analysis, static code security testing, and deployment automation.
-
Pipeline as Code (PaC): Defines the CI/CD pipeline steps in configuration files (e.g., Jenkinsfile), allowing for version control and reproducibility.
Starts the Jenkins server on your local machine
Jenkins
Triggers a manual build of a specific job defined in Jenkins
jenkins build <job_name>
Restarts the Jenkins server after making configuration changes
jenkins restart
Logs into the Jenkins web interface with your credentials.
jenkins login -u <username> -p <password>
Creates a new Jenkins job using a configuration file written in Job DSL (Groovy-based syntax).
jenkins job-dsl create-job <job_name> <job_config_file>
Note: Jenkins is one of the many continuous integration (CI) tools available, including TeamCity, Bamboo, and CircleCI. We prefer using Jenkins because of its extensive feature set. Still, each tool excels in different areas, and you can consider the tool with which your development team is most familiar.
3. Docker
-
Containerization: Packages your application with all its dependencies (libraries, binaries) into a lightweight, portable unit called a container.
-
Isolation: Containers run in isolation from each other and the host system, ensuring consistent behavior across different environments.
-
Docker Hub: A public registry for sharing and discovering pre-built Docker images, saving development time and promoting standardization.
Runs a container from a specified Docker image.
docker run <image_name>
Lists all running containers.
docker ps
Stops a running container.
docker stop <container_id>
Pulls an image from a Docker registry (e.g., Docker Hub) to your local machine
docker pull <image_name>
Builds a Docker image from a Dockerfile in your current directory
docker build -t <image_name>
4. Kubernetes
-
Container Orchestration: Manages the deployment, scaling, and networking of containerized applications across a cluster of machines.
-
Self-Healing: Automatically restarts failed containers and reschedules them on healthy nodes, ensuring high application availability.
-
Service Discovery: Makes containerized services discoverable by each other within the cluster, simplifying communication and service dependencies.
Retrieves information about all pods running in the Kubernetes cluster.
kubectl get pods
Applies a deployment configuration file (e.g., deployment.yaml) to deploy your application to the cluster.
kubectl apply -f <deployment.yaml>
Lists all services running in the cluster.
kubectl get services
Scales the number of replicas for a specific deployment.
kubectl scale deployment <deployment_name> --replicas=<number>
Deletes a deployment from the cluster.
kubectl delete deployment <deployment_name>
5. Ansible
-
Infrastructure as Code (IaC): Defines infrastructure configuration (servers, networks, security) in human-readable code (e.g., YAML).
-
Idempotence: Ensures configurations are applied only once, even on reruns, preventing unintended changes.
-
Modules: Offers a rich library of pre-built modules for configuring various operating systems, cloud platforms, and network devices
Runs a playbook (Ansible configuration file) to automate tasks on your infrastructure.
ansible-playbook playbook.yaml
Pings all managed hosts in your inventory file to check connectivity.
ansible all -m ping
Updates package lists on a specific host group (e.g., webservers).
ansible <host_group> -m apt update
Copies a file from your local machine to a specific host.
ansible <host> -m copy src=source_file dest=destination_path
Starts a system service on a group of hosts.
ansible <host_group> -m service name=service_name state=started
Wrapping Up
By mastering these tools, you'll gain the power to automate manual tasks, ensure consistent environments, and accelerate software delivery. This is just a glimpse into their capabilities; each tool offers a vast ecosystem of features to explore and master as you delve deeper into DevOps.
At Oshyn, we provide DevOps services for Adobe, Sitecore, and Optimizely, helping organizations enhance their reliability and security while achieving a faster time-to-market. Contact us to learn more about our DevOps capabilities.
Related Insights
-
-
-
Leonardo Bravo
Optimizing Your AWS Bill
Rightsizing, Scaling, and Scheduling for Efficiency
-
-
-