This guide deploys Jenkins LTS in a Docker container with persistent home directory using Ansible.
/opt/jenkins workspace- name: Deploy Jenkins with Docker
hosts: jenkins
become: true
vars:
jenkins_root: /opt/jenkins
jenkins_http_port: 8080
jenkins_jnlp_port: 50000
tasks:
- name: Install Docker on Debian family
ansible.builtin.apt:
update_cache: true
name:
- docker.io
state: present
when: ansible_os_family == "Debian"
- name: Install Docker on RHEL family
ansible.builtin.dnf:
name:
- docker
state: present
when: ansible_os_family == "RedHat"
- name: Enable Docker service
ansible.builtin.systemd:
name: docker
enabled: true
state: started
- name: Create Jenkins root directory
ansible.builtin.file:
path: "{{ jenkins_root }}"
state: directory
mode: "0755"
- name: Run Jenkins LTS container
ansible.builtin.command: >
docker run -d
--name jenkins
--restart unless-stopped
-p {{ jenkins_http_port }}:8080
-p {{ jenkins_jnlp_port }}:50000
-v jenkins_home:/var/jenkins_home
-v {{ jenkins_root }}:/var/jenkins_home
jenkins/jenkins:lts
args:
creates: /var/lib/docker/volumes/jenkins_home
- name: Get initial admin password
ansible.builtin.command: docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
register: jenkins_initial_password
changed_when: false
- name: Display initial admin password
ansible.builtin.debug:
msg: "Jenkins initial admin password: {{ jenkins_initial_password.stdout }}"
ansible-playbook -i inventory.ini jenkins-docker-install.yml