Kako instalirati Ansible na CentOS 8?
Ansible je besplatan alat za automatizciju u IT, bilo da su server, cloud ili mreza. Ansible se lako instalira, jednostavan je i koristi yaml programski jezik koji nije tezak da se nauci.
Njega nam donosi RadHat u open source verziji kao Ansible a ima i vezija koja se plaća a to je Ansbile Tower. Ukoliko želite da instalirate Ansible Tower kliknite na ovaj link.
Pokazaću kako se instalira Ansible, kako se koristi i koji su fajlovi najbitniji za konfiguraciju.
Poazaćemo na jednom primeru zašto je Ansible tako dobar i lagan za korišćenje u IT okruženju.
Primer: Treba da podignemo web server na dva centos linuxa. To bi uradili tako što bi na svaki server se ulogovali i otkucali dnf install httpd i tako moramo da se ulogujemo i na drugi server pa da uradimo instalaciju kao i na prvom. Ali šta ako imamo 5 ili više servera i moramo na svaki da se logujemo i da raidmo instalacije ponaosob.
Tu stupa Ansible kao alat za automatizaciju a plus je i agentless (nije potrebno da se instaliraju dodatni pluginovi na server tj. agenti da bi ansible mogao da upravlja sa njima).
Jednostavno napravimo jedan fajl u kome kazemo šta treba da se uradi, zatim kažemo na kojim serverima sve to da promeni.
Za ovaj primer ću da podignem dva linux CentOS 8, jedan će da bude Ansible a druge će biti klijent na koji ćemo da instaliramo na primer web server.
1. Instalacija Ansible na CentOS 8
Ulogujte se na Ansible server i sada ćemo da uradimo instalaciju.
dnf update -y
dnf install epel-release
dnf install ansible.
Instalacija je zavrsena imamo instaliran Ansible.
Pogledamo sada koje sve fajlove imamo u Ansible direkorijumu
cd /etc/ansible
ls
Videćemo tri fajla ansible.cfg, hosts i roles
ansible.cfg – ovde je konfiguracioni fajl od ansible
hosts – sadrži listu onoga što želimo da kontrolišemo tj koji su to server i gde se nalaze. On se zove i inventory jer se u njemu nalaze svi podaci o linux mašinama ili ruterima itd.
2. Dodajemo šta želimo da kontrolišemo
U ovom fajlu ćemo sada da napišemo ip adrese od klijent linux mašine. Ukoliko imate više mašina koje hoćete da kontrolišete istovremeno tj da uradite instalaciju web servera na više njih, onda samo dodajte sve ip adrese jednu ispod druge. Jasnije će biti u primeru koji sledi.
vi hosts
na kraj ovog fajla pisemo sledeće
[web-server]
192.168.1.1
[web-server:vars]
ansible_user=root
ansible_password=piincloud
Snimimo promene.
Prvo smo napisali da imamo grupu i nazvali je web-server i dodali smo jendu ip addresu mog klijenta centos mašine. Ako imate više servera samo dodajte njihove ip adrese. Sad će sve ip adrese koje su u grupi web-server dobiti ista podešavanja koja budemo slali.
Drugo što smo napisali web-server:vars tu je kako ćemo se logovati da bi ansible pristupio serveru ili serverima koji su ubačeni u grupu web-server.
Napomena: stavili smo root usera ali naravno to ne treba raditi. Treba da se ima poseban user na primer ansible koji će biti na serveru ili serverima i tako bi ansible pristupao njima, umesto root usera bilo bi ansible user. Naravno postoje još neke zaštie kao što je SSH key ali za sada ćemo pokazati na najprostijem primeru.
3. Konfiguracioni fajl od Ansible
Treba sada samo da podesimo u konfiguracionom fajlu da ne proverava ssh kljuc.
vi ansible.cfg
Tražimo liniju gde piše
host_key_checking = False
ovo ćemo da otkomentujemo a to znači da neće proveravati ssh key. Opet i ovo ne treba raditi ali radi testa možemo.
4. Testiramo Ansible
Uradićemo test da vidimo da li je sve u redu sa našom grupom koja se zove web-server i da li možemo da je ping-ujemo. Svič -m je modul koju ćemo da izvršimo
ansible web-server -m ping
Druga komanda je -a to je ad-hoc komanda.
ansible web-server -a “hostname”
Ovo je test da pokažemo kako Ansible komunicira i izvršava komande. Pošto vidimo da su oba testa prošla sada ćemo da pokažemo kako ansible koristi playbook da izvriši neku operaciju za zadanu grupu.
5. Playbook
Kroz playbook možemo sve da organizujemo i da unapred napišemo šta će da se uradi i tu će biti napisana i grupa koja je u mom slučaju web-server. Playbook je pisan u yaml. Kroz njega se zadaju razni taskovi koji treba da se izvrše i to će se primeniti na celu grupu koju budete napisali.
Ovo je primer .yml fajla.
—
– name: Linux CentOS Web
hosts: web-server
tasks:
– name: instalacija httpd
dnf:
name: httpd
state: latest
U ovom primeru vidimo hosts: tu smo napisali grupu koju smo napravili i koja sadrži u mom slučaju jednu ip adresu.
dnf – je modul a on služi centos da možemo da instaliramo neki dodatak.
U delu tasks imamo šta želimo da izvšimo, name je ime komande koja će da se izvrši a to je instalacija httpd web servera.
Pravimo sada ovoj playbook koji ćemo da nazovemo httpd.
vi httpd.yml
– name: Linux CentOS Web
hosts: web-server
tasks:
– name: instalacija httpd
dnf:
name: httpd
state: latest
Snimimo promene.
6. Pokrećem playbook
Sledeće što radimo je pokretanje playbook-a i tu ćemo da vidimo šta je u stvari ansible i koliko je jendostavan.
ansible-playbook httpd.yml
Videćete sledeće: Task kako se zove i ispod toga koje komande će izvršiti.
U statusu stoji changed=1 to znači da ga je instalirao. Ukoliko probamo opet istu komandu da primenimo onda će u delu changed da stoji 0 jer je već instaliran i nema potrebe da se instalira ponovo.
Tip: ukoliko želite sada da deinstalirate na primer httpd možete samo da primenite u httpd.yml fajlu state: latest u state: absent i izbrisaće ga.
Warning: U mom primeru videćete neku grešku, to je zbog imena za grupu koju sam ja napravio web-server. Ime bi trebalo da sadrži -.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
Ukoliko je niste stavili vi nećete videtio ovo obaveštenje a ukoliko jeste samo promenite ime ili stavite bez crtice.
Ovim smo završili instalaciju i uspešno uradili testiranje Ansible koji je open source alat za upravljanje. Kao i što sam pomenuo Rad Hat osim ove vezije ima i plaćenu verziju koja se zove Ansible Tower i koja je u grafičkom okruženju (GUI).
Ukoliko želite možete i da pogledate dokumentaciju od RadHat Ansible posednje verzije.