GitLab Runner
GitLab Runner to agent wykonujący joby zdefiniowane w .gitlab-ci.yml. Projekt automatyzuje instalację, konfigurację i hardening trzech maszyn runner (gitlab-runner-1025, gitlab-runner-1026, gitlab-runner-1027) dla domeny rachuna-net.pl .
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-timezoneExternal Ustawia timezone, locale, language 2 users-managementExternal Tworzy użytkowników, grupy, SSH keys 3 sudoExternal Konfiguruje sudo policies 4 set-hostnameExternal Ustawia FQDN hostname 5 install-packagesExternal Instaluje pakiety (APT/DNF/APK) 6 certificatesExternal Zarządza certyfikatami TLS + Vault 7 gitlab-runnerLocal 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-1025/
│ ├── gitlab-runner-1026/
│ └── gitlab-runner-1027/
└── requirements.yml # External roles (versioned)
inv_all_root_root_domain : rachuna-net.pl
inv_all_timezone : "Europe/Warsaw"
inv_all_locale : "en_US.UTF-8"
inv_all_language : "en_US"
inv_all_lc_all : "en_US.UTF-8"
inv_gitlab_runner_cache_nfs :
path : /mnt/cache
server : nfs.rachuna-net.pl
inv_host_gitlab_runner_configuration :
concurrent : 4
check_interval : 0
fqdn : gitlab-runner-1025.rachuna-net.pl
Klonuj repozytorium
git clone https://gitlab.com/pl.rachuna-net/infrastructure/gitlab-com/ansible.git
cd ansible
Instalacja external roles
ansible-galaxy role install -f -r requirements.yml -p playbooks/roles
Test połączenia z hostami
ansible-playbook playbooks/test_connection.yml -i inventory/hosts.yml
Dry-run (bez zmian)
ansible-playbook playbooks/install.yml -i inventory/hosts.yml --check
Pełna instalacja
ansible-playbook playbooks/install.yml -i inventory/hosts.yml
# Uruchomienie tylko jednego role'a
ansible-playbook playbooks/install.yml -i inventory/hosts.yml -t gitlab-runner
# Dry-run z verbose output
ansible-playbook playbooks/install.yml -i inventory/hosts.yml --check -vvv
# Syntax check
ansible-playbook playbooks/install.yml --syntax-check
# Lista tasków bez wykonania
ansible-playbook playbooks/install.yml --list-tasks
Dodaj hosta do inventory
# inventory/hosts.yml
gitlab_runners :
children :
nodes :
hosts :
gitlab-runner-1028 :
Utwórz host_vars
mkdir -p inventory/host_vars/gitlab-runner-1028
Skonfiguruj hostname
# inventory/host_vars/gitlab-runner-1028/main.yml
fqdn : gitlab-runner-1028.rachuna-net.pl
Skonfiguruj runnera
# inventory/host_vars/gitlab-runner-1028/gitlab-runner.yml
inv_host_gitlab_runner_configuration :
concurrent : 4
Uruchom playbook
ansible-playbook playbooks/install.yml -i inventory/hosts.yml
# Test połączenia
ansible-playbook playbooks/test_connection.yml -i inventory/hosts.yml
# Inventory validation
ansible-inventory -i inventory/hosts.yml --list
ansible-inventory -i inventory/hosts.yml --host gitlab-runner-1025
# Check mode
ansible-playbook playbooks/install.yml -i inventory/hosts.yml --check
# Verbose output (-v / -vv / -vvv)
ansible-playbook playbooks/install.yml -i inventory/hosts.yml -vvv
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/pl.rachuna-net/artifacts/ansible-roles/
Rola Wersja Cel set-timezonev1.3.0 Timezone + locale users-managementv1.2.0 Users + groups sudov1.2.0 Sudo policies set-hostnamev1.2.0 FQDN hostname install-packagesv1.1.0 System packages certificatesv1.0.0 TLS certificates ssh-hardeningv1.2.0 SSH hardening