This guide installs Gerrit with Java, prepares a site directory, and starts it via systemd.
It supports Debian 10 to latest stable, Ubuntu LTS, and RHEL 9+ compatible systems.
- name: Install Gerrit
hosts: gerrit
become: true
vars:
gerrit_site: /var/lib/gerrit
gerrit_version: 3.10.2
gerrit_user: gerrit
gerrit_group: gerrit
tasks:
- name: Install dependencies on Debian/Ubuntu
apt:
name:
- openjdk-21-jre-headless
- apache2-utils
- git
- curl
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install dependencies on RHEL family
dnf:
name:
- java-21-openjdk-headless
- httpd-tools
- git
- curl
state: present
when: ansible_os_family == "RedHat"
- name: Create Gerrit group
group:
name: "{{ gerrit_group }}"
state: present
- name: Create Gerrit user
user:
name: "{{ gerrit_user }}"
group: "{{ gerrit_group }}"
home: "{{ gerrit_site }}"
shell: /usr/sbin/nologin
create_home: true
- name: Create Gerrit site directory
file:
path: "{{ gerrit_site }}"
state: directory
owner: "{{ gerrit_user }}"
group: "{{ gerrit_group }}"
mode: "0755"
- name: Download Gerrit WAR
get_url:
url: "https://gerrit-releases.storage.googleapis.com/gerrit-{{ gerrit_version }}.war"
dest: /tmp/gerrit.war
mode: "0644"
- name: Initialize Gerrit site
command: "java -jar /tmp/gerrit.war init --batch --site-path {{ gerrit_site }}"
args:
creates: "{{ gerrit_site }}/bin/gerrit.sh"
- name: Create systemd service for Gerrit
copy:
dest: /etc/systemd/system/gerrit.service
mode: "0644"
content: |
[Unit]
Description=Gerrit Code Review
After=network.target
[Service]
Type=forking
User={{ gerrit_user }}
Group={{ gerrit_group }}
ExecStart={{ gerrit_site }}/bin/gerrit.sh start
ExecStop={{ gerrit_site }}/bin/gerrit.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
- name: Reload systemd
systemd:
daemon_reload: true
- name: Enable and start Gerrit
service:
name: gerrit
state: started
enabled: true
We develop tailored automation solutions for:
Let’s discuss your requirements: office@linux-server-admin.com | Contact