Table of contents
Welcome to Day 7 of the #90DaysOfDevOps challenge. In today's challenge, we will explore package managers on Linux, learn about the powerful
systemctl command, and understand the role of
systemd in managing system services. Let's dive into these topics and enhance our understanding of package management and service management on Linux.
Package Managers on Linux
Package managers are essential tools for installing, updating, and removing software packages on Linux distributions. They provide a centralized repository of packages and handle dependencies, ensuring smooth and efficient software installation.
APT (Advanced Package Tool)
APT (Advanced Package Tool) is a widely used package management system, primarily used in Debian-based distributions such as Ubuntu. It offers a user-friendly command-line interface to interact with the package management system.
With APT, you can perform various operations, including package installation, update, and removal. APT automatically resolves dependencies, ensuring that all required packages are installed correctly.
YUM (Yellowdog Updater Modified)
YUM (Yellowdog Updater Modified) is another popular package management system used in Red Hat-based distributions like CentOS. It simplifies software package management and dependency handling.
YUM provides a command-line interface for managing packages. You can search for packages, install, update, and remove them using the YUM commands. It takes care of resolving package dependencies, ensuring a smooth installation process.
Both APT and YUM greatly simplify the process of managing software packages, making it efficient and hassle-free for DevOps engineers working on different Linux distributions.
Systemctl and Systemd
Systemctl is a command-line utility used to manage system services in Linux distributions that adopt the
systemd init system.
Systemd is a system and service manager that provides advanced features such as process management, logging, and service dependencies.
Systemd replaces the traditional
SysV init system and offers enhanced functionality and control over system services. It enables parallel service startup, efficient dependency management, and better monitoring and logging capabilities.
Key concepts related to
Systemduses service units, which are configuration files with a
.serviceextension, to define and manage services. These units describe the properties and behaviour of a service.
Systemctloffers commands like
disableto manage services. These commands allow you to control the lifecycle and behaviour of services on your system.
System Status: You can use
systemctl statusto obtain detailed information about a service, including its current status, enabled or disabled state, and recent log entries. This feature facilitates troubleshooting and monitoring of services.
systemd provides a modern and efficient approach to service management on Linux systems. They offer greater control, flexibility, and consistency in managing services, making it easier for DevOps engineers to handle various service-related tasks.
Task 1: Installing Docker and Jenkins Using Package Managers
Let's now put our knowledge of package managers into action by installing Docker and Jenkins on Ubuntu using package managers.
Installing Docker on Ubuntu
To install Docker on Ubuntu using APT, follow these steps:
Set up the repository
aptpackage index and install packages to allow
aptto use a repository over HTTPS:
sudo apt-get update sudo apt-get install ca-certificates curl gnupg
Add Docker’s official GPG key:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
Use the following command to set up the repository:
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Install Docker Engine, containerd, and Docker Compose.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
Installing Jenkins on Ubuntu using APT
To install Jenkins on Ubuntu using APT, follow these steps:
Jenkins requires Java to run, so we'll update the Debian apt repositories, install OpenJDK 11, and check the installation with the commands:
sudo apt update sudo apt install openjdk-11-jre java -version openjdk version "11.0.12" 2021-07-20 OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2) OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2, mixed mode, sharing)
Next, let’s install the Jenkins Long-Term Support release by using the below commands:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \ /usr/share/keyrings/jenkins-keyring.asc > /dev/null echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \ https://pkg.jenkins.io/debian-stable binary/ | sudo tee \ /etc/apt/sources.list.d/jenkins.list > /dev/null sudo apt-get update sudo apt-get install jenkins
Start the Jenkins service:
sudo systemctl start jenkins
Enable Jenkins to start on system boot:
sudo systemctl enable jenkins
Jenkins should now be installed and running on your Ubuntu system. You can access it by opening your web browser and navigating to
Task 2: Checking the Status of the Docker Service
Now that Docker is installed, let's check the status of the Docker service using
To check the status of the Docker service, run the following command:
systemctl status docker
The output will provide information about the current status of the Docker service, including whether it is running, enabled, and any recent log entries.
Task 3: Stopping the Jenkins Service
Next, let's stop the Jenkins service and capture before and after screenshots.
To stop the Jenkins service, run the following command:
sudo systemctl stop jenkins
Before stopping Jenkins:
After stopping Jenkins:
Task 4: Understanding systemctl vs. service
systemctl and service are both command-line utilities used for managing services on Linux. However, there are some differences between them.
systemctlis the primary command-line utility for managing services in Linux distributions that use
systemd. It provides more advanced features and functionalities, such as service dependency management and improved logging.
serviceis a backward-compatible command that works with both
systemdand the older
SysV initsystem. It is still available on many systems but is gradually being replaced by
To compare the output of
systemctl and service for a specific service, let's take the example of Docker.
Run the following commands to check the status of the Docker service using both
systemctl and service:
systemctl status docker service docker status
Observe the differences, if any, in the output of these commands. This exercise will help you understand the variations between
systemctl and service and their usage in different Linux distributions.
Congratulations! You've completed Day 7 of the #90DaysOfDevOps challenge. Today, you gained insights into package managers, learned how to install Docker and Jenkins using APT, explored
systemd, and performed various tasks related to service management.
Stay tuned for Day 8, where we'll dive into Basic Git & GitHub for DevOps Engineers.
Did you find this article valuable?
Support Esteban Moreno by becoming a sponsor. Any amount is appreciated!