140de78c2SCleber Rosa# Copyright (c) 2021 Red Hat, Inc. 240de78c2SCleber Rosa# 340de78c2SCleber Rosa# Author: 440de78c2SCleber Rosa# Cleber Rosa <crosa@redhat.com> 540de78c2SCleber Rosa# 640de78c2SCleber Rosa# This work is licensed under the terms of the GNU GPL, version 2 or 740de78c2SCleber Rosa# later. See the COPYING file in the top-level directory. 840de78c2SCleber Rosa# 940de78c2SCleber Rosa# This is an ansible playbook file. Run it to set up systems with the 1040de78c2SCleber Rosa# gitlab-runner agent. 1140de78c2SCleber Rosa--- 1240de78c2SCleber Rosa- name: Installation of gitlab-runner 1340de78c2SCleber Rosa hosts: all 1440de78c2SCleber Rosa vars_files: 1540de78c2SCleber Rosa - vars.yml 1640de78c2SCleber Rosa tasks: 1740de78c2SCleber Rosa - debug: 1840de78c2SCleber Rosa msg: 'Checking for a valid GitLab registration token' 1940de78c2SCleber Rosa failed_when: "gitlab_runner_registration_token == 'PLEASE_PROVIDE_A_VALID_TOKEN'" 2040de78c2SCleber Rosa 2140de78c2SCleber Rosa - name: Create a group for the gitlab-runner service 2240de78c2SCleber Rosa group: 2340de78c2SCleber Rosa name: gitlab-runner 2440de78c2SCleber Rosa 2540de78c2SCleber Rosa - name: Create a user for the gitlab-runner service 2640de78c2SCleber Rosa user: 2740de78c2SCleber Rosa user: gitlab-runner 2840de78c2SCleber Rosa group: gitlab-runner 2940de78c2SCleber Rosa comment: GitLab Runner 3040de78c2SCleber Rosa home: /home/gitlab-runner 3140de78c2SCleber Rosa shell: /bin/bash 3240de78c2SCleber Rosa 3340de78c2SCleber Rosa - name: Remove the .bash_logout file when on Ubuntu systems 3440de78c2SCleber Rosa file: 3540de78c2SCleber Rosa path: /home/gitlab-runner/.bash_logout 3640de78c2SCleber Rosa state: absent 3740de78c2SCleber Rosa when: "ansible_facts['distribution'] == 'Ubuntu'" 3840de78c2SCleber Rosa 3940de78c2SCleber Rosa - name: Set the Operating System for gitlab-runner 4040de78c2SCleber Rosa set_fact: 4140de78c2SCleber Rosa gitlab_runner_os: "{{ ansible_facts[\"system\"]|lower }}" 4240de78c2SCleber Rosa - debug: 4340de78c2SCleber Rosa msg: gitlab-runner OS is {{ gitlab_runner_os }} 4440de78c2SCleber Rosa 4540de78c2SCleber Rosa - name: Set the architecture for gitlab-runner 4640de78c2SCleber Rosa set_fact: 4740de78c2SCleber Rosa gitlab_runner_arch: "{{ ansible_to_gitlab_arch[ansible_facts[\"architecture\"]] }}" 4840de78c2SCleber Rosa - debug: 4940de78c2SCleber Rosa msg: gitlab-runner arch is {{ gitlab_runner_arch }} 5040de78c2SCleber Rosa 5140de78c2SCleber Rosa - name: Download the matching gitlab-runner 5240de78c2SCleber Rosa get_url: 53*69c4befbSAlex Bennée dest: "/root/" 54*69c4befbSAlex Bennée url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_{{ gitlab_runner_arch }}.deb" 55*69c4befbSAlex Bennée 56*69c4befbSAlex Bennée - name: Install gitlab-runner via package manager 57*69c4befbSAlex Bennée apt: deb="/root/gitlab-runner_{{ gitlab_runner_arch }}.deb" 5840de78c2SCleber Rosa 5940de78c2SCleber Rosa - name: Register the gitlab-runner 60*69c4befbSAlex Bennée 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\"] }})'" 61*69c4befbSAlex Bennée 62*69c4befbSAlex Bennée # The secondary runner will still run under the single gitlab-runner service 63*69c4befbSAlex Bennée - name: Register secondary gitlab-runner 64*69c4befbSAlex Bennée 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\"] }})'" 65*69c4befbSAlex Bennée when: 66*69c4befbSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 67*69c4befbSAlex Bennée - ansible_facts['architecture'] == 'aarch64' 68*69c4befbSAlex Bennée - ansible_facts['distribution_version'] == '22.04' 6940de78c2SCleber Rosa 7040de78c2SCleber Rosa - name: Install the gitlab-runner service using its own functionality 71*69c4befbSAlex Bennée command: "/usr/bin/gitlab-runner install --user gitlab-runner --working-directory /home/gitlab-runner" 7240de78c2SCleber Rosa register: gitlab_runner_install_service_result 7340de78c2SCleber Rosa failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr" 7440de78c2SCleber Rosa 7540de78c2SCleber Rosa - name: Enable the gitlab-runner service 7640de78c2SCleber Rosa service: 7740de78c2SCleber Rosa name: gitlab-runner 7840de78c2SCleber Rosa state: started 7940de78c2SCleber Rosa enabled: yes 80