Ansible, Puppet a Chef: srovnání nástrojů

Ansible, Puppet a Chef: Porovnání nástrojů

Proč porovnávat Ansible, Puppet a Chef

Nástroje pro správu konfigurace automatizují přípravu, konfiguraci a údržbu serverů, aplikací i cloudových služeb. Ansible, Puppet a Chef patří mezi nejpoužívanější – liší se architekturou (push vs. pull), způsobem deklarace stavu, škálováním, modelem rozšíření i ekosystémem. Správná volba závisí na požadavcích na idempotenci, rychlost, governance, compliance a integraci do CI/CD a cloudu.

Architektonické modely a topologie

  • Ansible: bezagentový model push. Řídicí uzel spouští playbooky přes SSH/WinRM. Inventář definuje cíle, moduly provádějí idempotentní změny. Jednoduché nasazení, menší trvalá režie control plane.
  • Puppet: model agent–server pull. Agent si periodicky (typicky každých 30 minut) stahuje katalog ze serveru (Puppet Server/Compiler), aplikuje zdrojové resources a hlásí stav. Silný model desired state, výborný pro detekci odchylek a compliance.
  • Chef: primárně model agent–server pull (Chef Infra Client & Server), alternativně Chef Solo/Zero bez serveru. Konfigurace v Ruby (recipes, cookbooks). Vhodný pro komplexní, procedurálnější logiku.

Jazyk a vyjadřovací prostředky

Nástroj Jazyk/DSL Styl Rozšiřitelnost
Ansible YAML (deklarativní úlohy), šablonování Jinja2 Orientace na úlohy, role, kolekce Moduly v Pythonu, pluginy, filtry
Puppet Puppet DSL (deklarativní) Resource + Class, datová vrstva Hiera Typy/providery v Ruby, moduly Forge
Chef Ruby DSL (recepty) Orientace na prostředky, procedurální prvky Vlastní prostředky, knihovny v Ruby

Idempotence, desired state a detekce odchylek

  • Ansible: moduly navržené jako idempotentní (state: present/absent), check mode, diff. Odchylky zjistíte spuštěním podle plánu (cron/ACI pipeline) a prostřednictvím reportů z běhů.
  • Puppet: vestavěná kontrola odchylek při každém agent run. Katalog je zdrojem pravdy; k dispozici jsou reporty compliance a enforcement změn.
  • Chef: každé converge porovnává aktuální a cílový stav; why-run slouží k simulacím. Handlery zajišťují kvalitní záznamy změn.

Inventář, proměnné a správa tajemství

  • Ansible: inventory (INI/YAML/dynamický), group_vars a host_vars, Ansible Vault pro šifrované proměnné. Snadná integrace s dynamickými zdroji (AWS, Azure, VMware, Kubernetes).
  • Puppet: Hiera (YAML/JSON) pro hierarchické proměnné, eyaml/KMS pro šifrování. Facter poskytuje informace o hostiteli.
  • Chef: Data Bags/Encrypted Data Bags, atributy na úrovni cookbooků, rolí a prostředí; Ohai poskytuje informace o hostiteli.

Škálování, výkon a provoz

  • Ansible: paralelismus prostřednictvím forks, strategy plugins, async/poll, pipelining. Ve velkých prostředích se používá Automation Platform/AWX (UI, RBAC, plánovač, exekutory).
  • Puppet: horizontální škálování prostřednictvím více compilerů, cachování a izolace environment. Agent běží periodicky – v čase má malý dopad na řídicí vrstvy.
  • Chef: škálování Chef Serveru (PostgreSQL/Solr/NGINX), policyfiles pro deterministická sestavení, push jobs pro ad hoc akce.

Orchestrace vs. konfigurace

Ansible vyniká v orchestraci vícekrokových procesů (rolling deploy, údržba), kde jsou zásadní posloupnost kroků a podmínky. Puppet a Chef jsou silné v průběžném udržování stavu a dlouhodobé compliance; orchestraci řeší spíše doplňky nebo externí nástroje (runnery, Pipelines, Rundeck).

Windows, sítě, kontejnery a cloud

  • Windows: Ansible (WinRM, moduly DSC), Puppet (nativní prostředky Windows, integrace s DSC), Chef (cookbooky pro Windows, PowerShell DSC). Puppet má historicky nejucelenější model politik.
  • Síť: Ansible má rozsáhlý katalog síťových modulů (Arista/Cisco/Juniper), vhodný pro automatizaci day 0–2. Puppet a Chef podporují síťová zařízení, ale nabídka modulů je užší.
  • Kontejnery/Kubernetes: Ansible podporuje imperativní operace i deklarativní konfiguraci (modul k8s, Helm), Puppet/Chef se používají spíše pro hostitele/CI; policy-as-code se přesouvá do nástrojů typu Argo CD/Flux (GitOps).
  • Cloud: všechny tři nástroje mají poskytovatele/pluginy. Ansible umožňuje rychle začít s provisioningem (VM, VPC, IAM); Puppet je výborný pro správu politik a dlouhodobých odchylek; Chef využívá logiku Ruby pro komplexní kroky sestavení.

Testování, kvalita a GitOps

  • Ansible: Molecule pro testování rolí (lokálně/Docker/cloud), ansible-lint, CI pipeline (lint → syntax-check → molecule).
  • Puppet: rspec-puppet, PDK, puppet-lint, beaker pro integrační testy. Silný pracovní postup s environment a větvemi.
  • Chef: Test Kitchen, InSpec (testy compliance), Foodcritic (lint). Policyfiles umožňují deterministická sestavení s verzováním v Gitu.

Bezpečnost, RBAC a audit

  • Ansible: AWX/Automation Controller poskytuje RBAC, credential store, izolované exekutory a audit běhů.
  • Puppet: podrobně nastavitelný RBAC, certifikáty pro agenty, reporting a compliance (lze doplnit modul InSpec/Compliance).
  • Chef: RBAC v Chef Manage/Automate, Automate pro audit, InSpec pro bezpečnostní testy a politiky.

Ekosystém, moduly a komunita

  • Ansible Galaxy: velké množství rolí a kolekcí; pozor na kvalitu, doporučuje se interní kurátorství.
  • Puppet Forge: modulární ekosystém s hodnocením, časté jsou moduly pro operační systémy, middleware a databáze.
  • Chef Supermarket: cookbooky pro operační systémy a aplikace, menší než Galaxy/Forge, ale kvalitní pro základní technologický stack.

Učící křivka a produktivita týmu

  • Nejrychlejší začátek: Ansible (YAML, bez agentů, SSH). Ideální pro týmy přecházející od ručních skriptů.
  • Strmější, ale stabilní křivka: Puppet (DSL, uvažování v resources, Hiera). Přínos se projeví při správě rozsáhlých flotil a zajišťování compliance.
  • Programátorská flexibilita: Chef (Ruby DSL). Vhodný tam, kde je třeba složitá kontrola toku a logika knihoven.

Příklady zápisů konfigurace

Ansible – instalace balíčku a šablona:

 - hosts: web become: yes tasks: - name: Nginx nainstalován ansible.builtin.package: name: nginx state: present - name: Konfigurace ansible.builtin.template: src: nginx.conf.j2 dest: /etc/nginx/nginx.conf notify: restart nginx handlers: - name: restart nginx ansible.builtin.service: name: nginx state: restarted 

Puppet – deklarace balíčku/souboru/služby:

 package { 'nginx': ensure => installed } file { '/etc/nginx/nginx.conf': ensure => file, content => template('site/nginx.conf.erb'), notify => Service['nginx'], } service { 'nginx': ensure => running, enable => true, } 

Chef – recept:

 package 'nginx' template '/etc/nginx/nginx.conf' do source 'nginx.conf.erb' notifies :restart, 'service[nginx]' end service 'nginx' do action [:enable, :start] end 

Scénáře nasazení a vhodnost použití

  • Rychlá automatizace a práce ad hoc, heterogenní prostředí ➝ Ansible.
  • Dlouhodobé vynucování stavu, auditní stopa a pravidelné reporty ➝ Puppet.
  • Komplexní sestavení/konfigurace s bohatou logikou, DevOps s Ruby stackem ➝ Chef.

Náklady, podpora a provozní režie

  • Open-source edice: všechny tři nástroje existují v komunitních verzích; podnikové varianty přidávají UI, RBAC, podporu a compliance.
  • Provozní režie: Ansible má minimální počáteční režii (žádní agenti), Puppet/Chef vyžadují údržbu serveru/CA/úložišť, ale usnadňují dlouhodobý provoz.

Integrace do CI/CD a GitOps

  • Ansible: pipeline (lint → syntax → dry-run → deploy), kolekce v artefaktorech, kontejnerizované běhy ansible-navigator/EE.
  • Puppet: environments mapovaná na větve Gitu, Code Manager, schvalovací pracovní postup s PDK.
  • Chef: policyfiles a pevné určení verzí, Test Kitchen v CI, testy InSpec jako kontrolní brány.

Compliance a bezpečnostní politiky

  • Ansible: role pro CIS/posílení zabezpečení OS, validace pomocí Molecule + InSpec; snadná aplikace jednorázových politik.
  • Puppet: silný model state enforcement, reportování souladu, integrace se zjišťováním informací (Facter) a Hiera pro varianty politik.
  • Chef: InSpec jako prvotřídní nástroj – bezpečnostní testy jako kód; Automate pro přehledové panely souladu.

Výhody a nevýhody ve zkratce

Nástroj Silné stránky Slabé stránky
Ansible Bez agentů, rychlý začátek, orchestrace, bohatá nabídka modulů pro síť/cloud Bez trvalého agenta hůře detekuje a řeší odchylky bez plánovače; výkon omezuje latence/SSH
Puppet Průběžné vynucování stavu, detekce odchylek, škálovatelnost, Hiera Složitější DSL, nutnost provozovat server/CA, méně pohodlná orchestrace ad hoc
Chef Flexibilní Ruby DSL, silné testování (InSpec), policyfiles Vyšší nároky na znalost Ruby, režie serveru, menší komunita než u Ansible

Rozhodovací matice podle požadavků

Požadavek Doporučení Poznámka
Rychlý začátek, bez agentů Ansible Ideální pro kombinaci Linux/Windows/síť
Průběžné vynucování politik a compliance Puppet Agent pull + reporty
Složitá logika, rozsáhlé úpravy na míru Chef Ruby DSL + vlastní prostředky
Automatizace sítě Ansible Široká podpora výrobců
Rozsáhlá podniková flotila s auditem Puppet / Chef RBAC, řízení odchylek, compliance

Migrační strategie a souběžný provoz

  • Souběžný provoz: Ansible pro orchestraci/provisioning, Puppet/Chef pro stabilní provozní stav. Jasné vymezení odpovědností.
  • Migrace: inventarizace zdrojů, mapování modulů/rolí, testy v sandboxu, postupné nasazení canary, paralelní běhy v režimech noop (Puppet –noop, Chef why-run, Ansible check).
  • Standardizace: definujte standardy programování, strukturu repozitářů, pojmenovávání a verzování artefaktů podle semver.

Kontrolní seznam před nasazením do produkce

  • Repozitáře s CI (lint, unit/integration, bezpečnostní skenování), podepisování artefaktů (SLSA/attestace).
  • Správa tajemství (Vault/KMS), rotace klíčů, just enough permissions.
  • Logování a observabilita (centralizované protokoly běhů, metriky, upozornění na odchylky/chyby).
  • Runbooky pro incidenty, nouzové přístupy break-glass, feature flags/policyfiles.
  • Školení týmu a standardy revize kódu (min. 2 páry očí, bezpečnostní kontrolní seznam).

Závěr

Neexistuje jeden „správný“ nástroj pro všechny případy. Ansible vyniká rychlou orchestrací bez agentů a širokou modulární podporou. Puppet poskytuje robustní, auditovatelný a škálovatelný mechanismus desired state s automatickým vynucováním a detekcí odchylek. Chef nabízí nejvyšší flexibilitu pro komplexní logiku a důkladné testování compliance díky InSpec a policyfiles. Při výběru zohledněte charakter provozu (ad hoc vs. stabilní stav), požadavky na compliance, velikost a dovednosti týmu i stávající ekosystém. Často se vyplácí kombinace: Ansible pro provisionování/orchestraci a Puppet/Chef pro dlouhodobé udržování stavu.