přejít na obsah přejít na navigaci

Linux E X P R E S, Ansible – hromadná správa serverů

Ansible – hromadná správa serverů

ansible-logo_1.png

Pokud se pomocí SSH přihlašujete na servery a něco tam děláte, děláte to špatně. Toto zaznělo letos na LinuxDays hned v několika přednáškách. Jak to dělat lépe? Například používat Ansible.


Spravujete servery interaktivně po přihlášení?

Je stále mnoho správců serverů, kteří své servery spravují (ovládají, konfigurují apod.) tak, že se na server přihlásí pomocí SSH a udělají tam, co je potřeba – tedy třeba upraví konfigurační soubor, doinstalují balíček, restartují službu atd. Pokud máte jen jeden server (nebo maximálně několik málo), dá se takový postup celkem dobře používat. S větším počtem serverů je to už prakticky „zaručené bolení hlavy“.

Proto na letošním ročníku konference LinuxDays zaznělo hned v několika přednáškách, že je takový postup špatný. Zejména při větším počtu serverů se lze snadno dopustit nějaké chyby, která se obtížně hledá a která současně může mít velmi negativní vliv na provoz serverů. Proto je mnohem výhodnější spravovat servery hromadně, z jednoho centrálního místa.

Této oblasti bylo na LinuxDays věnováno více přednášek, které se týkaly například nástrojů Puppet nebo Foreman (a pro oblast přípravy a testování ještě Vagrant). Zatímco oba zmíněné nástroje jsou vhodné pro větší sítě, pro ty menší se více hodí Ansible.

Ansible se představuje

„Zkoušel jsem Puppet,“ zahájil David Karban svou přednášku, „zkoušel jsem to tři týdny, potil jsem krev, snažil jsem se to naučit, pak jsem za dvě hodiny v Ansible udělal v podstatě to samé a rozhodl jsem se, že jdu pryč od Puppetu.“ Ansible je totiž udělané „minimalisticky“, nepotřebuje žádné agenty na serverech (jako je potřebuje například Puppet), které se před zahájením práce musejí nainstalovat.

David Karban představuje nástroj Ansible David Karban představuje nástroj Ansible

Ansible se na servery, které má ovládat, připojuje pomocí SSH. Umí jak nastavovat servery, tak zajišťovat i provisioning a deployment aplikací. „Máte tedy jeden nástroj, kterým můžete kompletně nastavit webserver, cluster, cokoliv, a zároveň si tam nahrajete aplikaci, příště další verzi, bez problémů, nemusíte používat několik nástrojů,“ říká David Karban.

Výhodou také je, že se lze Ansible velmi jednoduše naučit. Práce s ním je víc popisování (deklarativní přístup) než programování. Ansible je idempotentní, tedy pokud opakovaně spustíte nějakou operaci, výsledek je tentýž, jako kdyby byla spuštěna jen jednou.



Jak se s Ansible spravují servery

Servery lze v Ansible spravovat prostřednictvím statického nebo dynamického inventáře. Ve statickém inventáři lze servery ručně dělit do skupin (i rekurzivně – jedna skupina může obsahovat další skupiny). Dynamický inventář se generuje automaticky podle dat získaných od cloudové služby (AWS, Rackspace, Docker…) a automaticky tvoří skupiny serverů podle různých kritérií.

Základem pro vlastní proces konfigurace serverů je tzv. playbook, což je předpis konfigurace psaný v jazyce YAML. „Ansible má jednu obrovskou výhodu, z mého pohledu, že neřeší závislosti, nýbrž běží shora dolů,“ komentuje Karban způsob práce technologie. „Takže když potřebujete nakonfigurovat webserver, nejdřív nainstalujete Apache, následně tam nahrajete konfiguraci a je hotovo.“

Playbook se skládá z několika plays (her), které vymezují jednotlivé celky úloh, například pro webservery. Tam se specifikuje, co je potřeba si připravit (například jaký uživatel musí být k dispozici), jako role se mají hrát (role je soubor úloh např. pro určitý webserver, databázový systém…) a jaké úlohy – kromě těch, co jsou obsaženy v rolích – se mají vykonat.

Ansible je modulární – pro každý typ úlohy (například operace s balíčkovým systémem, správou verzí, cloudovou službou apod.) se používá příslušný modul, kterých je ve standardní instalaci k dispozici více než 250. Lze si snadno vytvářet vlastní moduly. Ansible je systém řízený daty, takže lze využívat řadu různých druhů proměnných, například podle jednotlivých strojů a jejich skupin, různé „magické“ proměnné atd.

V rámci jednotlivých úloh lze vymezovat, kde (na kterých strojích), kdy (za jakých podmínek) a jak mají běžet. Obecně může úloha skončit třemi stavy, kromě úspěchu a selhání je tu také stav (changed), že došlo k nějakým změnám. „Osobně mám rád, aby těch 'changed' bylo co nejméně, ať vím, že když se 'nic nezměnilo', tak se opravdu nic nezměnilo,“ zdůrazňuje David Karban ohledně praxe psaní úloh.

Ansible také umožňuje používat tzv. handlery, tedy reakce na události. Pokud se například změní konfigurace, může se vyžádat její nové načtení běžícím procesem. Oproti přímému zavolání je výhoda v tom, že pokud se na více místech postupně vyvolá tatáž událost, zareaguje se na ni jen jednou. Konfigurační soubory pro Ansible lze podle potřeby šifrovat (používá se algoritmus AES-256), takže například přístupová hesla nebo obdobné informace nemusejí nikde ležet v otevřeném tvaru.

Co se týká vlastní práce s Ansible, po spuštění se pomocí SSH připojí na jeden či více serverů, a vykoná tam, co je potřeba (co obsahuje playbook a co se specifikovalo v parametrech při spuštění). Lze ho spouštět interaktivně, ale samozřejmě i v dávce.

Kdo po přednášce o Ansible ještě chvíli vydržel (a vyplnil anketu), mohl vyhrát některou z mnoha zajímavých cen Kdo po přednášce o Ansible ještě chvíli vydržel (a vyplnil anketu), mohl vyhrát některou z mnoha zajímavých cen

Pro Ansible existuje i grafické rozhraní Ansible Tower, které kromě snadné „klikací“ správy a ovládání Ansible také například generuje grafy. Má i REST API k propojení s jinými systémy. Na rozdíl od open-source Ansible je Ansible Tower proprietární a poměrně drahý software (základní verze Basic v úrovni do 100 spravovaných strojů stojí 5000 dolarů ročně). Existují ale i alternativní aplikace, například Semaphore.

Kdo nemohl navštívit konferenci LinuxDays nebo dal přednost jiné přednášce, může se na přednášku Davida Karbana o Ansible podívat na videu. Máte-li zájem se Ansible rychle naučit, podívejte se také na videotutoriál Ansible za 30 minut od Věroše Kaplana.

Shrnutí

Ansible je jednoduchý a přitom silný nástroj pro hromadnou centrální správu serverů. Lze ho rychle nasadit, bez nutnosti na spravované stroje něco instalovat. Ansible umožňuje připravovat sady úkolů podle rolí a využívat pro práci data různého druhu. Je k dispozici jak oficiální grafické rozhraní, tak i rozhraní alternativní.

Nahoru

Příspěvky

Tomáš Crhonek Ansible – hromadná správa serverů
Tomáš Crhonek 19. 10. 2015, 16:07:45
Odpovědět  Odkaz 
"Pokud se pomocí SSH přihlašujete na servery a něco tam děláte, děláte to špatně. Toto zaznělo letos na LinuxDays hned v několika přednáškách. Jak to dělat lépe?"

Systémů pro vzdálenou správu je samozřejmě více, ale všechny mají jeden nepříjemný efekt, a to ten, že člověk, který je používá, postupně zapomene, jak se ty věci nastavují ručně.

Což v případě, že nějaký automatický systém vypadne (a on vždy vypadne v tu nejhorší možnou chvíli) znamená, že kromě výpadku systému se ti lidé za běhu učí (často dost tristní pohled) co vlastně kde a jak nastavit. Takže ten člověk postupně ztrácí schopnost nastavovat ten server a stane se z něj jen operátor těch udělátek.

Nehledě na to, že samotný linux poskytuje řadu nástrojů, jak si život ulehčit, takže něco nastavit na deseti serverech neznamená se na každý ručně přihlásit a něco tam udělat. Buď se to udělá přes x paralelních ssh spojení (cssh, parallel ssh, Konsole, PAC Man apod), nebo i pomocí jednoduchého cyklu v bashi apod.

Velmi často je to mnohem rychlejší, než "efektivní" manažer.

Ty mají smysl u velkého počtu serverů, kde "velký počet" bych z vlastní zkušenosti viděl v řádu stovek.
Lukáš Jelínek Re: Ansible – hromadná správa serverů
Lukáš Jelínek 19. 10. 2015, 18:24:01
Odpovědět  Odkaz 
Já těch serverů nemám až tolik (méně než dvě desítky) a stejně silně uvažuji o nasazení centralizované správy (něco už centrálně řešené mám, ale není to udělané úplně optimálně). Často potřebuji něco nakonfigurovat na více serverech stejně - dělat to ručně je ubíjející a náchylné na chyby (snadno se na nějaký server zapomene). Nemyslím si, že bych používáním nástroje ztrácel nějaké schopnosti, protože stejně musím nejdřív vědět, co jak chci nastavit (a mnohdy musím i tak do manuálu, protože konfigurovat například Postfix často není zrovna triviální) a teprve potom bych to vnutil tomu udělátku.
Tomáš Crhonek Re: Re: Ansible – hromadná správa serverů
Tomáš Crhonek 19. 10. 2015, 18:54:18
Odpovědět  Odkaz 
"protože stejně musím nejdřív vědět, co jak chci nastavit"

Pokud si ten modul budeš vytvářet sám, tak v pořádku. Ale zejména u Puppetu se setkávám s tím, že někdo vezme hotový pp (příklad: lamp), spustí puppet apply lamp.pp, a hurá, má server, kde do /var/www/html nahraje svůj web (někdy ani to ne, protože má nějaký deployer) a vůbec neví, že tam má Apache, MySQl, vedle toho třeba ještě do světa otevřený phpmyadmin apod.

Já aplikuju spíš "test driven administraci", tedy že si nejdříve v Icinga (Nagios) nadefinuju co chci nastavit (nový check na skupině serverů) a potom, kdybych třeba zapomněl na nějaký server, to v tom monitorovadle furt bude strašit (a mimo jiné po downtime taky chodit notifikace).
Re: Re: Re: Ansible – hromadná správa serverů
lzap 19. 10. 2015, 21:51:09
Odpovědět  Odkaz 
Ansible (a obecně cfg mgmty) jsou jen nástroje, jak si to budeš dělat je na Tobě. Můžeš to dělat dobře, nebo špatně. Je jedno s čím toho dosáhneš, jestli použiješ ssh, Ansible nebo Puppet. Ad "stará dobrá ssh práce": spoustu uživatelů/junior_adminů si najde tutoriál a pak copy-pastují do mrtva, druhý den zapomenou jak to nastavili.

U cfg mgmtu ten správný postup je obvykle psát si vše sám od píky a testovat, testovat a testovat. Obecně je použití cfg mgmtu obvykle lepší z důvodu, že alespoň při nějaké tragedii jsou k dispozici ty recepty a teoreticky je rychlejší vše dát zase do pořádku.

Jinak Ansible je orientován imperativně kdežto Puppet/Chef/Salt jsou deklarativní systémy. Je to jiný přístup, oba se mohou doplňovat (např. spouštět Puppet pomocí Ansiblu nebo různé kombinace).

Jestli chce někdo doporučení s čím začít, tak bych doporučil právě Ansible, v případě nutnosti použití deklarativního nástroje pak asi Salt. A pochopitelně Foreman jako hlavní inventář :-)
Tomáš Crhonek Re: Re: Re: Re: Ansible – hromadná správa serverů
Tomáš Crhonek 24. 10. 2015, 20:15:47
Odpovědět  Odkaz 
"Ad "stará dobrá ssh práce": spoustu uživatelů/junior_adminů si najde tutoriál a pak copy-pastují do mrtva, druhý den zapomenou jak to nastavili."

To je možné, ale také jsou mnohem blíže tomu, co nastavují, vnímají různé výstupy, výpisy, takže pokud mají v sobě špetku zvědavosti, mohou velice snadno začít zkoumat. U mgmt konzole nikoliv, tam je to více či méně dokonale odstíněné (znám člověka, co před 9 lety používal webmin s tím, že až bude čas, tak si to, co ten webmin vlastně dělá, nastuduje. Po 9 letech a x bezpečnostních problémech v jeho síti stále používá webmin a furt neví, co to vlastně dělá -- pochopitelně to není nijak reprezentativní vzorek).

"U cfg mgmtu ten správný postup je obvykle psát si vše sám od píky a testovat, testovat a testovat."

Ale nějak se v těch všech přednáškách zapomíná jak dlouho to trvá. Vyzkoušel jsem všechna propagovaná (chef, puppet, ansible) nastavovátka a sorry, to, co udělám na 10 serverech dohromady za 5 minut, to bych v puppetu skriptoval den, v ansible hodinu. Kde je přínos? To by těch serverů skutečně muselo být tisíce. Nehledě na to, že s počtem serverů zase stoupá nutnost a náročnost testování, protože když poseru něco na ssh na jednom serveru, tak to není taková trága jako když poseru mgmt a rozhodím ho na tisíce serverů. Je tedy otázkou, zda rychleji roste složitost ovládat ssh a nastavovat ty věcí přímo nebo ovládat ty mgmt věcičky.

Čímž se také dostávám k tématu, k čemu tyto prostředky ostatní používají. Na všech přednáškách je +- probrané totéž co v tutoriálu. Jasně, ansible -i hosts all -m ping má možná ten správný wow efect, ale ten velmi rychle opadne, když potom člověk zjistí, že na nastavení sshd není v ansible ofic. modul (Nebo jsem ho jen nenašel v dokumentaci a ani ostatní uživatelé ansible jej neznají). Přičemž je třeba připomenout, že ansible na ssh celkem závisí.

Když jsem hledal, jak to řeší ostatní, tak jsem nalezl hromadu různých způsobů (nemá náhodou mgmt spíše sjednocovat?) od relativně ok, po naprosto odstrašující příklady.

Závěr tedy je, že ansible nechává nastavení sshd, přes který sám komunikuje, na libovůli admina a to, co jsem viděl za příklady, ve mě rozhodně nevyvolává dojem, že by zrovna použití ansible v těch lidech nějak vyvolávalo touhu po tom to nastavit správně.

A přesně stejnou zkušenost mám i u puppetu. Tutoriál jako dobrý, ale když jsem chtěl vytvořit pp pro běžné činnosti po instalaci minimal debian, tak jsem velice rychle narazil na to, že na úkony, které já považuji za základní, žádný modul neexistuje. Což ve mě opět vzbuzuje otázky, jak a zda vůbec, to řeší ostatní uživatelé puppetu (odpověď samozřejmě znám, ale sám před sebou ji skrývám, abych si uchoval víru v dobro lidstva).
Re: Re: Re: Re: Re: Ansible – hromadná správa serverů
lzap 25. 11. 2016, 22:26:38
Odpovědět  Odkaz 
Jen poznamka. Na sshd v ansible modul ani nebude, to co hledas je Role. A ta existuje.

Jinak souhladim, u 10 serveru to smysl nemá, ale smysl to ma pokud tech 10 serveru pravidelně preinstalovavas. Pets vs cattles.
Petr Valach Ansible – hromadná správa serverů
Petr Valach 21. 11. 2015, 02:52:45
Odpovědět  Odkaz 
Kdyby někoho zajímalo, jakou cenu obdržel autor článku, může se podívat sem:
http://exospace.cz/wp-content/gallery/linuxdays-2015/PA112037.jpg

Další fotky z konference:
http://exospace.cz/galerie/nggallery/z-cinnosti-exospace/linuxdays-2015

Jako vždy opakuji, že naše redakce podporuje LinuxEXPRES, jak jen může.

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Lukáš Jelínek

Lukáš Jelínek

Dlouholetý člen autorského týmu LinuxEXPRESu a OpenOffice.cz. Vystudoval FEL ČVUT v oboru Výpočetní technika. Žije v Kutné Hoře, podniká v oblasti IT a zároveň pracuje v týmu projektu Turris. Ve volném čase rád fotografuje, natáčí a stříhá video, občas se věnuje powerkitingu a na prahu čtyřicítky začal hrát tenis.


  • Distribuce: Debian, Kubuntu, Linux Mint
  • Grafické prostředí: KDE

| proč linux | blog