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