# Copyright (c) 2021 Red Hat, Inc. # # Author: # Cleber Rosa # # 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 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 }} - name: Download the matching gitlab-runner (DEB) get_url: dest: "/root/" url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_{{ gitlab_runner_arch }}.deb" when: - ansible_facts['distribution'] == 'Ubuntu' - name: Download the matching gitlab-runner (RPM) get_url: dest: "/root/" url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_{{ gitlab_runner_arch }}.rpm" when: - ansible_facts['distribution'] == 'CentOS' - name: Install gitlab-runner via package manager (DEB) apt: deb="/root/gitlab-runner_{{ gitlab_runner_arch }}.deb" when: - ansible_facts['distribution'] == 'Ubuntu' - name: Install gitlab-runner via package manager (RPM) yum: name="/root/gitlab-runner_{{ gitlab_runner_arch }}.rpm" when: - ansible_facts['distribution'] == 'CentOS' - name: Register the gitlab-runner command: "/usr/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\"] }})'" # The secondary runner will still run under the single gitlab-runner service - name: Register secondary gitlab-runner command: "/usr/bin/gitlab-runner 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'] == '22.04' - 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