almaops.ct_gitlab_runner
almaops.ct_gitlab_runner
Ce rôle déploie gitlab-runner dans un conteneur Docker et l'enregistre dans GitLab.
Variables du Rôle
ct_gitlab_runner_name: le nom qui sera visible sur la page des runners, par défaut c'est "{{ inventory_hostname }}"
ct_gitlab_runner_ct_name: nom du conteneur, par défaut c'est "gitlab-runner" ; changez-le si vous prévoyez d'exécuter plusieurs runners sur le même hôte
ct_gitlab_runner_registration_token: ce jeton est nécessaire pour s'enregistrer ; il peut être obtenu à partir du projet pour des runners spécifiques et à partir du panneau d'administration pour des runners partagés ; paramètre obligatoire, pas de valeur par défaut
ct_gitlab_runner_coordinator_url: adresse de votre GitLab, par défaut configurée sur "https://gitlab.com/ci" ; changez-la si vous avez une installation GitLab sur site
ct_gitlab_runner_tags: sujet ; par défaut []
ct_gitlab_runner_executor: sujet ; par défaut "docker" car c'est le moyen le plus pratique ; aucun autre exécuteur n'a été testé
ct_gitlab_runner_parallel_builds_number: par défaut "1"
ct_gitlab_runner_run_untagged: indiquez si le runner doit exécuter des jobs non tagués, par défaut "true"
ct_gitlab_runner_docker_image: par défaut "alpine"
ct_gitlab_runner_path_srv_dir: répertoire de base pour déterminer où stocker les configurations de service, par défaut "/srv"
ct_gitlab_runner_path_cfg_dir: répertoire final où les configurations de service sont stockées, par défaut "{{ ct_gitlab_runner_path_srv_dir }}/{{ ct_gitlab_runner_ct_name }}/config"
ct_gitlab_runner_path_cfg: fichier de configuration du runner, par défaut "{{ ct_gitlab_runner_path_cfg_dir }}/config.toml" ; ne le changez pas, c'est vraiment config.toml, je le jure
ct_gitlab_runner_ct_image_tag: version du runner, c'est-à-dire le tag d'image de gitlab-runner, par défaut "alpine"
ct_gitlab_runner_ct_image: image du conteneur gitlab-runner, par défaut "gitlab/gitlab-runner:{{ ct_gitlab_runner_ct_image_tag }}" ; changez-le uniquement si vous souhaitez avoir une version personnalisée du conteneur gitlab-runner
ct_gitlab_runner_ct_restart_policy: politique de redémarrage du conteneur, par défaut "always"
ct_gitlab_runner_ct_state: état du conteneur après le déploiement, par défaut "started"
ct_gitlab_runner_ct_restart: si nous avons besoin de redémarrer le conteneur après le déploiement, par défaut "false"
ct_gitlab_runner_ct_pull: si nous devons essayer de récupérer l'image lors du déploiement, par défaut "false"
ct_gitlab_runner_ct_recreate: si nous devons recréer le conteneur, par défaut "false"
ct_gitlab_runner_cache_s3_enabled: si nous allons utiliser S3/Minio pour les caches, par défaut false
ct_gitlab_runner_cache_s3_server_address: sujet, obligatoire si S3 est activé, pas de valeur par défaut
ct_gitlab_runner_cache_s3_access_key: sujet, obligatoire si S3 est activé, pas de valeur par défaut
ct_gitlab_runner_cache_s3_secret_key: sujet, obligatoire si S3 est activé, pas de valeur par défaut
ct_gitlab_runner_force_reg: si nous voulons réenregistrer ce runner ; par défaut false
ct_gitlab_runner_docker_volumes: montages supplémentaires pour les conteneurs exécutés par l'exécuteur Docker, par défaut [] ; utile si vous souhaitez passer docker.sock ou monter le volume /cache
ct_gitlab_runner_dind_enabled: définir sur true si vous avez besoin que vos conteneurs Docker s'exécutent en mode privilégié ; par défaut false
ct_gitlab_runner_ct_volumes: par défaut, monte simplement un répertoire de configuration dans le conteneur du runner, c'est-à-dire [ "{{ ct_gitlab_runner_path_cfg_dir }}:/etc/gitlab-runner:rw" ]
ct_gitlab_runner_dond_enabled: si défini sur true (et c'est la valeur par défaut), nous passons également /var/run/docker.sock dans le conteneur du runner
Il y a plusieurs autres variables intéressantes. Jetez un œil : defaults/main.yml
Exemple de Playbook
- hosts:
- gitlab_runners
become: true
vars:
# cfg commun
ct_gitlab_runner_ct_image_tag: "v14.8.1"
ct_gitlab_runner_cache_s3_enabled: true
ct_gitlab_runner_cache_s3_server_address: "{{ minio_bind_ip }}:{{ minio_bind_port }}"
ct_gitlab_runner_cache_s3_access_key: "{{ minio_access_key }}"
ct_gitlab_runner_cache_s3_secret_key: "{{ minio_secret_key }}"
ct_gitlab_runner_name: "{{ runner_name }}_{{ inventory_hostname }}"
gitlab_runner_ct_name: "gitlab-runner_{{ runner_name }}"
# jetons
main_registration_token: "<...>"
proj_registration_token: "<...>"
roles:
- role: almaops.ct_gitlab_runner
tags:
- runner-tag-common
vars:
runner_name: "common"
ct_gitlab_runner_registration_token: "{{ main_registration_token }}"
ct_gitlab_runner_parallel_builds_number: "3"
ct_gitlab_runner_tags:
- common
- role: almaops.ct_gitlab_runner
tags:
- runner-tag-proj
vars:
runner_name: "proj"
ct_gitlab_runner_registration_token: "{{ proj_registration_token }}"
ct_gitlab_runner_parallel_builds_number: "1"
ct_gitlab_runner_run_untagged: "false"
ct_gitlab_runner_tags:
- proj
Licence
MIT
Informations sur l'Auteur
Dmitrii Kashin, freehck@freehck.com
