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