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 2902f49476SAlex Bennée groups: kvm 3040de78c2SCleber Rosa comment: GitLab Runner 3140de78c2SCleber Rosa home: /home/gitlab-runner 3240de78c2SCleber Rosa shell: /bin/bash 3340de78c2SCleber Rosa 3440de78c2SCleber Rosa - name: Remove the .bash_logout file when on Ubuntu systems 3540de78c2SCleber Rosa file: 3640de78c2SCleber Rosa path: /home/gitlab-runner/.bash_logout 3740de78c2SCleber Rosa state: absent 3840de78c2SCleber Rosa when: "ansible_facts['distribution'] == 'Ubuntu'" 3940de78c2SCleber Rosa 4040de78c2SCleber Rosa - name: Set the Operating System for gitlab-runner 4140de78c2SCleber Rosa set_fact: 4240de78c2SCleber Rosa gitlab_runner_os: "{{ ansible_facts[\"system\"]|lower }}" 4340de78c2SCleber Rosa - debug: 4440de78c2SCleber Rosa msg: gitlab-runner OS is {{ gitlab_runner_os }} 4540de78c2SCleber Rosa 4640de78c2SCleber Rosa - name: Set the architecture for gitlab-runner 4740de78c2SCleber Rosa set_fact: 4840de78c2SCleber Rosa gitlab_runner_arch: "{{ ansible_to_gitlab_arch[ansible_facts[\"architecture\"]] }}" 4940de78c2SCleber Rosa - debug: 5040de78c2SCleber Rosa msg: gitlab-runner arch is {{ gitlab_runner_arch }} 5140de78c2SCleber Rosa 52*8c68c11cSAlex Bennée # Debian/Ubuntu setup 53*8c68c11cSAlex Bennée - name: Get gitlab-runner repo setup script (DEB) 5440de78c2SCleber Rosa get_url: 5569c4befbSAlex Bennée dest: "/root/" 56*8c68c11cSAlex Bennée url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" 57*8c68c11cSAlex Bennée mode: 0755 5882790dfeSAlex Bennée when: 5982790dfeSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 6069c4befbSAlex Bennée 61*8c68c11cSAlex Bennée - name: Run gitlab-runner repo setup script (DEB) 62*8c68c11cSAlex Bennée shell: "/root/script.deb.sh" 6382790dfeSAlex Bennée when: 6482790dfeSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 6582790dfeSAlex Bennée 66*8c68c11cSAlex Bennée - name: Install gitlab-runner (DEB) 67*8c68c11cSAlex Bennée ansible.builtin.apt: 68*8c68c11cSAlex Bennée name: gitlab-runner 69*8c68c11cSAlex Bennée update_cache: yes 70*8c68c11cSAlex Bennée state: present 71*8c68c11cSAlex Bennée when: 72*8c68c11cSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 73*8c68c11cSAlex Bennée 74*8c68c11cSAlex Bennée # RPM setup 75*8c68c11cSAlex Bennée - name: Get gitlab-runner repo setup script (RPM) 76*8c68c11cSAlex Bennée get_url: 77*8c68c11cSAlex Bennée dest: "/root/" 78*8c68c11cSAlex Bennée url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" 79*8c68c11cSAlex Bennée mode: 0755 8082790dfeSAlex Bennée when: 8182790dfeSAlex Bennée - ansible_facts['distribution'] == 'CentOS' 8240de78c2SCleber Rosa 83*8c68c11cSAlex Bennée - name: Run gitlab-runner repo setup script (RPM) 84*8c68c11cSAlex Bennée shell: "/root/script.rpm.sh" 85*8c68c11cSAlex Bennée when: 86*8c68c11cSAlex Bennée - ansible_facts['distribution'] == 'CentOS' 87*8c68c11cSAlex Bennée 88*8c68c11cSAlex Bennée - name: Install gitlab-runner (RPM) 89*8c68c11cSAlex Bennée yum: 90*8c68c11cSAlex Bennée name: gitlab-runner 91*8c68c11cSAlex Bennée update_cache: yes 92*8c68c11cSAlex Bennée state: present 93*8c68c11cSAlex Bennée when: 94*8c68c11cSAlex Bennée - ansible_facts['distribution'] == 'CentOS' 95*8c68c11cSAlex Bennée 96*8c68c11cSAlex Bennée # Register Runners 9740de78c2SCleber Rosa - name: Register the gitlab-runner 9869c4befbSAlex 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\"] }})'" 9969c4befbSAlex Bennée 10069c4befbSAlex Bennée # The secondary runner will still run under the single gitlab-runner service 10169c4befbSAlex Bennée - name: Register secondary gitlab-runner 10269c4befbSAlex 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\"] }})'" 10369c4befbSAlex Bennée when: 10469c4befbSAlex Bennée - ansible_facts['distribution'] == 'Ubuntu' 10569c4befbSAlex Bennée - ansible_facts['architecture'] == 'aarch64' 10669c4befbSAlex Bennée - ansible_facts['distribution_version'] == '22.04' 10740de78c2SCleber Rosa 10840de78c2SCleber Rosa - name: Install the gitlab-runner service using its own functionality 10969c4befbSAlex Bennée command: "/usr/bin/gitlab-runner install --user gitlab-runner --working-directory /home/gitlab-runner" 11040de78c2SCleber Rosa register: gitlab_runner_install_service_result 11140de78c2SCleber Rosa failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr" 11240de78c2SCleber Rosa 11340de78c2SCleber Rosa - name: Enable the gitlab-runner service 11440de78c2SCleber Rosa service: 11540de78c2SCleber Rosa name: gitlab-runner 11640de78c2SCleber Rosa state: started 11740de78c2SCleber Rosa enabled: yes 118