Architektura rozwiązania¶
Architektura została zaprojektowana z myślą o modularności, przejrzystości oraz łatwości utrzymania konfiguracji infrastruktury przy użyciu Ansible. Każdy element infrastruktury jest zarządzany jako osobne, wersjonowane repozytorium GitLab, co umożliwia:
- niezależny rozwój ról i playbooków,
- testowanie i walidację przy użyciu CI/CD,
- ponowne wykorzystanie ról w różnych projektach,
- automatyzację wdrożeń za pomocą pipeline’ów GitLab CI.
Struktura w repozytorium¶
Poniżej przestawiona jest infrastruktura grup i repozytoriów w gitlabie dla projektu Ansible
pl.rachuna-net/infrastructure/ansible
├── inventory # repozytorium z konfiguracją
├── playbooks # repozytoria z plabyookami
│ └── linux-hardening
└── roles # repozytoria z ansible roles
├── configure-ssh
├── configure-sudo
├── gitlab-runners
├── install-consul
├── install-packages
└── set-hostname
Zasady organizacji repozytoriów¶
- inventory – zawiera pliki inwentaryzacyjne (
hosts
) oraz zmienne grupowe/hostowe. To punkt wejścia dla playbooków. - playbooks – każdy katalog reprezentuje osobny playbook dedykowany do konkretnego celu (np. hardening systemów Linux).
- roles – każda rola odpowiada za jedną funkcjonalność, zgodnie z konwencją Ansible Galaxy.
Przepływ pracy (Workflow)¶
- Tworzenie roli – nowa rola jest dodawana jako osobne repozytorium w
roles/
, rozwijana i testowana niezależnie (np. z użyciem Molecule). - Tworzenie playbooka – playbook zawiera logiczne połączenie ról i jest uruchamiany na wskazanych hostach.
- Zarządzanie konfiguracją – inventory zarządza środowiskami, np.
prod
,dev
,test
, wraz z odpowiednimi zmiennymi. - Automatyzacja – pipeline GitLab CI integruje testy oraz ewentualne wdrożenia (np. przez tagowanie commitów lub merge na
main
).
Rozszerzenia i przyszłe kierunki¶
- Integracja z Terraformem w celu automatycznego provisioningu infrastruktury.
- Wdrożenie centralnego rejestru ról (np. za pomocą GitLab Packages).
- Testy ról z użyciem Ansible Molecule i symulacja środowisk na Proxmox lub Dockerze.
- Standaryzacja tagowania i wersjonowania ról oraz playbooków.