# Copyright (c) 2021 Red Hat, Inc.
#
# Author:
#  Cleber Rosa <crosa@redhat.com>
#
# This work is licensed under the terms of the GNU GPL, version 2 or
# later.  See the COPYING file in the top-level directory.
#
# This is an ansible playbook file.  Run it to set up systems with the
# gitlab-runner agent.
---
- name: Installation of gitlab-runner
  hosts: all
  vars_files:
    - vars.yml
  tasks:
    - debug:
        msg: 'Checking for a valid GitLab registration token'
      failed_when: "gitlab_runner_authentication_token == 'PLEASE_PROVIDE_A_VALID_TOKEN'"

    - name: Create a group for the gitlab-runner service
      group:
        name: gitlab-runner

    - name: Create a user for the gitlab-runner service
      user:
        user: gitlab-runner
        group: gitlab-runner
        groups: kvm
        comment: GitLab Runner
        home: /home/gitlab-runner
        shell: /bin/bash

    - name: Remove the .bash_logout file when on Ubuntu systems
      file:
        path: /home/gitlab-runner/.bash_logout
        state: absent
      when: "ansible_facts['distribution'] == 'Ubuntu'"

    - name: Set the Operating System for gitlab-runner
      set_fact:
        gitlab_runner_os: "{{ ansible_facts[\"system\"]|lower }}"
    - debug:
        msg: gitlab-runner OS is {{ gitlab_runner_os }}

    - name: Set the architecture for gitlab-runner
      set_fact:
        gitlab_runner_arch: "{{ ansible_to_gitlab_arch[ansible_facts[\"architecture\"]] }}"
    - debug:
        msg: gitlab-runner arch is {{ gitlab_runner_arch }}

    # Debian/Ubuntu setup
    - name: Get gitlab-runner repo setup script (DEB)
      get_url:
        dest: "/root/"
        url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh"
        mode: 0755
      when:
        - ansible_facts['distribution'] in ['Ubuntu', 'Debian']

    - name: Run gitlab-runner repo setup script (DEB)
      shell: "/root/script.deb.sh"
      when:
        - ansible_facts['distribution'] in ['Ubuntu', 'Debian']

    - name: Install gitlab-runner (DEB)
      ansible.builtin.apt:
          name: gitlab-runner
          update_cache: yes
          state: present
      when:
        - ansible_facts['distribution'] in ['Ubuntu', 'Debian']

    # RPM setup
    - name: Get gitlab-runner repo setup script (RPM)
      get_url:
        dest: "/root/"
        url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh"
        mode: 0755
      when:
        - ansible_facts['distribution'] == 'CentOS'

    - name: Run gitlab-runner repo setup script (RPM)
      shell: "/root/script.rpm.sh"
      when:
        - ansible_facts['distribution'] == 'CentOS'

    - name: Install gitlab-runner (RPM)
      yum:
        name: gitlab-runner
        update_cache: yes
        state: present
      when:
        - ansible_facts['distribution'] == 'CentOS'

    # Register Runners
    - name: Register the gitlab-runner
      command: "/usr/bin/gitlab-runner register --non-interactive --url {{ gitlab_runner_server_url }} --token {{ gitlab_runner_authentication_token }} --executor shell"

    - name: Install the gitlab-runner service using its own functionality
      command: "/usr/bin/gitlab-runner install --user gitlab-runner --working-directory /home/gitlab-runner"
      register: gitlab_runner_install_service_result
      failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr"

    - name: Enable the gitlab-runner service
      service:
        name: gitlab-runner
        state: started
        enabled: yes
