jenkins controller agent
Prerequisites
- System: Two Ubuntu servers with root or sudo access and network connectivity
- controller-server: 192.168.64.10
- agent-server: 192.168.64.11
Step 1: Install Java (Both Servers)
Jenkins requires a Java Runtime Environment (JRE) to run. We will install the OpenJDK package
On controller
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
On agent
sudo apt update
sudo apt install openjdk-17-jdk -y
java --version
sudo systemctl status ssh
Step 2: Install Jenkins (Controller Server)
Add Jenkins repository
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
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
Update package list and install Jenkins
sudo apt-get update
sudo apt-get install jenkins -y
Start and enable Jenkins service
sudo systemctl start jenkins
sudo systemctl enable jenkins
sudo systemctl status jenkins
Initial Jenkins setup
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Step 3: Generate SSH Key Pair (Controller Server)
Configure SSH key
- Controller stores the private key
- Agent stores the public key
sudo su - jenkins
ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub
Step 4: Add Public Key (Agent Server)
Ensure SSH directory and authorized_keys file exist with correct permissions
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Add the public key
vim ~/.ssh/authorized_keys
Step 5: Configure Agent Node (Controller Server)
Retrieve the private key
sudo cat /var/lib/jenkins/.ssh/id_rsa
Add SSH credentials in Jenkins UI
- SSH Username with private key
- ID: agent-ssh-key
- Description: SSH key for agent-server
- Username: ubuntu
- Private key: ...
Add new node
- Node name: ubuntu-agent-1
- Description: Ubuntu Agent VM
- Number of executors: 1
- Remote root directory: /home/ubuntu/jenkins-agent-ubuntu
- Labels; ubuntu agent
- Launch method: Launch agents via SSH
- Host: 192.168.64.11
- Credentials: ubuntu (SSH key for agent-server)
Step 5: Test With a Job
Freestyle project
- Restrict where this project can be run
- Label expression: ubuntu
- Build steps
- Execute shell
echo "Hello from Jenkins Agent!"
echo "Running on host: $(hostname)"
echo "Workspace directory: $(pwd)"
echo "Java version on agent:"
java -version