19. Configuring Jenkins-Slave
The Udemy course Learn DevOps: CI/CD with Jenkins using Pipelines and Docker teaches how to work with Jenkins slaves. I had some problems with activating the Jenkins-slave container on a second system.
Contents
Activity 19.1: Configuring the Jenkins-slave
Prerequisites
- The system with the Jenkins-Master runs in a Docker container on Ubuntu 20.04.
- Your second system with Jenkins-Slave runs as a Docker container on Ubuntu 20.04.
- You have started the two computer.
- You have the SSH keys available.
In this activity you will:
- Copy public key to slave.
- Create local SSH keys.
- Configure slave
- Create Jenkins-slave container
- On the Jenkins-master
Step 1: Copy public key to slave
| Step | Action | Comment | 
|---|---|---|
| 1 | $ ssh-copy-id <user>@<ip-address slave> | |
| 2 | $ sudo chmod 666 /var/run/docker.sock | 
Step 2: Install Docker on slave
| Step | Action | Comment | 
|---|---|---|
| 1 | $ sudo apt update | |
| 2 | $ sudo apt install docker.io | |
| 3 | $ sudo systemctl start docker | |
| 4 | $ sudo systemctl docker enable | |
| 5 | $ sudo groupadd docker | |
| 6 | $ sudo usermod -aG docker USER | |
| 7 | $ sudo reboot | 
Step 3: Configure slave
| Step | Action | Comment | 
|---|---|---|
| 1 | $ mkdir -p /var/jenkins_home/.ssh | |
| 2 | $ cp /home/USER/.ssh/authorizedkeys /var/jenkinshome/.ssh | |
| 3 | $ sudo chmod 700 /var/jenkins_home/.ssh | |
| 4 | $ sudo chmod 600 /var/jenkinshome/.ssh/authorizedkeys | |
| 5 | $ sudo chown -R 1000:1000 /var/jenkins_home | |
| 6 | $ sudo chmod 666 /var/run/docker.sock | 
Step 4: Create Jenkins-slave container
Run the following docker command:
docker run -p 2222:22 \
  -v /var/jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --restart always \
  -d wardviaene/jenkins-slaveStep 5: On the Jenkins-master
| Step | Action | Comment | 
|---|---|---|
| 1 | $ ssh-keyscan -p 2222 <ip-address slave> >> /var/jenkinshome/.ssh/knownhosts | 
Test:
| Step | Action | Comment | 
|---|---|---|
| 2 | $ docker exec -it jenkins bash | |
| 3 | $ ssh jenkins@<ip-address slave> -p 2222 | 
Activity 19.2: Configuring the Jenkins Node
In Jenkins, select New node:
Name: Builder 2
# of executers: 2 
Remote root directory: /var/jenkins_home
Labels: builder2
Use: Only build jobs with label expressions matching this node
Output method:
 Launch agent via SSH
 Host: <ip-address Jenkins slave>
 Credentials: #1
 Host Key Verifications Strategy:
   Select 'Require manual verification of initial connection' #2#1 Create an account with the name jenkins and past the your private key in the field (cat rsa-id.pub)
#2 The first time you will see the message ??? appears in the menu, click on it.