almaops.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.ct_gitlab_runner