Docker-GitLab Ansible Role

Overview

This Ansible role is designed for setting up and managing a GitLab server running in a Docker container. It automates the process of installing GitLab, configuring its environment, and managing dependencies such as a PostgreSQL database and an Nginx reverse proxy.

Features

  • GitLab Installation: Automatically deploys GitLab using Docker.

  • External PostgreSQL Database: Configures GitLab to use an external PostgreSQL database.

  • Nginx Reverse Proxy Integration: Includes tasks for setting up an Nginx reverse proxy for GitLab.

  • Customizable Configuration: Variables and templates allow for easy customization.

Requirements

  • Docker and Docker Compose installed on the target machine.

  • Ansible for automation.

Role Variables

Variables are defined in vars/main.yml. Key variables include:

  • docker_compose.directories.instance: Directory for Docker Compose instances.

  • application_id, database_host, database_name, database_username, database_password: Database configuration variables.

Handlers

  • recreate gitlab: Restarts GitLab using Docker Compose when changes are detected.

Dependencies

  • nginx-docker-reverse-proxy: A role for setting up an Nginx reverse proxy for GitLab.

Template Files

  • docker-compose.yml.j2: Jinja2 template for the Docker Compose configuration.

  • Additional templates for database and proxy configuration.

Usage

Include this role in your Ansible playbooks and specify the necessary variables. Run the playbook to deploy and configure GitLab in a Docker environment.

For a detailed walkthrough and explanation of this role, refer to the conversation at ChatGPT Session Transcript.

Other Resources

  • https://ralph.blog.imixs.com/2019/06/09/running-gitlab-on-docker/

Performance Optimation

  • https://techoverflow.net/2020/04/18/how-i-reduced-gitlab-memory-consumption-in-my-docker-based-setup/