almaops.ct_gitlab_runner
almaops.ct_gitlab_runner
Este rol despliega gitlab-runner en un contenedor de Docker y lo registra en GitLab.
Variables del rol
ct_gitlab_runner_name
: el nombre que se verá en la página de runners, por defecto es "{{ inventory_hostname }}"
ct_gitlab_runner_ct_name
: nombre del contenedor, por defecto es "gitlab-runner"
, cámbialo si vas a ejecutar múltiples runners en el mismo host.
ct_gitlab_runner_registration_token
: este token es necesario para el registro, se puede obtener del proyecto para runners específicos y del panel de administración para runners compartidos; es un parámetro obligatorio, sin valor por defecto.
ct_gitlab_runner_coordinator_url
: dirección de tu GitLab, por defecto está configurada en "https://gitlab.com/ci"
; cámbiala si tienes una instalación de GitLab local.
ct_gitlab_runner_tags
: sujetos; el valor por defecto es []
.
ct_gitlab_runner_executor
: sujetos; el valor por defecto es "docker"
ya que es la forma más conveniente; no se han probado otros ejecutores.
ct_gitlab_runner_parallel_builds_number
: el valor por defecto es "1"
.
ct_gitlab_runner_run_untagged
: especifica si el runner debe ejecutar trabajos sin etiquetar, el valor por defecto es "true"
.
ct_gitlab_runner_docker_image
: el valor por defecto es "alpine"
.
ct_gitlab_runner_path_srv_dir
: directorio base para determinar dónde almacenar las configuraciones del servicio, el valor por defecto es "/srv"
.
ct_gitlab_runner_path_cfg_dir
: directorio final, donde se almacenan las configuraciones del servicio, el valor por defecto es "{{ ct_gitlab_runner_path_srv_dir }}/{{ ct_gitlab_runner_ct_name }}/config"
.
ct_gitlab_runner_path_cfg
: archivo de configuración del runner, el valor por defecto es "{{ ct_gitlab_runner_path_cfg_dir }}/config.toml"
; no lo cambies, es realmente config.toml
, lo prometo.
ct_gitlab_runner_ct_image_tag
: versión del runner, es decir, el tag de la imagen de gitlab-runner, el valor por defecto es "alpine"
.
ct_gitlab_runner_ct_image
: imagen del contenedor de gitlab-runner, el valor por defecto es "gitlab/gitlab-runner:{{ ct_gitlab_runner_ct_image_tag }}"
; cámbialo solo si deseas tener una compilación personalizada del contenedor de gitlab-runner.
ct_gitlab_runner_ct_restart_policy
: política de reinicio del contenedor, el valor por defecto es "always"
.
ct_gitlab_runner_ct_state
: estado del contenedor después del despliegue, el valor por defecto es "started"
.
ct_gitlab_runner_ct_restart
: si necesitamos reiniciar el contenedor después del despliegue, el valor por defecto es "false"
.
ct_gitlab_runner_ct_pull
: si necesitamos intentar descargar la imagen durante el despliegue, el valor por defecto es "false"
.
ct_gitlab_runner_ct_recreate
: si necesitamos recrear el contenedor, el valor por defecto es "false"
.
ct_gitlab_runner_cache_s3_enabled
: si vamos a usar S3/Minio para caches, el valor por defecto es false
.
ct_gitlab_runner_cache_s3_server_address
: sujeto, obligatorio si S3 está habilitado, sin valor por defecto.
ct_gitlab_runner_cache_s3_access_key
: sujeto, obligatorio si S3 está habilitado, sin valor por defecto.
ct_gitlab_runner_cache_s3_secret_key
: sujeto, obligatorio si S3 está habilitado, sin valor por defecto.
ct_gitlab_runner_force_reg
: si queremos re-registrar este runner; el valor por defecto es false
.
ct_gitlab_runner_docker_volumes
: montajes adicionales para contenedores ejecutados por el ejecutor de Docker, el valor por defecto es []
; útil si deseas pasar docker.sock
o montar el volumen /cache
.
ct_gitlab_runner_dind_enabled
: configura en true
si necesitas que tus contenedores Docker se ejecuten en modo privilegiado; el valor por defecto es false
.
ct_gitlab_runner_ct_volumes
: por defecto solo monta un directorio de configuración en el contenedor del runner, es decir, [ "{{ ct_gitlab_runner_path_cfg_dir }}:/etc/gitlab-runner:rw" ]
.
ct_gitlab_runner_dond_enabled
: si se establece en true
(y este es el valor por defecto), también pasamos /var/run/docker.sock
al contenedor del runner.
Hay varias variables interesantes más. Échales un vistazo: defaults/main.yml
Ejemplo de Playbook
- hosts:
- gitlab_runners
become: true
vars:
# configuración común
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 }}"
# tokens
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
Licencia
MIT
Información del autor
Dmitrii Kashin, freehck@freehck.com
ansible-galaxy install almaops.ct_gitlab_runner