Skip to content

GitLab Runner

GitLab StarsGitLab ForksRepository TypeGitLab ReleaseGitLab IssuesGitLab Merge Requests

GitLab Runner

GitLab Runner - usługa, która wykonuje zadania CI/CD w ramach gitlab pipelines.

Repozytorium

Repozytorium

Instalacja GitLab Runner za pomocą Ansible

Standaryzacja i automatyzacja infrastruktury CI/CD runner machines przez podejście Infrastructure-as-Code:

  • Hardening bezpieczeństwa — SSH, sudo, users, firewall rules
  • Zarządzanie konfiguracją — timezone, hostname, locale, packages
  • Automatyzacja GitLab Runner — instalacja, rejestracja, cache NFS
  • Zarządzanie certyfikatami TLS — integracja z HashiCorp Vault
  • Wersjonowanie infrastruktury — wszystko w Git (Conventional Commits)
#RolaTypOpis
1set-timezoneExternalUstawia timezone, locale, language
2users-managementExternalTworzy użytkowników, grupy, SSH keys
3sudoExternalKonfiguruje sudo policies
4set-hostnameExternalUstawia FQDN hostname
5ssh-hardeningExternalKonfiguracja serwera SSH
6install-packagesExternalInstaluje pakiety (APT/DNF/APK)
7certificatesExternalZarządza certyfikatami TLS + Vault
8gitlab-runnerLocalInstaluje i rejestruje GitLab Runner
Role defaults
    ↓ overridden by
Role vars/
    ↓ overridden by
group_vars/all/
    ↓ overridden by
group_vars/gitlab_runners/
    ↓ overridden by
host_vars/gitlab-runner-*/
.
├── playbooks/
│   ├── install.yml                     # Główny playbook
│   ├── test_connection.yml             # Test połączenia
│   └── roles/
│       ├── gitlab-runner/              # Local role: GitLab Runner setup
│       ├── certificates/               # Local role: Certificate handling
│       └── [external roles gitignored]
├── inventory/
│   ├── hosts.yml                       # Definicja hostów
│   ├── group_vars/
│   │   └── all/                        # Global variables
│   │       ├── main.yml
│   │       ├── certificates.yml
│   │       ├── users_accont.yml
│   │       ├── technical_account.yml
│   │       ├── groups.yml
│   │       ├── locale.yml
│   │       └── sshd_config.yml
│   └── host_vars/
│       ├── gitlab-runner-1002/
│       ├── gitlab-runner-1003/
│       └── gitlab-runner-1004/
└── requirements.yml                    # External roles (versioned)

Zmienne globalne (inventory/group_vars/all/main.yml)

Section titled “Zmienne globalne (inventory/group_vars/all/main.yml)”
inv_all_root_root_domain: rachuna.dev

Konfiguracja runnerów (inventory/group_vars/gitlab_runners/configuration.yml)

Section titled “Konfiguracja runnerów (inventory/group_vars/gitlab_runners/configuration.yml)”
inv_gitlab_runner_cache_nfs:
  enabled: true
  src: "storage.rachuna.dev:/volume1/GITLAB_RUNNER_CACHE"
  path: "/cache"
  fstype: "nfs"
  opts: "rw,soft,timeo=10,retrans=3,noatime"

Per-host override (inventory/host_vars/gitlab-runner-1002/main.yml)

Section titled “Per-host override (inventory/host_vars/gitlab-runner-1002/main.yml)”
---
ansible_host: "gitlab-runner-1002.{{ inv_all_root_root_domain }}"
ansible_host_ip: 10.3.2.2
fqdn: "gitlab-runner-1002.{{ inv_all_root_root_domain }}"
ansible_user: "{{ lookup('env', 'ANSIBLE_USER') }}"
ansible_become_pass: "{{ lookup('env', 'ANSIBLE_PASSWORD') }}"
inv_disable_set_hostname: true
ansible_python_interpreter: /usr/bin/python3.14
  • Certyfikaty mogą być przechowywane w HashiCorp Vault
  • Ustaw inv_certificates_vault_addr w inventory
  • Runner musi mieć dostęp do Vault (via IAM lub token)

Wszystkie external roles instalowane są z:

https://gitlab.com/dev.rachuna/infrastructure/gitlab-com/ansible/-/blob/main/requirements.yml?ref_type=heads