Infrastructure as Code transformuje správu infrastruktury — verzování, testování a code review pro servery a sítě. Přehled nástrojů a jak začít.
Od snowflake serverů k reprodukovatelné infrastruktuře¶
„Snowflake server“ je server, který nikdo neumí reprodukovat — vznikal měsíce manuálních úprav a jeho ztráta by byla katastrofální. Infrastructure as Code (IaC) eliminuje snowflakes.
Principy IaC:
- Infrastruktura je definovaná v kódu (textové soubory)
- Verzovaná v gitu jako aplikační kód
- Testovatelná a review-ovatelná
- Reprodukovatelná — vytvořit nové prostředí je push buttonu
Configuration management: Ansible vs Puppet vs Chef¶
Tři dominantní nástroje pro konfiguraci serverů:
Ansible — agentless, YAML playbooks, SSH-based:
- hosts: webservers
tasks:
- name: Install nginx
apt: name=nginx state=present
- name: Start nginx
service: name=nginx state=started enabled=yes
Puppet — agent-based, deklarativní DSL, silný v enterprise.
Chef — agent-based, Ruby DSL, flexibilní ale komplexní.
Doporučení: Ansible pro nové projekty díky jednoduchosti a agentless architektuře.
Immutable infrastructure¶
Progresivnější přístup: místo updatování serverů je nahradíte novými.
- Buildujte server image (AMI, Docker image) v CI pipeline
- Deploy = výměna instancí za nové s novým image
- Žádné SSH do produkce, žádný configuration drift
- Rollback = nasazení předchozího image
Packer od HashiCorpu automatizuje building machine images. V kombinaci s Terraform pro provisioning tvoří kompletní IaC stack.
Testování infrastruktury¶
Kód infrastruktury potřebuje testy jako aplikační kód:
- Linting** — ansible-lint, puppet-lint validují syntax a best practices
- Unit testy** — ChefSpec, rspec-puppet testují individual resources
- Integration testy** — Test Kitchen, Molecule spouští konfiguraci ve VM a ověřují výsledek
- Compliance** — InSpec definuje bezpečnostní a compliance požadavky jako kód
Závěr: kód je zákon¶
Infrastructure as Code je základní stavební blok moderního IT. Eliminuje manuální chyby, zajišťuje konzistenci a umožňuje rychlé škálování. Pokud ještě spravujete servery ručně, je čas na změnu. Začněte s Ansible a verzujte všechno v gitu.