ansible-playbooks
Ansible Playbooks
Kubernetes cluster'ları ve sunucular için sağlık kontrolü, raporlama ve bakım amaçlı Ansible playbook koleksiyonu.
Tüm playbook'ların detaylı kullanım kılavuzlarına GitHub Pages Dokümantasyonu üzerinden erişebilirsiniz.
Kurulum
İşletim sistemine göre ayrı kurulum talimatları için: docs/00_installation.md
Hızlı başlangıç:
ansible-playbook -i inventories-example/musteri_a/hosts.ini playbooks/01_check_pod_health.yml
Yapı
playbooks/ Playbook dosyaları (01-42, numaralandırılmış)
playbooks/tasks/ Paylaşılan/tekrar kullanılan görev listeleri (import_tasks ile çağrılır)
playbooks/files/ Hedef sunuculara kopyalanacak statik betik ve yapılandırma dosyaları
inventories-example/ Örnek inventory dosyaları (musteri_a örnek olarak repoda)
inventories/ Gerçek ortam inventory'leri (tümü gitignore'lu)
docs/ Her playbook için kullanım kılavuzu (numarayla eşleşir)
Playbook'lar
| # | Playbook | Açıklama | Salt-okunur mu? |
|---|---|---|---|
| 00 | — | Kurulum talimatları | — |
| 01 | check_pod_health | Kubernetes pod sağlık durumu | ✅ |
| 02 | check_open_nodeports | Açık NodePort'ları bulur, browser linki üretir | ✅ |
| 03 | check_docker_containers | Docker container durumu ve port linkleri | ✅ |
| 04 | check_k8s_versions | kubectl/kubeadm/kubelet/containerd/runc/etcd sürüm raporu | ✅ |
| 05 | check_k8s_services | K8s/container servislerinin durumu ve son logları | ✅ |
| 06 | update_k8s_services | kubeadm ile K8s stack güncellemesi | ⚠️ Hayır — cluster'ı değiştirir |
| 07 | check_calico | Calico sürümü, opsiyonel güncelleme | ⚠️ Sadece calico_manifest_url verilirse değişiklik yapar |
| 08 | check_server_time | Sunucu zamanı/saat dilimi ve zaman senkron servisi | ✅ |
| 09 | set_server_timezone | Saat dilimini Europe/Istanbul yapar | ⚠️ Hayır — sistem ayarını değiştirir |
| 10 | check_system_health | OS/CPU/RAM/disk/süreç/sanallaştırma raporu | ✅ |
| 11 | check_monitoring_tools | İzleme araçlarını kurar/kontrol eder, örnek çıktı ve yorum üretir | ⚠️ Eksik araçları kurar |
| 12 | get_argocd_password | ArgoCD admin şifresini okur | ✅ |
| 13 | check_journal_errors | journalctl kernel + sistem hata/uyarı logları | ✅ |
| 14 | check_metrics_server | metrics-server kurulu/Available mı | ✅ |
| 15 | get_metrics_server_stats | kubectl top node/pod istatistikleri | ✅ |
| 16 | ensure_metrics_server | Yoksa kurar, sonra top istatistikleri | ⚠️ Eksikse kurar |
| 17 | check_container_images | Host imaj envanteri (yüklü/kullanımda/tarih) | ✅ |
| 18 | prune_unused_images | Kullanılmayan imajları listeler / onayla siler | ⚠️ image_prune_confirm=true ile siler |
| 19 | check_network_connectivity | DNS/TCP/HTTP/proxy ile internet erişim profili | ✅ |
| 20 | check_host_ports_firewall | Dinleyen portlar, bind tipi, süreç + iptables/nft/UFW | ✅ |
| 21 | check_tls_certificates | K8s/PKI + Ingress domain/süre + TLS secret’lar | ✅ |
| 22 | check_k8s_warning_events | Kubernetes Warning event özeti | ✅ |
| 23 | check_storage_health | Disk/inode + runtime disk + PV/PVC | ✅ |
| 24 | check_node_capacity | Node conditions + capacity/requests/usage | ✅ |
| 25 | check_etcd_controlplane | etcd / control-plane sağlık (k3s+kubeadm) | ✅ |
| 26 | check_cronjobs_jobs | CronJob envanteri + Failed Job’lar | ✅ |
| 27 | check_cluster_dns | CoreDNS / cluster DNS | ✅ |
| 28 | check_network_policies | NetworkPolicy envanteri | ✅ |
| 29 | backup_k8s_etcd | etcd yedeği (k3s/kubeadm) alır | ⚠️ Hayır — diske snapshot yazar ve eski yedekleri temizler |
| 30 | check_large_files | Sistemdeki 1GB+ büyük dosyaları bulur | ✅ |
| 31 | check_external_endpoints | Dış API/Web servislerine erişimi test eder | ✅ |
| 32 | verify_etcd_backup | Son etcd snapshot bütünlüğü ve opsiyonel izole restore testi | ⚠️ Restore testi opsiyonel |
| 33 | check_upgrade_readiness | Kubernetes yükseltme öncesi engel ve deprecated API kontrolü | ✅ |
| 34 | check_workload_resilience | Probe, resource, replica, PDB ve image dayanıklılık denetimi | ✅ |
| 35 | check_service_endpoints | Service / EndpointSlice hazır backend sağlığı | ✅ |
| 36 | check_pod_security_posture | Pod Security Admission ve container güvenlik duruşu | ✅ |
| 37 | check_rbac_risks | cluster-admin, wildcard ve privilege escalation RBAC riskleri | ✅ |
| 38 | check_control_plane_security | API server, audit, encryption-at-rest ve PKI izinleri | ✅ |
| 39 | diagnose_unschedulable_pods | Pending ve başlatılamayan pod kök neden analizi | ✅ |
| 40 | check_node_baseline_drift | Node OS/kernel/cgroup/containerd/kubelet drift karşılaştırması | ✅ |
| 41 | patch_and_reboot_nodes | Sıralı drain, paket güncelleme, reboot ve uncordon | ⚠️ Açık onayla değiştirir |
| 42 | generate_support_bundle | Redakte edilmiş Kubernetes/sistem tanı arşivi | ⚠️ Controller'a arşiv yazar |
Her playbook'un tam kullanım kılavuzu (gereksinimler, örnek çıktı, notlar) docs/ klasöründe numarayla eşleşen dosyadadır.
CI
Her push/PR'da GitHub Actions ile yamllint, ansible-lint, örnek inventory doğrulaması, yardımcı betik kontrolleri, doküman eşleşmesi, Kubernetes yükseltme politikası davranış testleri ve tüm playbook'lar için --syntax-check çalışır. CI araç sürümleri requirements-ci.txt içinde sabitlenmiştir.
Inventory'ler
inventories-example/— Repoda tutulan örnek inventory dosyaları (örn:musteri_aplaceholder host/şifre değerleriyle).inventories/— Gerçek müşteri/production ortam inventory'leri için ayrılmıştır. Bu klasörün tamamı.gitignoreile repodan hariç tutulmuştur ve sadece yerel olarak bulunur.
Kendi ortamınız için inventories-example/musteri_a/hosts.ini'yi örnek alıp inventories/ altında yeni bir klasör oluşturabilirsiniz.
Air-gap ortamlarda dış kaynağa ihtiyaç duyan kurulum playbook'larının manifest URL'lerini iç mirror veya hedef host'taki önceden kopyalanmış dosya yollarıyla değiştirin. Gerekli container imajlarının da ortamın kendi registry'sinde bulunması gerekir.
cagatayuresin