Ako používať značky v Ansible

Ako Pouzivat Znacky V Ansible



Hry, roly a úlohy sú štruktúrou ansible a táto štruktúra ansible obsahuje dôležitý atribút, ktorý sa v Ansible nazýva tagy. Kedykoľvek spustíme príručku v Ansible, môžete použiť príkazy -tags a –skip tags, aby sme mohli vykonávať iba určitú sériu úloh, hier a rolí. Ak máme playbook, ktorý obsahuje toľko úloh, ale nechceme vykonávať všetky úlohy z playbooku, namiesto vykonania celého playbooku spustíme len niekoľko úloh pomocou príkazu tag v Ansible playbooku.

V tejto téme budeme diskutovať o značkách, ktoré slúžia ako jeden z najdôležitejších aspektov Ansible. Pokúsime sa vysvetliť, čo sú značky a ako fungujú značky v službe Ansible, pretože ide o zamotanú funkciu platformy Ansible.







Playbook môže napríklad obsahovať tri povinnosti: inštalácia modulu, jeho konfigurácia a kontrola stavu nasadeného modulu, napríklad či je služba spustená a dostupná. Keďže jednoducho potrebujeme vidieť stav modulov na niekoľkých vzdialených počítačoch, v tejto situácii používame značky Ansible namiesto vykonávania všetkých úloh v príručke. Umožňuje nám to vykonávať výlučne určitú operáciu, čo nám umožňuje skrátiť čas chodu uchovávaním všetkých súvisiacich činností v jednej príručke.



Predpoklady používania značiek v Ansible Playbook

Pre uvedenie praktických príkladov do ansible softvéru musíme splniť nasledujúce požiadavky.



Aby mohol vykonávať zmeny, musí byť potrebný riadiaci server Ansible. Na využitie parametra tagu v softvéri Ansible potrebujeme, aby s nimi komunikovali lokálni hostitelia. V tomto prípade používame lokálneho hostiteľa počas celého vykonávania ako cieľový vzdialený server. Vytvoríme playbooky, spustíme príkazy značky Ansible a budeme monitorovať výsledky na vzdialených hostiteľoch zo zariadenia ansible-controller.





Pokúsime sa využiť rôzne scenáre na preskúmanie niekoľkých značiek Ansible, aby študent ľahko porozumel konceptu značiek v príručke Ansible.

Príklad 01: Prístup k jednej úlohe v Ansible Playbook

Budeme implementovať v Ansible poskytnutím viacerých úloh v playbooku a potom budeme pristupovať iba k jednej úlohe pomocou značiek v nej. Aby sme tak urobili, najprv vytvoríme playbook napísaním nasledujúceho príkazu:



[root@master ansible]# nano ansible_tags.yml

Po vytvorení a spustení príručky ansible_tags.yml. Teraz začneme písať príkazy do playbooku. Najprv odovzdáme poskytnutých hostiteľov v parametri „hosts“, ktorý použijeme „localhost“. Potom zapíšeme hodnotu „false“ do parametra „gather_facts“, aby sme pri spustení playbooku nemohli získať ďalšie informácie o localhost.

Potom začneme pod parametrom „tasks“ jednu po druhej vypisovať aktivity, ktoré chceme vykonať. V prvom procese zistíme, či sa dokument nachádza na počítači localhost. Ak je k dispozícii, uložíme ho do parametra „register“ a značke potom pridelíme jedinečný názov, aby sme po spustení playbooku mali ľahký prístup k značke. V druhej úlohe urobíme to isté, čo sme urobili v prvej úlohe, ale značka musí byť jedinečná a potom použijeme možnosť ladenia na zobrazenie úlohy spolu so súvisiacou správou.

- hostitelia:

- localhost
zhromaždiť_fakty: nepravda


úlohy:
- názov: Skontrolujte existenciu súboru x`
stat: cesta=./host.yml
register: súborExistuje
tagy: check_file


- ladiť:
msg: '{{ 'Súbor existuje' if fileExists.stat.exists else 'Súbor sa nenašiel' }}'
tagy: check_file


- name: Skontrolujte, či je súbor host.yml dostupný pre aktuálneho používateľa
shell: stat -c '%a' ./host.yml
register: accessPath
značky: check_access


- ladiť:
msg: '{{ 'Súbor je prístupný' if (accessPath.stdout|int) < 660 else 'Súbor nie je prístupný' }}'
značky: check_access

Teraz uložíme príručku a potom ju zatvoríme. Chceme spustiť príručku ansible_tags.yml, takže do terminálu Ansible napíšeme nasledujúci príkaz, aby sme používateľom predviedli výstup.

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

Po spustení vyššie uvedeného príkazu dostaneme na oplátku požadovaný výstup. Ako je uvedené nižšie, vykoná sa iba jedna úloha, ktorá sa zobrazí vo výstupe, ktorým je „skontrolovať existenciu súboru“.

Príklad 02: Ignorovanie konkrétnej značky v Ansible Playbook

Tu je druhý príklad značky Ansible, kde prejdeme na značku „preskočiť“. Je len na vás, či chcete ignorovať všetky úlohy alebo chcete ignorovať konkrétnu úlohu z playbooku v Ansible. Používame implementáciu z príkladu 1 a potom jednoducho preskočíme úlohu jednoduchým napísaním nižšie uvedeného príkazu do terminálu Ansible.

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

Z vyššie uvedeného príkazu sme jednoducho ignorovali úlohu „skontrolovať existenciu súboru“. Teraz sa vo výstupe zobrazuje iba jedna úloha, ktorá je „prístupný k súboru“ zeleným písmom.

Príklad 03: Vždy pokračujte v spustení úlohy v Ansible Playbook

Tretí príklad implementujeme na základe značky Ansible. V tomto príklade použijeme značku „always“, čo znamená, že konkrétna značka sa vždy spustí v Ansible Playbook. Ak chcete spustiť príručku, použite nasledujúci príkaz:

[root@master ansible]# nano ansible_tags.yml

V príručke sme vytvorili viacero úloh, ktoré sa majú spustiť, ale v poslednej úlohe, ktorá je „vymazanie hesla z inventára“, sme prešli značkou „vždy“. Nasledujú príkazy implementované v príručke:

- hostitelia: všetci

zhromaždiť_fakty: nepravda


úlohy:
- názov: Skontrolujte existenciu súboru
stat: cesta=./host.yml
register: súborExistuje
delegát_to: localhost
tagy: check_file


- ladiť:
msg: '{{ 'Súbor existuje' if fileExists.stat.exists else 'Súbor sa nenašiel' }}'
tagy: check_file


- name: Skontrolujte, či je súbor host.yml dostupný pre aktuálneho používateľa
shell: stat -c '%a' ./host.yml
register: accessPath
delegát_to: localhost
značky: check_access


- ladiť:
msg: '{{ 'Súbor je prístupný' if (accessPath.stdout|int) < 660 else 'Súbor nie je prístupný' }}'
značky: check_access


- meno: Vymazanie hesla z inventára
lineinfile:
cesta: '{{inventory_file}}'
regulárny výraz: '\b{{item}}.*\b'
stav: neprítomný
delegát_to: localhost
stať sa: falošným
značky: vždy
with_items:
- ansible_password

Potom vytvoríme súbor inventára na vytvorenie spojenia medzi radičom a cieľovým vzdialeným hostiteľom. Nižšie je uvedený príkaz:

[root@master ansible]# nano host.yml

Tu je súbor inventára, ktorý obsahuje informácie týkajúce sa „Linux_host“ v Ansible.

všetky:

hostitelia:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: *****
ansible_connection: ssh
ansible_port: 22

Aby sme získali požadovaný výstup, spustíme v termináli Ansible nasledujúci príkaz:

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

Záver

Značky v Ansible boli vysvetlené v tomto článku. Teraz chápeme funkciu značiek a miesta v Ansible, kde ich použijeme. Aby sme študentom pomohli pochopiť koncept značiek Ansible, vytvorili sme množstvo príkladov.