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)
| # | Rola | Typ | Opis |
|---|
| 1 | set-timezone | External | Ustawia timezone, locale, language |
| 2 | users-management | External | Tworzy użytkowników, grupy, SSH keys |
| 3 | sudo | External | Konfiguruje sudo policies |
| 4 | set-hostname | External | Ustawia FQDN hostname |
| 5 | ssh-hardening | External | Konfiguracja serwera SSH |
| 6 | install-packages | External | Instaluje pakiety (APT/DNF/APK) |
| 7 | certificates | External | Zarządza certyfikatami TLS + Vault |
| 8 | gitlab-runner | Local | Instaluje 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)
inv_all_root_root_domain: rachuna.dev
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"
---
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