Ansibl 2. deo
Autor: Stefan Nožinić
U prethodnom broju smo pomenuli šta je to Ansibl (eng. Ansible) i naveli smo primere njegove najjednostavnije upotrebe.
U ovom broju navodimo detaljniju upotrebu inventara, neke ad-hok komande, kao i neke detalje o upotrebi i mogućnostima konfiguracije pomoću Ansibla.
Inventar
U prethodnom broju bilo je tek nekoliko reči o ovom pojmu. Inventar nam je u prethodnom broju poslužio da navedemo naša tri servera koja smo kasnije pingovali. Rekli smo da je inventar datoteka koja služi za navođenje servera koji želimo da administriramo i da pomoću njega možemo konfigurisati specifične parametre za te servere.
Klasična i najprostija upotreba ove konfiguracione datoteke je jednostavno navođenje željenih servera:
/etc/ansible/hosts
server1.example.com server2.example.com server3.example.com mail.example.com web.example.com
Naravno, ovo je dovoljno za jednostavnu upotrebu u slučajevima kada želimo da svi naši serveri imaju istu konfiguraciju. Ovo, kao što svi dobro znamo, nije često slučaj. Obično želimo servere podešene za specifičnu namenu. Radi ovoga nam Ansibl inventar omogućava upotrebu grupa jednostavnim navođenjem sekcija, te nas ova konfiguraciona datoteka dosta podseća na INI format. Recimo da, naprimer, imamo dva veb-servera, jedan server za baze podataka i dva mejl-servera. Naša konfiguracija bi izgledala ovako:
[webservers] web1.example.com web2.example.com [email] mail1.example.com mail2.example.com [databases] db.example.com
Kao što se može primetiti iz primera, sekcije postavljamo između srednjih zagrada. Ovde je bitno napomenuti da jedan server može pripadati više sekcija, pa tako možemo imati server koji služi i za veb i za baze podataka.
Pored adrese servera možete navesti i SSH port ako se ne koristi onaj podrazumevani – naprimer:
mail.example.com:1548
Pored porta možete navesti i korisničko ime pri logovanju – primerice, na sledeći način:
other1.example.com ansible_connection=ssh ansible_ssh_user=mpdehaan other2.example.com ansible_connection=ssh ansible_ssh_user=mdehaan
Kao što ste mogli već da primetite i sami zaključite, moguće je postaviti individualne promenljive po hostu. Naprimer:
www.example.com var1=val1 var2=val2
Promenljive mogu biti konfigurisane i za celu grupu:
[webservers] web1.example.com web2.example.com [webservers:vars] var1=val1 var2=val2
Ad-hok komande
Iako je Ansibl namenjen za upotrebu sa tzv. plejbukovima (playbooks), često ćete imati potrebu da izvršite neku komandu na brzinu i nećete želeti da navodite specijalnu konfiguraciju za to. Zbog ovoga, Ansibl vam omogućava upotrebu ad-hok komandi.
Mi smo ovakvu komandu već pomenuli u prethodnom broju, ali nismo u detalje objašnjavali šta se tu konkretno dešava. Upotrebili smo je kada smo želeli da pingujemo sve naše servere.
Upotrebljavaju se tako što se u konzoli ukuca:
ansible target -a "command"
Ovde command treba zameniti željenom komandom koju želite da izvršite, a target treba zameniti imenom grupe ili hosta na kojem želite izvršavanje zadate komande.
Naprimer, ako želimo da restartujemo samo veb-servere, koristimo:
ansible webservers -a "reboot"
Na sličan način možemo koristiti i druge ugrađene module Ansibla, kao, primerice, copy modul za premeštanje datoteka na više servera:
ansible servers -m copy -a "src=/etc/hosts dest=/tmp/hosts"
Takođe, upotrebom ovih komandi možete saznati tzv. činjenice (eng. facts) o serveru. Ove varijable su važne, jer se mogu koristiti za uslovno izvršavanje komandi u plejbukovima.
Da biste saznali prikupljene činjenice za dati host, izvršite:
ansible target -m setup