Chmelej's Blog

Infrastructure as Code

Published 27 Apr 20183 min read0 comments
header-image

Ted je to děsně moderní a nástrojů je spousta, mě se zalíbili hlavně dva:

terraform.io

Nástroj pro konfiguraci infrastruktury. K čemu je to dobré? příklad: mám předpis (textový soubor ve specifickém jazyku), který mi - vytvoří např 10x virtual (4CPU, 8GB RAM, 200GB disk, 1x IP) s Ubuntu, - pro každý přidá záznam do DNS, - přidá check do nagiosu, - nastaví zálohování, - logy sypat někam centrálně

  • navíc je to nástroj, který je nezávislý na technologi (lze napsat předpis pro VMware, KVM, AWS, Azure …)
  • předpis lze ukladat do gitu a verzovat
  • pokud mám vytvořenou slušnou šablonu, tak vytvoření pouzitelného virtualu zabere par vteřin editace souboru a několik minut se kopírují data.
  • klikání ve VCenter a modlení se abych nezapoměl na jeden z 20 spravných kliknutí … je proti tomu peklo.
  • vyzkoušel jsem to na starém vCenter 4.5 a Proxmox 6.4 - a je to pecka.
  • Navzdory nadšení přiznávám, že se neobejdu bez přístupu do konzole, protože některé věci to zkrátka neumí. např kontrola alokace zdrojů, čili jestli je dost paměti nebo jestli by nebylo lepší ten virtual udělat na jinem hostu aby se lepe rozložila zátěž …
  • čili pokud chci neco nastavit a potřebuji se připojit na nekolik služeb (DNS, vCenter, …) a všude provest nějaké nastavení související s mojí změnou …
  • terraform si udržuje poslední stav, což má tu vyhodu že pak není nutné zjištovat co a jak se má změnit, prostě porovná původní uložený stav s aktualně požadovaným a pokud najde rozdíl tak bude změnu provisionovat dál. Bohužel to má i slabá místa, pokud někdo teraform objede a ud2la změnu bez něj tak se to mužě cele po… A stejně tak pokud se rozhodneme Terraform nazasovat tak to předpokladá “zelenou louku”. Zatím pokusy reverzně nastavit stav podle realné situace se mi moc nepodařilo.

Ansible

Nástroj pro automatickou instalaci a konfiguraci SW na konkretní servery.

Zkušenosti:

  • Napsat a spustit skript na vzdaleném serveru je celkem jednoduché.
  • Trošku zlobí spuštění 1. skript, než se podaří prokoupnout všechny klíče a hesla, ale pak to funguje samo.
  • Možnost spustit to na několika strojích stejný skript současně je fajn, ale to většinou není můj případ ( nespravuji stovky identických memberů nějakého super-clusteru)
  • Ale pro opakovaný ulohy je to k nezaplacení (např potřebuji vytvořit ze zálohy novou databazi a nalít data)
  • Psaní playbooku a blbů vzdorného bashe je časově asi stejně náročné (bash znám, ansible luštím z manuálu).
  • S tou deklarativností bych to nepřeháněl, … co chvíli se dostanu do stavu, kdy nejjednoduší cesta je spustit z ansible bash skript :-) a pak se musim hodně snažit, aby to bylo idempotentni a deklarativní mimo hru :-)

Slovníček:

  • alternativní řešení: puppet, chef, bash?…
  • buzzwords: deklarativní, agentless, idempotentni, jednoduchý, mocný, free, decentralizovany
  • inventories - seznamy serverů co chci ovládnout, různé skupiny, pod skupiny …
  • playbooks - předpisy, skripty (yaml formát)
  • modules - příkazy co mužů volat: yum, apt, ASA, bigip, vmware …
  • ansibletower ( AWX = free ) je centrální server + WEB UI + práva + scheduler
  • galaxy - komunita sdílící ansible pluginy, skripty .. .