utorak, 16 aprila, 2024
Slobodni profesionalac

Ansibl – kontrola na vrhovima vaših prstiju

Autor: Marjan Bugarinović

Pre godinu dana sam čuo za Ansibl (eng. Ansible) i, kao i mnoge stvari pre toga, pročitao sam nešto ovlaš o njegovim mogućnostima i ostavio te informacije da odstoje. Prvenstveno zato što nisam znao niti razumeo šta je sve to što opisuje Ansibl. Kada sam konačno zagrebao površinu onoga što predstavlja Ansibl, sačekalo me je obilje mogućnosti. Sa mnoštvom mogućnosti se dolazi do raznoraznih ideja. O nekima od njih će biti reči u ovom tekstu, a neke ćete sami morati da smislite.

Šta je Ansibl?

Šta je ukratko Ansibl? Ansibl je, kako ga opisuju – alat za sistem administratore kreiran od strane sistem administratora! I to je istina. Kreirao ga je Majkl De Han, osoba koja je kreirala Kobler (eng. Cobbler), alat koji se bavi udaljenom (eng. remote) instalacijom operativnih sistema na virtuelne ili fizičke mašine i sve to na Linuksu. Zamislite da radite za ogromnu kompaniju i da vam je potrebno da na 100 mašina instalirate neki Linuks operativni sistem, relativno brzo i lako. To možete uraditi uz Kobler.

Sve je to super, ali gde je tu Ansibl? Zamislite da su tih 100 mašina kojih ste maločas instalirali i osposobili zapravo Linuks serveri i da svaki od njih mora da ima odgovarajuće pakete i da prođe kroz odgovarajući bezbednosni proces konfiguracije (bilo da je to podešavanje SELinuks opcije, otvaranje portova na fajervolu (eng. firewall), ili dodavanje servera na domen). Sve se to može uraditi sa Ansiblom. Sve to i mnogo više. Ansibl možemo poistovetiti sa, recimo, bajkom “Frulaš iz Hamelna”. Vi ste frulaš, Ansibl je frula, a pacovi su serveri. Na vama je kako upotrebiti svu tu moć koju vam on pruža.

Ansibl je alat otvorenog koda i 2015. godine je kupljen od strane Redheta. Licenciran je delom GNU GPL licencom, a delom ima i kod koji je u vlasništvu kompanije Redhet. Može se instalirati na bilo koju Linuks distribuciju, bilo da je to Fedora, Debijan, Arč Linuks. I možda ono što je najvažnije kod Ansibla – kada ga instalirate na svoju Linuks mašinu, možete krenuti sa upravljanjem i konifigurisanjem udaljenih, a i svoje lokalne mašine, bez ikakve instalacije udaljenih agenata (alata koji će izvršavati komande koje mu glavni server pošalje). Ansibl sve to radi preko dobro nam poznatog SSH protokola, koristeći SSH ključeve!

Kako? Jednostavno, kada izvršavate Ansibl komande ili knjige igara (eng. Playbook), Ansibl “otrči” na server uz pomoć provere ključeva sa lokalnom mašinom i na toj mašini uradi ono što ste mu vi rekli.

U ovom članku se nećemo baviti time kako da instalirate i pokrenete Ansibl, to je opisano u ranijim (člancima). Ovde ćemo se skoncentrisati na predloge i ideje gde sve Ansibl može dobro doći.

Šta dalje?

Nastavimo dalje sa našim zamislima. Imamo onih 100 servera koje smo instalirali ranije i sad moramo da im nešto uradimo. Šta bi to moglo da bude? Za početak, pošto ste svesni dobrih bezbednosnih praksi i želite da ih primenite na svoje stado, uz pomoć Ansibla možete da na svakom od tih servera ograničite ko sve može imati prava sudoera (eng. sudoers – korisnici sa apsolutnim pravima na Linuks mašinama) i ograničiti pristup po IP adresama.

Kako sad pa to uraditi?

U pomoć vam pristižu džindža šeme (eng. jinja templates). Džindža šeme se ponašaju poput nekih nindži (kako im samo ime kaže) i nečujno menjaju statičke fajlove, pretvarajući ih u dinamičke. Šta to znači? Recimo da je potrebno da u svaki od ovih sudoers fajlova koji bi ste smestili u /etc/sudoers.d/ direktorijum upišete IP adresu mašine na kojoj se nalazite. Nećete ići od servera do servera i ručno menjati fajl i možda negde pogrešiti, već ćete u fajlu sa ekstenzijom .j2 (preporučena praksa u Ansiblu, kako bi znali da je u pitanju džindža) napisati kome je sve potrebno dati prava sudoera, a u delu koji se odnosi na IP adresu servera na kome se primenjuje sudoers fajl, jednostavno navesti varijablu – ansible_default_ipv4.address, poznatu kao činjenicu (eng. fact) koju je Ansibl prikupio onako usput i upotrebiće je baš onako kako je vama potrebno!

Pošto smo obezbedili naše stado, vreme je da ga ažuriramo, iliti pokrenemo dobro nam poznati jam apdejt (eng. yum update) ili apt-get apdejt (eng. apt-get update) i ažurirati sve pakete na sistemima. I to ćemo uraditi uz pomoć Ansibla i njegovih modula za jam (eng. yum) i apt. Šta su sad moduli? Pa, moduli su nešto nalik na komande koje Ansibl šalje udaljenim mašinama. Samih modula je mnogo, od modula za šeme (eng. template) čije smo korišćenje već spomenuli, preko modula za instalaciju paketa (jam i apt) do modula za manipulisanje fajervolom.

Kako se snaći u tom moru modula koje poseduje Ansibl?

Ansibl dokumentacija je na zavidnom nivou i pomoć možete potražiti u komandnoj liniji uz pomoć komande

ansible-doc [ime modula]

Ili jednostavno upišite

ansible-doc --list

Ovim dobijate listu svih modula koji se nalaze u Ansiblu.

Takođe, ako vam je (još uvek) malo teže da se snađete u komandnoj liniji, savetujem vam da pogledate veb sajt. Tamo možete naći isto ono što vam se nalazi i u terminalu, samo ne toliko robusno. Savetujem vam da što više koristite terminal i da iz njega učite, jer mogućnosti postoje. A tako su i mene savetovali kada sam kretao sa Ansiblom i svim ostalim stvarima. Ništa nije toliko kompleksno da malo “minus minus pomoć” (–help) ne može izaći u susret.

Šta je šta?

U ovom tekstu spomenuto je nekoliko izraza iz Ansibl rečnika, ovo su još neki od njih koji će vam možda pomoći da se u njemu snađete, ili vam pomoći da neke od stvari bolje razumete.

Ansibl modul – skup komandi koje Ansibl šalje mašini koju smo definisali i na njoj ih izvršava, vraćajući nama određene informacije.
Ansibl ad-hok – jedan od načina za pokretanje Ansibla, iz komandne linije.
Ansibl zadatak (eng. task) – drugi način za izvršavanje Ansibla, definisanjem zadataka u jaml fajlu.
Ansibl knjiga igara – skup zadataka, varijabli i još mnogo drugih stvari koje se nalaze u jednom fajlu i izvršavaju se na onoliko servera koliko smo mi definisali.
Činjenica (eng. fact) – predstavlja varijable koje Ansibl podrazumevano prikuplja o mašinama koje kontaktira.
Inventar (eng. inventory) – predstavlja fajl sa skupom mašina koji predstavljaju “mete” za Ansibl, ono što će on kontaktirati kada mu mi to kažemo.
Šema (eng. template) – jedan od modula Ansibla koji nam omogućava da na Ansibl kontrolnoj mašini (eng. control node) čuvamo jedan dinamički fajl koji plasiramo udaljenim mašinama sa varijablama koje smo definisali prilikom izvođenja nekih od zadataka iz knjige igara.
Ansibl kontrolna mašina (eng. Ansible Control Node) – mašina koja je centralna i na kojoj je instaliran Ansibl. Mašina čobanin koja brine o svom stadu uz pomoć Ansibla.

Ansibl rečnik je obiman i ovo je samo jedan delić koji će vas možda inspirisati da tražite dalje, čitate, mislite i pronalazite nove mogućnosti za upotrebu ovog premoćnog alata. Izvinjavam se ukoliko sam negde pogrešio sa nekim od ovih izraza, tako ih ja vidim i razumem.

Budite radoznali!