ct_gitlab_runner

almaops.ct_gitlab_runner

This role deploys gitlab-runner in docker container, and register it in gitlab.

Role Variables

ct_gitlab_runner_name: the name that will be seen on runners page, default is "{{ inventory_hostname }}"

ct_gitlab_runner_ct_name: container name, default is "gitlab-runner", change it if you're going to run multiple runners on the same host

ct_gitlab_runner_registration_token: this token is needed to register, can be acquired from project for specific runners, and from admin panel for shared runners; mandatory parameter, no default

ct_gitlab_runner_coordinator_url: address of your gitlab, by default is configured to "https://gitlab.com/ci"; change it if you have an on-premise gitlab installation

ct_gitlab_runner_tags: subj; default is []

ct_gitlab_runner_executor: subj; default is "docker" as it's the most convenient way; no other executors are tested

ct_gitlab_runner_parallel_builds_number: the default is "1"

ct_gitlab_runner_run_untagged: specify if runner has to run untagged jobs, default is "true"

ct_gitlab_runner_docker_image: the default is "alpine"

ct_gitlab_runner_path_srv_dir: base dir to determine where to store service configs, default is "/srv"

ct_gitlab_runner_path_cfg_dir: final dir, where service configs are stored, default is "{{ ct_gitlab_runner_path_srv_dir }}/{{ ct_gitlab_runner_ct_name }}/config"

ct_gitlab_runner_path_cfg: runner config file, default is "{{ ct_gitlab_runner_path_cfg_dir }}/config.toml"; do not change it, it's really config.toml, I swear

ct_gitlab_runner_ct_image_tag: runner version, i.e. gitlab-runner's image tag, default is "alpine"

ct_gitlab_runner_ct_image: image of gitlab-runner container, default is "gitlab/gitlab-runner:{{ ct_gitlab_runner_ct_image_tag }}"; change only if you want to have some custom build of gitlab-runner container

ct_gitlab_runner_ct_restart_policy: container restart policy, default is "always"

ct_gitlab_runner_ct_state: container state after deploy, default is "started"

ct_gitlab_runner_ct_restart: if we need to restart container after deploy, default is "false"

ct_gitlab_runner_ct_pull: if we need to try to pull the image while deploy, default is "false"

ct_gitlab_runner_ct_recreate: if we need to recreate the container, default is "false"

ct_gitlab_runner_cache_s3_enabled: if we're going to use S3/Minio for caches, default is false

ct_gitlab_runner_cache_s3_server_address: subj, mandatory if s3 enabled, no default

ct_gitlab_runner_cache_s3_access_key: subj, mandatory if s3 enabled, no default

ct_gitlab_runner_cache_s3_secret_key: subj, mandatory if s3 enabled, no default

ct_gitlab_runner_force_reg: if we want to re-register this runner; default is false

ct_gitlab_runner_docker_volumes: additional mounts for containers runned by docker executor, default is []; useful if you want to pass docker.sock or to mount /cache volume

ct_gitlab_runner_dind_enabled: set to true if you need your docker containers to run in priveleged mode; default is false

ct_gitlab_runner_ct_volumes: by default just mounts a configuration directory into runner container, i.e. [ "{{ ct_gitlab_runner_path_cfg_dir }}:/etc/gitlab-runner:rw" ]

ct_gitlab_runner_dond_enabled: if set to true (and this is the default), we also pass /var/run/docker.sock into runner container

There're several more interesting variables. Have a look on them: defaults/main.yml

Example Playbook

- hosts:
    - gitlab_runners
  become: true
  vars:
    # common cfg
    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

License

MIT

Author Information

Dmitrii Kashin, freehck@freehck.com

About

deploy gitlab-runner in docker container and register it

Install
ansible-galaxy install almaops/ansible-role-ct_gitlab_runner
GitHub repository
License
Unknown
Downloads
568
Owner
Premium IT Consulting