ct_gitlab_runner
almaops.ct_gitlab_runner
Эта роль разворачивает gitlab-runner в контейнере Docker и регистрирует его в GitLab.
Переменные роли
ct_gitlab_runner_name
: имя, которое будет видно на странице runner'ов, по умолчанию - "{{ inventory_hostname }}"
.
ct_gitlab_runner_ct_name
: имя контейнера, по умолчанию - "gitlab-runner"
. Измените его, если собираетесь запускать несколько runner'ов на одном хосте.
ct_gitlab_runner_registration_token
: этот токен необходим для регистрации, его можно получить из проекта для конкретных runner'ов и из администраторской панели для общих runner'ов; обязательный параметр, нет значения по умолчанию.
ct_gitlab_runner_coordinator_url
: адрес вашего GitLab, по умолчанию настроен на "https://gitlab.com/ci"
; измените его, если у вас установлена локальная версия GitLab.
ct_gitlab_runner_tags
: метки; по умолчанию []
.
ct_gitlab_runner_executor
: исполнитель; по умолчанию "docker"
, так как это самый удобный способ; другие исполнители не тестировались.
ct_gitlab_runner_parallel_builds_number
: по умолчанию "1"
.
ct_gitlab_runner_run_untagged
: укажите, должен ли runner запускать задания без меток, по умолчанию - "true"
.
ct_gitlab_runner_docker_image
: по умолчанию "alpine"
.
ct_gitlab_runner_path_srv_dir
: базовый каталог для определения, где хранить конфигурации сервисов, по умолчанию - "/srv"
.
ct_gitlab_runner_path_cfg_dir
: конечный каталог, где хранятся конфигурации сервисов, по умолчанию - "{{ ct_gitlab_runner_path_srv_dir }}/{{ ct_gitlab_runner_ct_name }}/config"
.
ct_gitlab_runner_path_cfg
: файл конфигурации runner'а, по умолчанию - "{{ ct_gitlab_runner_path_cfg_dir }}/config.toml"
; не меняйте его, это действительно config.toml
, я клянусь.
ct_gitlab_runner_ct_image_tag
: версия runner'а, т.е. тег изображения gitlab-runner, по умолчанию - "alpine"
.
ct_gitlab_runner_ct_image
: изображение контейнера gitlab-runner, по умолчанию - "gitlab/gitlab-runner:{{ ct_gitlab_runner_ct_image_tag }}"
; измените только если хотите использовать кастомную сборку контейнера gitlab-runner.
ct_gitlab_runner_ct_restart_policy
: политика перезапуска контейнера, по умолчанию - "always"
.
ct_gitlab_runner_ct_state
: состояние контейнера после развертывания, по умолчанию - "started"
.
ct_gitlab_runner_ct_restart
: если нужно перезапустить контейнер после развертывания, по умолчанию - "false"
.
ct_gitlab_runner_ct_pull
: если нужно попытаться загрузить изображение во время развертывания, по умолчанию - "false"
.
ct_gitlab_runner_ct_recreate
: если нужно пересоздать контейнер, по умолчанию - "false"
.
ct_gitlab_runner_cache_s3_enabled
: если собираемся использовать S3/Minio для кэшей, по умолчанию - false
.
ct_gitlab_runner_cache_s3_server_address
: обязательный параметр, если S3 включен, значения по умолчанию нет.
ct_gitlab_runner_cache_s3_access_key
: обязательный параметр, если S3 включен, значения по умолчанию нет.
ct_gitlab_runner_cache_s3_secret_key
: обязательный параметр, если S3 включен, значения по умолчанию нет.
ct_gitlab_runner_force_reg
: если хотим повторно зарегистрировать этот runner; по умолчанию - false
.
ct_gitlab_runner_docker_volumes
: дополнительные монтирования для контейнеров, запущенных через docker executor, по умолчанию - []
; полезно, если хотите передать docker.sock
или смонтировать том /cache
.
ct_gitlab_runner_dind_enabled
: установите в true
, если нужно, чтобы ваши контейнеры Docker работали в привилегированном режиме; по умолчанию - false
.
ct_gitlab_runner_ct_volumes
: по умолчанию просто монтирует каталог конфигурации в контейнер runner'а, т.е. [ "{{ ct_gitlab_runner_path_cfg_dir }}:/etc/gitlab-runner:rw" ]
.
ct_gitlab_runner_dond_enabled
: если установлено в true
(и это по умолчанию), мы также передаем /var/run/docker.sock
в контейнер runner'а.
Есть несколько других интересных переменных. Ознакомьтесь с ними: defaults/main.yml
Пример плейбука
- hosts:
- gitlab_runners
become: true
vars:
# общая конфигурация
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 }}"
# токены
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
Лицензия
MIT
Информация об авторе
Дмитрий Кашин, freehck@freehck.com
ansible-galaxy install almaops/ansible-role-ct_gitlab_runner