Ansible Playbook
Kompletny pipeline CI/CD dla projektów Ansible Playbook. Obsługuje walidację statyczną, instalację ról Galaxy, testy składni i dry-run oraz deployment na środowiska zdefiniowane w GitLab.
Użycie
Section titled “Użycie”W projekcie dodaj do .gitlab-ci.yml:
Struktura projektu
Section titled “Struktura projektu”Oczekiwana struktura repozytorium projektu:
Joby i stagi
Section titled “Joby i stagi”Przepływ CI (branch != main)
Section titled “Przepływ CI (branch != main)”Przepływ CD (źródło: api/push/web)
Section titled “Przepływ CD (źródło: api/push/web)”Tabela jobów
Section titled “Tabela jobów”| Job | Nazwa emoji | Stage | CI | CD |
|---|---|---|---|---|
| versioning (Set Version) | 🕵 Set Version | .pre | ✅ | ✅ |
| environment-deployment-prepare | 🔧 Prepare Dynamic Deployment | .pre | ❌ | ✅ |
| conventional-commits | 🔍 Analyze Conventional Commits | validate | ✅ | ❌ |
| yamllint | 🕵 yamllint | validate | ✅* | ❌ |
| shellcheck | 🐚 shellcheck | validate | ✅* | ❌ |
| ansible-lint | 🔍 ansible-lint | validate | ✅ | ❌ |
| dependency | 📦 dependency | dependency | ✅ | ✅** |
| build | 🚀 build | build | ❌ | ❌ |
| ansible-syntax | 🧩 ansible-syntax | tests | ✅ | ❌ |
| ansible-check | 🔍 ansible-check | tests | ✅ | ❌ |
| unit-test | 🧪 unit-test | tests | ❌ | ❌ |
| trigger-deployment | 🚀 Trigger Deployment | deployment | ❌ | ✅ |
| deployment | 💥 deployment | deployment | ❌ | ✅** |
| publish | 🌐 publish | publish | ❌ | ❌ |
| versioning (Publish Version) | 📍 Publish Version | publish | ✅ | ❌ |
* tylko gdy zmienił się odpowiedni typ pliku względem main
** uruchamia się w child pipeline (CI_PIPELINE_SOURCE == "parent_pipeline")
Ansible-specyficzne joby
Section titled “Ansible-specyficzne joby”🔍 ansible-lint (validate)
Section titled “🔍 ansible-lint (validate)”Statyczna analiza kodu Ansible. Uruchamia ansible-lint --force-color . na całym repozytorium.
📦 dependency (dependency)
Section titled “📦 dependency (dependency)”Instaluje role Ansible Galaxy z pliku requirements.yml:
Wynik zapisuje do cache (key: $CI_PROJECT_ID, policy: push → playbooks/roles/). Kolejne joby (ansible-syntax, ansible-check, deployment) pobierają role z cache (policy: pull).
🧩 ansible-syntax (tests)
Section titled “🧩 ansible-syntax (tests)”Sprawdza składnię każdego playbooka w ANSIBLE_PLAYBOOKS_PATH:
Opcjonalne argumenty: ANSIBLE_PLAYBOOK_EXTRA_ARGS.
🔍 ansible-check (tests)
Section titled “🔍 ansible-check (tests)”Dry-run każdego playbooka (łączy się z hostami, nie wprowadza zmian):
Wymaga SSH key (gitlab_ssh_key w before_script). Zależy od: ansible-syntax, ansible-lint, dependency.
💥 deployment (deployment — child pipeline)
Section titled “💥 deployment (deployment — child pipeline)”Uruchamia check mode playbooka na konkretnym środowisku GitLab:
Uruchamiany jako child pipeline triggerowany przez 🚀 Trigger Deployment (jeden job per środowisko z GitLab Environments).
Zmienne konfiguracyjne
Section titled “Zmienne konfiguracyjne”Zmienne Ansible (wspólne dla syntax, check, deployment)
Section titled “Zmienne Ansible (wspólne dla syntax, check, deployment)”| Zmienna | Domyślna | Opis |
|---|---|---|
ANSIBLE_PLAYBOOKS_PATH | playbooks | Katalog z playbook’ami |
ANSIBLE_PLAYBOOK_NAME | install.yml | Nazwa pliku playbooka (deployment) |
ANSIBLE_INVENTORY_PATH | inventory/hosts.yml | Ścieżka do inventory |
ANSIBLE_USER | root | Użytkownik SSH |
ANSIBLE_HOST_KEY_CHECKING | false | Wyłączenie sprawdzania host key |
ANSIBLE_FORCE_COLOR | true | Kolorowy output |
VAULT_SKIP_VERIFY | "true" | Pominięcie weryfikacji Vault TLS |
ANSIBLE_PLAYBOOK_EXTRA_ARGS | — | Dodatkowe argumenty ansible-playbook |
Zmienne dependency
Section titled “Zmienne dependency”| Zmienna | Domyślna | Opis |
|---|---|---|
REQUIREMENTS_FILE_PATH | requirements.yml | Ścieżka do pliku requirements |
Runner
Section titled “Runner”Wszystkie joby uruchamiane na runnerze z tagiem gitlab-rnp.
Prefiks YAML
Section titled “Prefiks YAML”.pipelines.ansible-playbook.*