From 0ce15cb4d81f6e6edcbff3a2903ba5149f20348a Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Sat, 29 Aug 2020 23:56:14 +0100 Subject: [PATCH] Add gitlab --- ansible/main.yml | 1 + ansible/roles/gitlab/files/docker-compose.yml | 45 +++++++++++++++++++ ansible/roles/gitlab/files/gitlab.rb | 25 +++++++++++ ansible/roles/gitlab/handlers/main.yml | 4 ++ ansible/roles/gitlab/tasks/main.yml | 17 +++++++ 5 files changed, 92 insertions(+) create mode 100644 ansible/roles/gitlab/files/docker-compose.yml create mode 100644 ansible/roles/gitlab/files/gitlab.rb create mode 100644 ansible/roles/gitlab/handlers/main.yml create mode 100644 ansible/roles/gitlab/tasks/main.yml diff --git a/ansible/main.yml b/ansible/main.yml index 341c197..1b4e25f 100644 --- a/ansible/main.yml +++ b/ansible/main.yml @@ -43,6 +43,7 @@ - plausible - duplicati - grafana + - gitlab - hosts: walker roles: diff --git a/ansible/roles/gitlab/files/docker-compose.yml b/ansible/roles/gitlab/files/docker-compose.yml new file mode 100644 index 0000000..db4961b --- /dev/null +++ b/ansible/roles/gitlab/files/docker-compose.yml @@ -0,0 +1,45 @@ +version: "2.3" + +services: + gitlab: + image: gitlab/gitlab-ce:latest + hostname: gitlab.theorangeone.net + environment: + TZ: Europe/London + GITLAB_OMNIBUS_CONFIG: | + {% filter indent(width=8) %} + {%- include "gitlab.rb" %} + {% endfilter %} + + volumes: + - ./config:/etc/gitlab + - ./data:/var/opt/gitlab + tmpfs: + - /var/log/gitlab + restart: unless-stopped + depends_on: + - db + - redis + labels: + - traefik.enable=true + - traefik.http.routers.gitlab.rule=Host(`gitlab.theorangeone.net`) + - traefik.http.routers.gitlab.tls.certresolver=le + - traefik.http.services.gitlab-gitlab.loadbalancer.server.port=80 + - traefik.http.services.gitlab-gitlab.loadbalancer.server.scheme=http + - traefik.http.routers.gitlab.middlewares=compress@file + + db: + image: postgres:12-alpine + restart: unless-stopped + volumes: + - ./postgres:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=gitlab + - POSTGRES_USER=gitlab + - POSTGRES_DB=gitlabhq_production + + redis: + image: redis:6-alpine + restart: unless-stopped + volumes: + - ./redis:/data diff --git a/ansible/roles/gitlab/files/gitlab.rb b/ansible/roles/gitlab/files/gitlab.rb new file mode 100644 index 0000000..5b97a13 --- /dev/null +++ b/ansible/roles/gitlab/files/gitlab.rb @@ -0,0 +1,25 @@ +external_url 'https://gitlab.theorangeone.net' +nginx['redirect_http_to_https'] = false +nginx['listen_https'] = false +nginx['listen_port'] = 80 +grafana['enable'] = false +nginx['status'] = { + 'enable' => false +} +letsencrypt['enable'] = false +puma['worker_processes'] = 2 +puma['max_threads'] = 6 +gitlab_rails['time_zone'] = 'Europe/London' + +alertmanager['enable'] = false +prometheus_monitoring['enable'] = false + +postgresql['enable'] = false +gitlab_rails['db_adapter'] = 'postgresql' +gitlab_rails['db_encoding'] = 'unicode' +gitlab_rails['db_host'] = 'db' +gitlab_rails['db_password'] = 'gitlab' + +redis['enable'] = false +gitlab_rails['redis_host'] = 'redis' +gitlab_rails['redis_port'] = 6379 diff --git a/ansible/roles/gitlab/handlers/main.yml b/ansible/roles/gitlab/handlers/main.yml new file mode 100644 index 0000000..e75ef31 --- /dev/null +++ b/ansible/roles/gitlab/handlers/main.yml @@ -0,0 +1,4 @@ +- name: restart gitlab + shell: + chdir: /opt/gitlab + cmd: "{{ docker_update_command }}" diff --git a/ansible/roles/gitlab/tasks/main.yml b/ansible/roles/gitlab/tasks/main.yml new file mode 100644 index 0000000..f47c5ea --- /dev/null +++ b/ansible/roles/gitlab/tasks/main.yml @@ -0,0 +1,17 @@ +- name: Create install directory + file: + path: /opt/gitlab + state: directory + owner: "{{ docker_user.name }}" + mode: "{{ docker_compose_directory_mask }}" + become: true + +- name: Install compose file + template: + src: files/docker-compose.yml + dest: /opt/gitlab/docker-compose.yml + mode: "{{ docker_compose_file_mask }}" + owner: "{{ docker_user.name }}" + validate: /usr/bin/docker-compose -f %s config + notify: restart gitlab + become: true