Predstave, uloge i zadaci su struktura ansiblea i ova struktura ansiblea sadrži važan atribut koji se u Ansibleu zove oznake. Kad god pokrenemo playbook u Ansibleu, možete upotrijebiti naredbe -tags i –skip tags tako da možemo izvršiti samo određeni niz zadataka, igara i uloga. Ako imamo playbook koji sadrži toliko zadataka, ali ne želimo izvršiti sve zadatke playbooka, umjesto da izvršimo cijeli playbook, samo ćemo pokrenuti nekoliko zadataka pomoću naredbe tag u Ansible playbooku.
U ovoj ćemo temi raspravljati o oznakama koje služe kao jedan od najvažnijih aspekata Ansiblea. Pokušat ćemo objasniti što su oznake i kako oznake funkcioniraju u Ansibleu jer je to zbunjujuća značajka Ansible platforme.
Na primjer, priručnik može sadržavati tri odgovornosti: instaliranje modula, njegovo konfiguriranje i provjeru statusa raspoređenog modula, poput toga je li usluga pokrenuta i dostupna. Budući da jednostavno trebamo vidjeti stanje modula na nekoliko udaljenih strojeva, u ovoj situaciji koristimo oznake Ansible umjesto izvršavanja svih zadataka u priručniku. Omogućuje nam pokretanje isključivo određene operacije, što nam omogućuje smanjenje vremena izvođenja držeći sve povezane aktivnosti u jednom priručniku.
Preduvjeti za korištenje oznaka u Ansible Playbooku
Za postavljanje praktičnih primjera u ansible softver, moramo ispuniti sljedeće zahtjeve.
Ansible kontrolni poslužitelj mora biti potreban kako bi mogao vršiti promjene. Da bismo koristili parametar oznake u Ansible softveru, potrebni su nam lokalni hostovi za komunikaciju s njima. U ovom slučaju koristimo lokalno računalo tijekom cijelog izvođenja kao ciljni udaljeni poslužitelj. Izradit ćemo priručnike, izvršavati naredbe Ansible tagova i pratiti rezultate na udaljenim hostovima s uređaja ansible-controller.
Nastojat ćemo upotrijebiti različite scenarije za ispitivanje nekoliko Ansible oznaka kako bi učenik mogao lako razumjeti koncept oznaka u Ansible playbooku.
Primjer 01: Pristup jednom zadatku u Ansible Playbooku
Implementirat ćemo u Ansible pružajući više zadataka u priručniku, a zatim ćemo pristupiti samo jednom zadatku korištenjem oznaka u njemu. Da bismo to učinili, prvo ćemo kreirati playbook pisanjem sljedeće naredbe:
[root@master ansible]# nano ansible_tags.yml
Nakon izrade i pokretanja priručnika ansible_tags.yml. Sada ćemo početi pisati naredbe u knjižicu. Prvo ćemo proslijediti navedene hostove u parametru 'hosts' koji ćemo koristiti 'localhost'. Zatim ćemo napisati 'false' vrijednost u parametar 'gather_facts' tako da ne možemo dobiti dodatne informacije o lokalnom hostu kada izvršavamo playbook.
Nakon toga, počet ćemo ispisivati aktivnosti pod parametrom “tasks” jednu po jednu koju želimo izvršiti. Utvrdit ćemo postoji li dokument na lokalnom računalu u prvom procesu. Ako je dostupan, pohranit ćemo ga u parametar 'registar', a zatim ćemo oznaci dodijeliti jedinstveno ime tako da ćemo, kada izvršimo playbook, lako pristupiti oznaci. U drugom zadatku učinit ćemo isto što smo učinili u prvom zadatku, ali oznaka mora biti jedinstvena, a zatim ćemo upotrijebiti opciju otklanjanja pogrešaka da prikažemo zadatak zajedno s povezanom porukom.
- domaćini:- lokalni domaćin
skup_činjenica: netočno
zadaci:
- naziv: Provjerite postojanje datoteke x`
stat: put=./host.yml
registar: datotekaPostoji
oznake: check_file
- ispravljanje pogrešaka:
msg: '{{ 'Datoteka postoji' if fileExists.stat.exists else 'Datoteka nije pronađena' }}'
oznake: check_file
- name: Provjerite je li host.yml dostupan trenutnom korisniku
ljuska: stat -c '%a' ./host.yml
registar: pristupna staza
oznake: check_access
- ispravljanje pogrešaka:
msg: '{{ 'Datoteka dostupna' if (accessPath.stdout|int) < 660 else 'Datoteka nije dostupna' }}'
oznake: check_access
Sada ćemo spremiti knjigu i zatvoriti je. Želimo pokrenuti ansible_tags.yml priručnik pa ćemo napisati sljedeću naredbu u Ansible terminalu kako bismo prikazali izlaz korisnicima.
[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_fileNakon pokretanja gornje naredbe, zauzvrat ćemo dobiti željeni izlaz. Kao što je prikazano u nastavku, samo se jedan zadatak izvršava i on se prikazuje u izlazu, a to je 'provjeri postojanje datoteke'.
Primjer 02: Ignorirajte određenu oznaku u Ansible Playbooku
Evo drugog primjera oznake Ansible gdje idemo na oznaku 'preskoči'. Na vama je da li želite ignorirati sve zadatke ili želite ignorirati određeni zadatak u priručniku u Ansibleu. Koristimo implementaciju primjera 1, a zatim ćemo jednostavno preskočiti zadatak jednostavnim pisanjem donje izjave u Ansible terminalu.
[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_fileIz gornje naredbe jednostavno smo zanemarili zadatak 'provjeri postojanje datoteke'. Sada se samo jedan zadatak prikazuje u izlazu koji je 'datoteci dostupan' zelenim fontom.
Primjer 03: Uvijek nastavite s pokretanjem zadatka u Ansible Playbooku
Treći primjer implementirat ćemo na temelju oznake Ansible. U ovom primjeru koristit ćemo oznaku 'always' što znači da će se određena oznaka uvijek izvršavati u Ansible Playbooku. Za pokretanje playbook-a koristite sljedeću naredbu:
[root@master ansible]# nano ansible_tags.ymlU priručniku smo stvorili više zadataka za pokretanje, ali smo proslijedili oznaku 'uvijek' u posljednjem zadatku koji glasi 'izbriši lozinku iz inventara'. Sljedeće su naredbe implementirane u priručniku:
- domaćini: sviskup_činjenica: netočno
zadaci:
- naziv: Provjerite postojanje datoteke
stat: put=./host.yml
registar: datotekaPostoji
delegat_to: lokalni host
oznake: check_file
- ispravljanje pogrešaka:
msg: '{{ 'Datoteka postoji' if fileExists.stat.exists else 'Datoteka nije pronađena' }}'
oznake: check_file
- name: Provjerite je li host.yml dostupan trenutnom korisniku
ljuska: stat -c '%a' ./host.yml
registar: pristupna staza
delegat_to: lokalni host
oznake: check_access
- ispravljanje pogrešaka:
msg: '{{ 'Datoteka dostupna' if (accessPath.stdout|int) < 660 else 'Datoteka nije dostupna' }}'
oznake: check_access
- ime: Izbriši lozinku iz inventara
lineinfile:
put: '{{inventory_file}}'
regularni izraz: '\b{{item}}.*\b'
stanje: odsutan
delegat_to: lokalni host
postati: lažan
oznake: uvijek
sa_stavkama:
- ansible_password
Nakon toga, izradit ćemo datoteku inventara za izgradnju veze između kontrolera i ciljnog udaljenog glavnog računala. Ispod je naredba:
[root@master ansible]# nano host.ymlOvdje je datoteka inventara koja sadrži informacije povezane s 'Linux_host' u Ansibleu.
Svi:domaćini:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ******
ansible_connection: ssh
ansible_port: 22
Da bismo dobili željeni izlaz, pokrenut ćemo sljedeću naredbu u Ansible terminalu:
[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml
Zaključak
Oznake u Ansibleu objašnjene su u ovom članku. Sada razumijemo funkciju oznaka i mjesta u Ansibleu gdje ćemo ih primijeniti. Kako bismo pomogli učeniku da razumije koncept ansible oznaka, razvili smo razne primjere.