How to install and configure Jenkins using Ansible Playbook
Here in this article we will see how we can install and configure jenkins using the Ansible Playbook.
Test Environment
Ansible Controller – Fedora 32 linux with ansible installed
Ansible Node – Fedora 32 linux remote node
For setting up a Jenkins service on a remote note we need the below minimum requirements that should be satisfied.
- Remote node with Fedora 32 installed
- Minimum RAM – 256 MB
- Minimum HD – 1 GB
Once we have the remote node setup with the above requirements we can go ahead and execute our tasks for setting up the jenkins using the the playbook. Here are the high level details of the tasks that we will carry out as a part of this activity.
- JRE – Java 8 with 64 bit for run execution
- JDK/JRE – Java 8 or 11 for job execution
- Adding the Jenkins Repository
- Installing the Jenkins and Java development packages
- Start the Jenkins service
- Add jenkins service and port 8080 to allow from firewall
If you are interested in watching video. Here is the YouTube video on the same step by step procedure outlined below.
Procedure
Step1: Ensure Jenkins repository is added
Create the below playbook to add the jenkins repository to install the packages and import the gpg key.
Ansible playbook to setup jenkins repository and install jenkis and its dependencies
$ cat setup_jenkins.yaml
---
- hosts: stack
remote_user: admin
become: true
tasks:
- name: Ensure Jenkins repository is added
yum_repository:
name: jenkins-ci
description: jenkins-ci package repository
baseurl: http://pkg.jenkins.io/redhat
gpgkey: https://pkg.jenkins.io/redhat/jenkins.io.key
gpgcheck: yes
- name: Ensure gpp key is imported
rpm_key:
state: present
key: https://pkg.jenkins.io/redhat/jenkins.io.key
- name: Ensure Jenkins and java-devel package installed
yum:
name: '{{ packages }}'
state: present
update_cache: true
vars:
packages:
- jenkins
- java-devel
Execute the below playbook to add the jenkins repository.
$ ansible-playbook setup_jenkins.yaml -K
BECOME password:
PLAY [stack] *************************************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [192.168.47.130]
TASK [Ensure Jenkins repository is added] ********************************************************************************************************************
changed: [192.168.47.130]
TASK [Ensure gpp key is imported] ****************************************************************************************************************************
changed: [192.168.47.130]
TASK [Ensure Jenkins and java-devel package installed] *******************************************************************************************************
changed: [192.168.47.130]
PLAY RECAP ***************************************************************************************************************************************************
192.168.47.130 : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Validate the remote node whether the repository got added or not.
$ cat jenkins-ci.repo
baseurl = http://pkg.jenkins.io/redhat
gpgcheck = 1
gpgkey = https://pkg.jenkins.io/redhat/jenkins.io.key
name = jenkins-ci package repository
$ rpm -qa | grep jenkins
jenkins-2.286-1.1.noarch
$ rpm -qa | grep java-1.8.0-openjdk-devel*
java-1.8.0-openjdk-devel-1.8.0.282.b08-0.fc32.x86_64
Step2: Start and Enable the Jenkins service with firewall service and port enabled
Update Ansible Playbook to Start the Jenkins service and open firewall port and service
$ cat setup_jenkins.yaml
---
- hosts: stack
remote_user: admin
become: true
tasks:
- name: Ensure Jenkins repository is added
yum_repository:
name: jenkins-ci
description: jenkins-ci package repository
baseurl: http://pkg.jenkins.io/redhat
gpgkey: https://pkg.jenkins.io/redhat/jenkins.io.key
gpgcheck: yes
- name: Ensure gpp key is imported
rpm_key:
state: present
key: https://pkg.jenkins.io/redhat/jenkins.io.key
- name: Ensure Jenkins and java-devel package installed
yum:
name: '{{ packages }}'
state: present
update_cache: true
vars:
packages:
- jenkins
- java-devel
- name: Ensure systemd daemon reloaded
command: systemctl daemon-reload
- name: Ensure Jenkins service is enabled and started
service:
name: jenkins
state: started
- name: Ensure jenkins service added to firewalld
firewalld:
service: jenkins
state: enabled
permanent: yes
immediate: yes
- name: Ensure port 8080 added to firewalld
firewalld:
port: 8080/tcp
state: enabled
permanent: yes
immediate: yes
Validate the remote node whether the firewall setup completed and service is running or not.
$ sudo firewall-cmd --list-all
[sudo] password for admin:
FedoraServer (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: cockpit dhcpv6-client http https jenkins ssh
ports: 8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
$ systemctl status jenkins.service
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; generated)
Active: active (running) since Sat 2021-04-10 07:27:11 IST; 1h 0min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 35 (limit: 2292)
Memory: 429.4M
CPU: 55.586s
CGroup: /system.slice/jenkins.service
└─1906 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenki>
...
Step3: Validate the Jenkins service url
Access the Jenkins URL from remote network.
URL - http://192.168.47.130:8080/
First time when you access the Jenkins url, it will ask to enter the jenkins user default password available in a particular file and then setup the user with which you want to login to the Jenkins portal. Once the user setup is completed it will ask to install a set of plugins or customize the plugin list that you want to install. Once you select on of those options the plugins will be installed and your Jenkins server is ready for use.
Hope you enjoyed reading this article. Thank you..
Leave a Reply
You must be logged in to post a comment.