Cum să utilizați etichetele în Ansible

Cum Sa Utilizati Etichetele In Ansible



Piesele, rolurile și sarcinile sunt structura ansible și această structură ansible conține atributul important care se numește etichete în Ansible. Ori de câte ori lansăm un manual în Ansible, puteți folosi comenzile -tags și –skip tags, astfel încât să putem executa doar o anumită serie de sarcini, piese de teatru și roluri. Dacă avem un playbook care conține atât de multe sarcini, dar nu dorim să executăm toate sarcinile din playbook, în loc să executăm întregul playbook, vom rula doar câteva sarcini folosind comanda tag din Ansible Playbook.

Vom discuta despre etichete în acest subiect, care servesc drept una dintre cele mai importante fațete ale lui Ansible. Vom încerca să explicăm ce sunt etichetele și cum funcționează etichetele în Ansible, deoarece aceasta este o caracteristică perplexă a platformei Ansible.







De exemplu, un manual poate conține trei responsabilități: instalarea modulului, configurarea acestuia și verificarea stării modulului implementat, cum ar fi dacă serviciul rulează și este accesibil. Deoarece trebuie pur și simplu să vedem starea modulelor pe câteva mașini la distanță, folosim etichete Ansible în această situație, în loc să executăm toate sarcinile din manualul de joc. Ne permite să rulăm o anumită operațiune exclusiv, permițându-ne să reducem timpul de rulare prin păstrarea tuturor activităților conexe într-un singur manual.



Condiții preliminare pentru utilizarea etichetelor din Ansible Playbook

Pentru a pune exemplele practice în software-ul ansible, trebuie să îndeplinim următoarele cerințe.



Trebuie să fie necesar un server de control Ansible pentru ca acesta să facă modificări. Pentru a utiliza parametrul etichetei în software-ul Ansible, avem nevoie de gazdele locale pentru a comunica cu ele. În acest caz, folosim gazda locală pe tot parcursul execuției ca server țintă la distanță. Vom crea cărți de joc, vom executa comenzi de etichete Ansible și vom monitoriza rezultatele pe gazde la distanță de pe dispozitivul ansible-controller.





Vom urmări să folosim diferite scenarii pentru a examina câteva dintre etichetele Ansible, astfel încât cursantul să poată înțelege cu ușurință conceptul de etichete într-un manual Ansible.

Exemplul 01: Accesarea unei singure sarcini în Ansible Playbook

Vom implementa în Ansible prin furnizarea de sarcini multiple în manual și apoi vom accesa doar o singură sarcină utilizând etichetele din acesta. Pentru a face acest lucru, vom crea mai întâi playbook-ul scriind următoarea comandă:



[root@master ansible]# nano ansible_tags.yml

După crearea și lansarea registrului de joc ansible_tags.yml. Acum vom începe să scriem comenzile în playbook. În primul rând, vom trece gazdele furnizate în „parametrul hosts” pe care îl vom folosi „localhost”. Apoi, vom scrie valoarea „false” în parametrul „gather_facts”, astfel încât să nu putem obține informații suplimentare despre localhost atunci când executăm playbook-ul.

După aceea, vom începe listarea activităților sub parametrul „sarcini” una câte una pe care dorim să le executăm. Vom stabili dacă documentul este acolo pe mașina localhost în primul proces. Dacă este disponibil, îl vom stoca în parametrul „register” și apoi vom da numele unic etichetei pentru ca atunci când executăm playbook-ul, să ne fie ușor să accesăm eticheta. În a doua sarcină, vom face la fel ca și în prima sarcină, dar eticheta trebuie să fie unică și apoi vom folosi opțiunea de depanare pentru a prezenta sarcina împreună cu mesajul aferent.

- gazde:

- gazdă locală
gather_facts: false


sarcini:
- nume: Verificați existența fișierului x`
stat: cale=./host.yml
înregistrare: fileExists
tag-uri: check_file


- depanare:
msg: „{{ „Fișierul există” dacă fileExists.stat.exists altfel „Fișierul nu a fost găsit” }}”
tag-uri: check_file


- nume: verificați dacă host.yml este accesibil utilizatorului curent
shell: stat -c '%a' ./host.yml
înregistrare: accessPath
tag-uri: check_access


- depanare:
msg: '{{ 'Fișier accesibil' dacă (accessPath.stdout|int) < 660 altfel 'Fișierul nu este accesibil' }}'
tag-uri: check_access

Acum, vom salva playbook-ul și apoi îl vom închide. Dorim să rulăm playbook-ul ansible_tags.yml, așa că vom scrie următoarea comandă în terminalul Ansible pentru a prezenta rezultatul utilizatorilor.

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

După rularea comenzii de mai sus, vom obține în schimb rezultatul dorit. După cum se arată mai jos, este executată o singură sarcină și aceasta este afișată în rezultat, care este „verificați existența fișierului”.

Exemplul 02: Ignorați o anumită etichetă în Ansible Playbook

Iată cel de-al doilea exemplu de etichetă Ansible unde vom merge la eticheta „săriți”. Depinde de dvs. dacă doriți să ignorați toate sarcinile sau dacă doriți să ignorați o anumită sarcină din manualul din Ansible. Utilizăm implementarea exemplului 1 și apoi vom omite sarcina prin simpla scriere a declarației de mai jos în terminalul Ansible.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

Din comanda de mai sus, pur și simplu am ignorat sarcina „verificați existența fișierului”. Acum, doar o singură sarcină este afișată în ieșire, care este „accesibil la fișier” cu font verde.

Exemplul 03: Continuați să rulați întotdeauna sarcina în Ansible Playbook

Vom implementa al treilea exemplu pe baza etichetei Ansible. În acest exemplu, vom folosi eticheta „întotdeauna”, ceea ce înseamnă că o anumită etichetă se va executa întotdeauna în Ansible Playbook. Pentru a lansa playbook-ul, utilizați următoarea comandă:

[root@master ansible]# nano ansible_tags.yml

În manualul de joc, am creat mai multe sarcini de rulat, dar am trecut eticheta „întotdeauna” în ultima sarcină, care este „Ștergeți parola din inventar”. Următoarele sunt comenzile implementate în playbook:

- gazde: toate

gather_facts: false


sarcini:
- nume: Verificați existența fișierului
stat: cale=./host.yml
înregistrare: fileExists
delegate_to: localhost
tag-uri: check_file


- depanare:
msg: „{{ „Fișierul există” dacă fileExists.stat.exists altfel „Fișierul nu a fost găsit” }}”
tag-uri: check_file


- nume: verificați dacă host.yml este accesibil utilizatorului curent
shell: stat -c '%a' ./host.yml
înregistrare: accessPath
delegate_to: localhost
tag-uri: check_access


- depanare:
msg: '{{ 'Fișier accesibil' dacă (accessPath.stdout|int) < 660 altfel 'Fișierul nu este accesibil' }}'
tag-uri: check_access


- nume: ștergeți parola din inventar
lineinfile:
cale: „{{inventory_file}}”
expresie regulă: „\b{{articol}}.*\b”
stare: absent
delegate_to: localhost
deveni: fals
tag-uri: mereu
cu_articole:
- parola_ansible

După aceea, vom crea fișierul de inventar pentru a construi conexiunea între controler și gazda la distanță țintă. Mai jos este comanda:

[root@master ansible]# nano host.yml

Aici este fișierul de inventar care conține informațiile legate de „Linux_host” în Ansible.

Toate:

gazde:
Linux_Host:
gazdă_ansible: 192.168.3.229
ansible_user: ansible
parola_ansible: ******
ansible_connection: ssh
ansible_port: 22

Pentru a obține rezultatul dorit, vom rula următoarea comandă în terminalul Ansible:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Concluzie

Etichetele din Ansible au fost explicate în acest articol. Înțelegem acum funcția etichetelor și locurile din Ansible unde le vom aplica. Pentru a ajuta elevul să înțeleagă înțelegerea conceptului de etichete Ansible, am dezvoltat o varietate de exemple.