Blog

Ansible - ljepša strana inženjerstva

Ansible je alat koji će rastjerati (barem) pokoji oblak u vašoj tmurnoj svakodnevici dosadnih i monotonih zadataka. Čitaj dalje...
, 18.04.2018.

U životu svakog IT profesionalca, neminovno dođe do situacije kada dobijete “vrući krumpir”. Vrući krumpir po (slobodnoj) definiciji označava situacije u kojima netko na nekoga pokušava prebaciti neki teško rješivi problem. Svi koji su napadnuti ponašaju se gotovo identično: slijepo prihvaćaju pravila igre i svu svoju kreativnost usmjeravaju u pronalazak načina kako taj vrući krumpir proslijediti u neke druge, manje sretne ruke. Srećom, u karijeri (i životu) događaju se i puno ljepše stvari. Jedna od tih stvari je Ansible, negacija svega što pojam “vrući krumpir” predstavlja.

Ansible je open source platforma za automatizaciju u vlasništvu Red Hata. Najčešće ga se i najbolje opisuje s tri engleske riječi: simple, powerful i agentless. Lako se instalira i konfigurira, konfiguracija mu je lako čitljiva i razumljiva. Nakon jednostavne instalacije (npr. s yumom) koja traje svega par minuta, čak i bez nekog predznanja spremni ste profitirati od novostečenog prijateljstva. Predefinirana konfiguracija vjerojatno je dovoljna da pokrenete svoje prve module. Ono što je nužno napraviti jest definirati hostove nad kojima ćete pokretati te module. Da biste to napravili, dovoljno je navesti DNS alias, IP adresu ili neko vlastito simboličko ime kojima ćete označiti neki host, u tom slučaju potrebno mu je navesti i adresu. Svi ti hostovi se mogu pridijeliti različitim grupama (po projektima, okolinama, mogu se raditi unije, presjeci…). Ansible je i powerful. Moćan je jer s njime možete napraviti (automatizirati) zaista širok spektar svakodnevnih ili manje čestih akcija. Možete ga koristiti za upravljanjem servisima i konfiguracijom, za provisioning, naseljavanje aplikacija, orkestriranje naseljavanja aplikacija i servisa. Na kraju, bitna značajka Ansibla jest i da je on agentless. Većina sličnih alata (npr. Puppet, Chef) su klijent – server arhitektura, pa osim nekog poslužitelja morate instalirati i agente na sve čvorove kojima upravljate. Ansible ne radi tako, on iskorištava postojeće transportne mehanizme, odnosno, na Linux/Unix sustavima koristi SSH, a na Windows sustavima koristi PowerShell Remoting (defaultno, može i SSH).

Iz svega navedenog može se izvući zaključak da je Ansible vrlo brzo spreman za upotrebu. Dakle, nakon instalacije, definirate hostove (čak i ako samo navedete IP adrese/DNS aliase) i spremni ste za neke osnovne akcije. Možda najplastičniji (ne i najbolji) primjer kako na brzinu iskoristiti Ansible jest izvođenje neke skripte na više hostova. Inače biste tu skriptu morali kopirati na vaše ciljane okoline, napraviti ssh login na svaki taj node, a ako još malo zakompliciramo priču, pa pretpostavimo da skripta prima različite argumente po okolinama, onda prilagoditi te argumente i to je već dovoljno komplicirano da možete napraviti neku vremensku uštedu s Ansibleom. Ansible se zapravo sastoji od niza modula koji u većini slučajeva pokrivaju sve vaše potrebe. Slaganjem modula gradite playbooke, koji predstavljaju niz instrukcija koji se izvode na određenom hostu (ili skupu hostova). Za riješiti prethodni slučaj dovoljan će vam biti modul (neki od, moguće iskoristiti više modula za istu akciju) za kopiranje datoteka (u ovom primjeru skripte), te drugi kojim ćete pokrenuti skriptu. Parametre možete definirati prilikom definicije hostova te varijable možete iskoristiti pri pozivu. Ovaj jednostavni primjer dobar je za početak, da sami sebe nagovorite da se počnete igrati s Ansibleom. Istražujući što je potrebno za jednostavnije primjere upoznavat ćete se s kompliciranijim modulima, samim time rađat će se ideje kako riješiti i puno kompliciranije stvari, jer Ansible je sve samo ne alat kojim ćete puštati skripte, bez obzira na to što je iskoristiv i za takve potrebe.

S ciljem da vam pokušamo proširiti vidike spomenut ćemo još pokoji primjer kako koristimo Ansible. Zgodan je recimo za izvođenje healthcheck provjera. Jedan od najkorisnijih modula je template modul u kojem vi kreirate template (Jinja2), a onda taj template popunite različitim vrijednostima (statičkim varijablama koje sami definirate ili nekim koje dinamički otkrivate na svakom hostu). Primjerice za healthcheck kreirate HTML template, s vaših hostova prikupite informacije (recimo korištenjem setup modula), te tim informacijama popunite template. Rezultat je HTML dokument s informacijama koje sami određujete (npr. stanje memorije na serveru, zauzeće filesistema, analiza različitih sistemskih logova, CPU…). Na identičan način možete riješiti i naseljavanje različitih konfiguracijskih datoteka (properties datoteke, XML, različite ulazne datoteke za druge alate i aplikacije i slično).  Također, razvili smo i zgodan primjer gdje smo migraciju WebSphere Application Servera automatizirali korištenjem Ansiblea. Napisali smo playbook koji radi (gotovo) cijeli process migracije, od instalacije produkta, pripreme OS-a,migracije resursa i slično. Takav playbook nije univerzalan za sve okoline, ali moguće ga je proširiti i prilagoditi i za druge okoline te time dobiti na brzini i konzistentnosti izvođenja samog procesa.

Ansible je dakle jednostavni alat koji se brzo instalira, brzo konfigurira, isporučuje s hrpom korisnih modula koji pokrivaju većinu vaših potreba. Lagan je za naučiti i lako čitljiv i ako mu date priliku, vrlo brzo će vas osvojiti i uvjeriti da je izuzetno koristan kako za jednostavnije tako i za one kompliciranije zadatke. Bitno je spomenuti i Ansible Tower, komercijalni alat koje je zapravo web GUI dashboard koji nudi neke zanimljive pogodnosti, kao što su primjerice kontrola pristupa, scheduling zadataka, real-time status izvršavanja zadataka, različite organizacije poslova i timova i slično. Red Hat sponzorira i AWX projekt, koji je open source verzija Ansible Towera. Cijelu priču upotpunjuje i entuzijastična zajednica koja dijeli svoja rješenja. Možda ne možete iskoristiti sve što je ponuđeno, ali sigurno se može roditi ideja kako riješiti vlastitu zavrzlamu iz nečijih drugih rješenja. Sve u svemu, Ansible je alat koji će rastjerati (barem) pokoji oblak u vašoj tmurnoj svakodnevici dosadnih i monotonih zadataka.

Tagovi:
Povratak