# 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_registration_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
        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 }}

    - name: Download the matching gitlab-runner
      get_url:
        dest: /usr/local/bin/gitlab-runner
        url: "https://s3.amazonaws.com/gitlab-runner-downloads/v{{ gitlab_runner_version  }}/binaries/gitlab-runner-{{ gitlab_runner_os }}-{{ gitlab_runner_arch }}"
        owner: gitlab-runner
        group: gitlab-runner
        mode: u=rwx,g=rwx,o=rx

    - name: Register the gitlab-runner
      command: "/usr/local/bin/gitlab-runner register --non-interactive --url {{ gitlab_runner_server_url }} --registration-token {{ gitlab_runner_registration_token }} --executor shell --tag-list {{ ansible_facts[\"architecture\"] }},{{ ansible_facts[\"distribution\"]|lower }}_{{ ansible_facts[\"distribution_version\"] }} --description '{{ ansible_facts[\"distribution\"] }} {{ ansible_facts[\"distribution_version\"] }} {{ ansible_facts[\"architecture\"] }} ({{ ansible_facts[\"os_family\"] }})'"

    - name: Install the gitlab-runner service using its own functionality
      command: /usr/local/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

    - name: Download secondary gitlab-runner
      get_url:
        dest: /usr/local/bin/gitlab-runner-arm
        url: "https://s3.amazonaws.com/gitlab-runner-downloads/v{{ gitlab_runner_version  }}/binaries/gitlab-runner-{{ gitlab_runner_os }}-arm"
        owner: gitlab-runner
        group: gitlab-runner
        mode: u=rwx,g=rwx,o=rx
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'

    - name: Register secondary gitlab-runner
      command: "/usr/local/bin/gitlab-runner-arm register --non-interactive --url {{ gitlab_runner_server_url }} --registration-token {{ gitlab_runner_registration_token }} --executor shell --tag-list aarch32,{{ ansible_facts[\"distribution\"]|lower }}_{{ ansible_facts[\"distribution_version\"] }} --description '{{ ansible_facts[\"distribution\"] }} {{ ansible_facts[\"distribution_version\"] }} {{ ansible_facts[\"architecture\"] }} ({{ ansible_facts[\"os_family\"] }})'"
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'

    - name: Install the secondary gitlab-runner service using its own functionality
      command: /usr/local/bin/gitlab-runner-arm install --user gitlab-runner --working-directory /home/gitlab-runner/arm -n gitlab-runner-arm
      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"
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'

    - name: Enable the secondary gitlab-runner service
      service:
        name: gitlab-runner-arm
        state: started
        enabled: yes
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'
