How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Introduction

As an automation server that supports a list of Social Control Management (SCM) software systems such as SVN, Git, and Mercurial, Jenkins features many plugins to help automate any project. It is considered a great choice for a ‘master/slave’ architecture and it’s a perfect host for a number of large projects.

Jenkins ‘master/slave’: How it Works?

The master and slave architecture for Jenkins is used in a build environment where there is a distribution of workload for different projects to a number of agent nodes. Different environments can be used for each build.

The master in this setting deals with tasks related to the build system. The master node is used in various tasks such as job schedules, slave nodes monitors, dispatch of builds to slave nodes, build jobs execution, and keeping build result records.

Jenkins slave nodes are tasked with offloading all the build projects from the master. This requires an established connection that should be available between the master and slaves.

In this article, we will look at the setup process for Jenkins-master/slave architecture using Ubuntu 18.04 LTS.

Prerequisites

Before you start, you need the following:

  • Ubuntu 18.04 LTS
  • Jenkins Automation server installed on Ubuntu 18.04 If you have not installed Jenkins Automation server follow Our guide on “How to install Jenkins Automation server on Ubuntu 18.04” to install the application.
  • The latest version of master (10.0.15.10)
  • Slave 01 version 10.0.15.21
  • Slave 02 Version 10.0.15.22
  • Root privileges via sudo

Let’s get started!

Step 1- Installing Jenkins Master

In this article, we will not go into details on the basic Jenkins installation.

If you have already installed the Jenkins application on your Ubuntu 18.04, you should have an interface like the one below.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

We can now proceed and set up the Jenkins master.

Step 2 - Configuring Credentials for Jenkins Master

Once you install Jenkins master server, go ahead and configure it. Jenkins default setting allows us to start the agent nodes in different ways. They can either be launched through the windows administrative account, SSH, or through Java Web Start (JNLP).

You should choose one that fits your need based on the environment and your operating system (OS).

In this tutorial, we will use SSH to launch these agent nodes, then set up the credentials for Jenkins on the master server.

Generating SSH Key

We need the SSH authentication key to launch the agent nodes. Now generate the key for Jenkins user then use ‘ssh-copy-id’ to upload this key manually to each server node. Run the commands below in the Jenkins master server to generate the keys:

su - jenkins
ssh-keygen

The command above will create a private key ‘id_rsa’ and a public key ‘Id_rsa.pub’ in the ‘.ssh’ directory.

Setting up Credentials on Jenkins

Go to Jenkins dashboard then open the Credentials  menu..

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Select the “global domain link” then click Add Credentials.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Next, select the authentication method you want to use. You need to provide the following information:

Kind: SSH Username plus the private key

Scope: Global

Username: jenkins

Private key: Enter and paste the ‘id_rsa’ private key for Jenkins user

Now press OK.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Now, the details for Jenkins with ssh authentication key technique has been created.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Step 3: Setting up Slave Nodes

The next step is to set up the slave nodes server. To do so, you need to install java on your server then create a Jenkins user.

Installing Java

Start by installing the software packages then include the PPA repository for java. This will be accomplished using the apt command on your Ubuntu 18.04 command line.

$ sudo apt install software-properties-common apt-transport-https -y
$ sudo add-apt-repository ppa:openjdk-r/ppa -y

Use the following apt to install java OpenJDK.

$ sudo apt install openjdk-8-jdk -y

Once the installation is done, run the command below to confirm the java version you have installed.

java -version

You should see the current version of Java OpenJDK installed on your system.

Adding a New User for Jenkins

Next, ensure each of the agent nodes has a Jenkins user using the following command:

useradd -m -s /bin/bash Jenkins
passwd Jenkins

At this point, Jenkins user has been created and you can proceed to upload the key from the master to slave server nodes.

Uploading the Public SSH Key

The next step is uploading the ‘id_rsa.pub’ key from the master to slave server nodes. Use the ‘ssh-copy-id’ to upload the key to each node:

ssh-copy-id jenkins@10.0.15.21
ssh-copy-id jenkins@10.0.15.22

Now, enter the password for the Jenkins user.

After that, the ‘id_rsa.pub’ key should be uploaded successfully to each of the agent nodes.

Step 4 - Adding Slave Nodes

Go to the Jenkins dashboard and select Manage Jenkins, then hit the Manage Nodes.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Now, press the New Node icon.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Enter the name of the node ‘slave01,’ then select the permanent agent , and press OK.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Now, enter the following information for this node.

Description: slave01 node agent server

Remote root directory: /home/Jenkins

Labels: slave 01

Launch method: Launch slave agent using SSH, then enter the IP address (10.0.15.21) for the host and select the auth using “Jenkins” details.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Save the changes and make sure the master server is connected to all the agent nodes before launching the agent services.

Once the master level has connected successfully to the agent nodes, you will see the screen below:

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Now, the slave nodes have been added successfully to the Jenkins master server.

Step 5 - Preparing Slave Nodes to Perform Build

To configure Jenkins master to perform build on the slave agent nodes, select  Manage Jenkins then Configure System.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

In the Slave Setups area and set everything as follows:

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

You can find more information about Slave Setups on its official page.

Press Save to complete the process.

Step 6 - Testing

The next step is to create your own Jenkins build. In this case, we shall perform the build on agent nodes ‘slave01’ and ‘slave02.’

Go to Jenkins dashboard, and select the New Item menu.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Enter the name of the item you want, select the freestyle project, then press OK.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Next, on the Jenkins general section, define the job details and make sure you have checked the option ‘Restrict where this project can be run.’

Enter your node such as ‘slave01’ on the Label Expression section.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Go to the build section and select the option Execute Shell and run the following command:

top -b -n 1 | head -n 10 && hostname

Save the changes. You should see the following page:

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Now, select Build Now to initiate the project, then select Item the Build History section.

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

The build on the ‘slave01’ should give you the following result:

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Build on the ‘slave02’ should look like this:

How To Setup Jenkins Master and Slave on Ubuntu 18.04 LTS

Now everything is done.

Conclusion

At this point, you have successfully configured Jenkins master and slave architecture on Ubuntu 18.04. We hope this tutorial will help you execute the process with ease.

Check out these top 3 VPS services:

Was this article helpful?