| # 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 |
| 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'] == 'Ubuntu' |
| |
| - name: Run gitlab-runner repo setup script (DEB) |
| shell: "/root/script.deb.sh" |
| when: |
| - ansible_facts['distribution'] == 'Ubuntu' |
| |
| - name: Install gitlab-runner (DEB) |
| ansible.builtin.apt: |
| name: gitlab-runner |
| update_cache: yes |
| state: present |
| when: |
| - ansible_facts['distribution'] == 'Ubuntu' |
| |
| # 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 }} --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 |