Razumijevanje DevOps alata po slojevima: Terraform, Ansible, Puppet, Chef i Kubernetes
Ako ste ikad radili s cloud infrastrukturom, vjerojatno ste si postavili barem jedno od ovih pitanja:
- Zamjenjuje li Kubernetes Ansible?
- Zašto nam uopće treba Terraform ako već imamo Kubernetes?
- Može li Terraform postavljati aplikacije?
- Zašto postoji toliko DevOps alata koji rade “slično”?
Ako vam ovo zvuči poznato, ne brinite – nije stvar u vašem znanju ili iskustvu. Većina zabune nastaje kad se alati uče pojedinačno, bez razumijevanja slojeva na kojima zapravo rade.
Ovaj post želi ponuditi jednostavan, ali moćan slikoviti model koji objašnjava kako Terraform, Ansible, Puppet, Chef, Docker i Kubernetes međusobno funkcioniraju.
Fokus je na slojevima, ne na usporedbi značajki po značajkama.
DevOps slojevi – kako ih razumjeti:
U realnim proizvodnim sustavima DevOps posao obično slijedi ovaj redoslijed:
Terraform → Ansible / Puppet / Chef → Docker → Kubernetes
Ovo već odgovara na mnoga česta pitanja:
- Terraform priprema infrastrukturu.
- Konfiguracijski alati pripremaju servere.
- Docker pakira aplikacije.
- Kubernetes pokreće i održava aplikacije.
Vizualno bi to izgledalo ovako:
┌───────────────────────┐
│ APLIKACIJE │
│ (backend, frontend, │
│ mikroservisi, API) │
└───────────▲───────────┘
│ deploy / scale / heal
┌───────────┴───────────┐
│ KUBERNETES │
│ - Pods, Deployments │
│ - Skaliranje (HPA) │
│ - Self-healing │
│ - Service discovery │
│ Ne stvara VM-ove │
│ Ne konfigurira OS │
└───────────▲───────────┘
│ OS + runtime
┌───────────┴───────────┐
│ KONFIGURACIJSKI ALATI │
│ Ansible | Puppet | Chef│
│ - Instalacija Docker / │
│ kubeleta │
│ - Konfiguracija usera, │
│ datoteka, systemd │
│ - Deploy legacy binarija│
│ Ansible: agentless SSH │
│ Puppet: agent + master │
│ Chef: Ruby DSL │
└───────────▲───────────┘
│ infrastruktura postoji
┌───────────┴───────────┐
│ TERRAFORM (IaC) │
│ - VM-ovi, EC2, Droplets│
│ - VPC, mreža, firewalle│
│ - Load balanceri │
│ - Kubernetes klasteri │
│ Deklarativan, state-driven│
│ Multi-cloud │
│ Ne instalira pakete │
└───────────▲───────────┘
│
┌───────────┴───────────┐
│ CLOUD / DATA CENTER │
│ AWS | Azure | GCP | │
│ On-prem │
└───────────────────────┘
Terraform – Infrastructure as Code
Terraform radi na sloju infrastrukture.
Njegova je glavna zadaća kreirati i upravljati resursima poput VM-ova, mreža, load balancera, baza podataka i čak Kubernetes klastera.
Ključne stvari:
Deklarativan pristup: opisuješ željeno stanje infrastrukture, Terraform računa kako ga postići.
Drži stanje infrastrukture u state file-u.
Radi u multi-cloud i on-prem okruženju.
Što Terraform ne radi:
Ne konfigurira operativne sustave.
Ne instalira pakete ili aplikacije.
Nakon što infrastruktura postoji, njegov posao je gotov.
Konfiguracijski alati – Ansible, Puppet, Chef
Jednom kad infrastruktura postoji, serveri trebaju biti konfigurirani. To je posao konfiguracijskih alata.
Ansible:
Agentless, preko SSH.
Jednostavan YAML, nizak learning curve.
Idealno odmah nakon Terraforma za instalaciju paketa, konfiguraciju usera i pripremu servera.
Puppet i Chef:
Agent-based.
Puppet: master-agent, fokus na održavanju željenog stanja.
Chef: Ruby DSL, proceduralni pristup za kompleksnu logiku.
Često u velikim ili legacy okruženjima gdje je dugotrajno održavanje konfiguracije bitno.
Važno: Konfiguracijski alati ne orkestriraju aplikacije na većoj skali. Njihova granica je OS + runtime.
Kubernetes – orkestracija aplikacija
Kubernetes radi na višem sloju od konfiguracijskih alata. Pretpostavlja da infrastruktura i OS već postoje.
Odgovornosti:
Deploy aplikacija.
Skaliranje i restart neuspjelih komponenti.
Rolling updates i service discovery.
Kontinuirano osigurava da stvarno stanje odgovara željenom.
Ograničenja:
Ne stvara infrastrukturu.
Ne konfigurira OS.
Kako alati rade zajedno u praksi
Terraform kreira infrastrukturu i možda Kubernetes klaster.
Ansible/Puppet/Chef pripremaju servere (instalacija Docker-a, OS konfiguracija).
Kubernetes pokreće i održava containerizirane aplikacije.
Svaki alat je optimiziran za svoj sloj, a korištenje ih zajedno olakšava skaliranje i održavanje sustava.
Najčešći DevOps anti-patterni
Kubernetes umjesto konfiguracijskih alata → OS-level konfiguracije u containerima stvaraju fragilne sustave.
Terraform za instalaciju softvera → miješanje infrastrukture i paketa otežava održavanje.
Konfiguracijski alati za orkestraciju aplikacija → nisu dizajnirani za skaliranje aplikacija u runtime-u.
Preskakanje konfiguracijskih alata → custom skripte ili cloud-init rade samo na maloj skali.
Odabir alata po popularnosti, ne po sloju → najbolji alat je onaj koji odgovara sloju koji radiš, ne trending na društvenim mrežama.
Zaključak – slojevi čine razliku
Terraform = infrastruktura
Ansible/Puppet/Chef = konfiguracija servera
Docker = pakiranje aplikacija
Kubernetes = orkestracija i izvođenje aplikacija
Ovi alati nisu zamjenjivi, nego se nadopunjuju.
Razumijevanje slojeva:
olakšava arhitekturu,
smanjuje probleme na produkciji,
čini skaliranje predvidljivim,
poboljšava timsku komunikaciju.

