Ansible collection. It ships production-ready roles for running your own GitLab platform:
gitlab– installs and configures the GitLab Omnibus package (forked fromhifis.toolkit.gitlab).gitlab_runner– provisions, registers, and manages GitLab Runners (forked fromhifis.toolkit.gitlab_runner).
Use them together to stand up GitLab application nodes and CI runners with a single collection.
Install from Ansible Galaxy (or your artifact cache):
ansible-galaxy collection install bestiancode.gitlabAlternatively, pin it in requirements.yml:
collections:
- name: bestiancode.gitlabThen run:
ansible-galaxy collection install -r requirements.yml --forceroles/
gitlab/ # GitLab Omnibus installation + configuration
gitlab_runner/ # Runner lifecycle management and registration
Create a playbook that targets each host group:
---
- name: Install GitLab application
hosts: gitlab_primary
become: true
collections:
- bestiancode.gitlab
roles:
- gitlab
- name: Register GitLab runners
hosts: gitlab_runners
become: true
collections:
- bestiancode.gitlab
roles:
- gitlab_runnerroles/gitlab/README.md– full GitLab variable reference, supported distributions, and advanced configuration examples.roles/gitlab_runner/README.md– complete runner documentation (Docker, shell, Docker Machine, Flatcar, SSH keys, session server, etc.).
- GitLab role now pauses upgrades until database and batched migrations finish (safe rolling upgrades out of the box).
- Added a registry cleanup cron + helper script so every project gets sane expiration defaults automatically.
- Both
gitlabandgitlab_runnerroles updated and tested with GitLab 18.6.0 / GitLab Runner 18.6.0.
Issues and discussions live at https://github.com/BestianCode/ansible.collection.gitlab.