top of page

Automating Jenkins Backups with Ansible Playbooks

Creating a backup of your Jenkins installation can be done using Ansible. You can use Ansible to automate the backup process by running specific commands or scripts to back up the Jenkins data directory and configuration. Below is an example of an Ansible playbook that takes a backup of a Jenkins installation:


---
- name: Start Jenkins Backup
  hosts: jenkinshost
  become: yes
  tasks:
    - name: Stop Jenkins Service
      service:
        name: jenkins
        state: stopped

    - name: Create Backup Directory
      file:
        path: /opt/jenkins
        state: directory
        mode: '0755'

    - name: Backup Jenkins Data Directory
      shell: |
        rsync -avp /var/lib/jenkins/ /opt/jenkins/
      async: 3600
      poll: 0
      ignore_errors: yes
      become: yes

    - name: Start Jenkins Service
      service:
        name: jenkins
        state: started

In this playbook:


1. jenkinshost should be defined in your Ansible inventory file, and it should point to your Jenkins server.

2. The playbook assumes that Jenkins is running as a service named "jenkins" If your Jenkins service has a different name, make sure to change the service module accordingly.

3. The playbook first stops the Jenkins service to ensure that the data directory is not being modified during the backup.

4. It creates a backup directory (in this example, /opt/jenkins) where the backup will be stored.

5. The rsync command is used to copy the contents of the Jenkins data directory to the backup directory. The async parameter is set to 3600 seconds (1 hour) to allow the backup process to run asynchronously, and a poll is set to 0 to check the status periodically without blocking the playbook. The ignore_errors option allows the playbook to continue even if the backup process encounters errors.

6. After the backup is completed, the Jenkins service is started again.

Now, let's try to run this playbook.

[root@siddhesh ~]# ansible-playbook -i inventory jenkins_backup.yml

PLAY [Start Jenkins Backup] *********************************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************************************************
ok: [jenkins.builddevops.com]

TASK [Stop Jenkins Service] *********************************************************************************************************************************
changed: [jenkins.builddevops.com]

TASK [Create Backup Directory] ******************************************************************************************************************************
changed: [jenkins.builddevops.com]

TASK [Backup Jenkins Data Directory] ************************************************************************************************************************
changed: [jenkins.builddevops.com]

TASK [Start Jenkins Service] ********************************************************************************************************************************
changed: [jenkins.builddevops.com]

PLAY RECAP **************************************************************************************************************************************************
jenkins.builddevops.com    : ok=5    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[root@siddhesh ~]#

bottom of page