A címkék használata az Ansible-ben

A Cimkek Hasznalata Az Ansible Ben



A játékok, szerepek és feladatok jelentik az ansible szerkezetet, és ez az ansible struktúra tartalmazza a fontos attribútumot, amelyet az Ansible-ben címkéknek neveznek. Amikor elindítunk egy játékfüzetet az Ansible-ben, használhatja a -tags és -skip tags parancsokat, így csak egy bizonyos feladatsort, játékot és szerepkört tudunk végrehajtani. Ha van egy olyan játékkönyvünk, amely ennyi feladatot tartalmaz, de nem akarjuk végrehajtani a forgatókönyv összes feladatát, ahelyett, hogy a teljes játékfüzetet végrehajtanánk, csak néhány feladatot futtatunk az Ansible playbook tag parancsával.

Ebben a témában a címkéket fogjuk megvitatni, amelyek az Ansible egyik legfontosabb oldalaként szolgálnak. Megpróbáljuk elmagyarázni, mik azok a címkék, és hogyan működnek a címkék az Ansible-ben, mivel ez az Ansible platform zavarba ejtő funkciója.







Például egy játékkönyv három feladatot tartalmazhat: a modul telepítését, konfigurálását és a telepített modul állapotának ellenőrzését, például, hogy a szolgáltatás fut-e és elérhető-e. Mivel egyszerűen csak látnunk kell a modulok állapotát néhány távoli gépen, ebben a helyzetben az Ansible címkéket használjuk ahelyett, hogy a játékfüzetben szereplő összes feladatot végrehajtanánk. Lehetővé teszi számunkra, hogy egy bizonyos műveletet kizárólagosan lefuttassunk, így csökkenthetjük a futási időt azáltal, hogy az összes kapcsolódó tevékenységet egyetlen játékfüzetben tároljuk.



Az Ansible Playbook címkéinek használatának előfeltételei

Ahhoz, hogy a gyakorlati példákat a lehetséges szoftverbe helyezzük, a következő követelményeknek kell megfelelnünk.



Egy Ansible vezérlőkiszolgálóra van szükség ahhoz, hogy változtatásokat hajtson végre. A címkeparaméter használatához az Ansible szoftverben szükségünk van a helyi gazdagépekre, hogy kommunikáljanak velük. Ebben az esetben a végrehajtás során a helyi gazdagépet használjuk távoli célkiszolgálóként. Lejátszási füzeteket hozunk létre, Ansible tag parancsokat hajtunk végre, és figyeljük az eredményeket távoli gépeken az ansible-controller eszközről.





Különböző forgatókönyveket fogunk alkalmazni néhány Ansible-címke vizsgálatára, hogy a tanuló könnyen megértse a címkék fogalmát az Ansible-játékkönyvben.

01. példa: Egyetlen feladat elérése az Ansible Playbookban

Az Ansible-ben úgy fogjuk megvalósítani, hogy több feladatot adunk meg a forgatókönyvben, majd csak egyetlen feladatot fogunk elérni a benne található címkék felhasználásával. Ehhez először a játékkönyvet hozzuk létre a következő parancs beírásával:



[root@master ansible]# nano ansible_tags.yml

Az ansible_tags.yml játékkönyv létrehozása és elindítása után. Most elkezdjük írni a parancsokat a füzetbe. Először átadjuk a megadott gazdagépeket a „hosts” paraméterben, amelyet a „localhost” fog használni. Ezután a „hamis” értéket írjuk a „gather_facts” paraméterbe, hogy a playbook végrehajtásakor ne tudjunk extra információkat szerezni a localhost-ról.

Ezt követően a „tasks” paraméter alatt kezdjük el egyenként felsorolni azokat a tevékenységeket, amelyeket végrehajtani szeretnénk. Az első folyamatban meghatározzuk, hogy a dokumentum ott van-e a localhost gépen. Ha elérhető, akkor a „register” paraméterben tároljuk, majd egyedi nevet adunk a címkének, hogy a playbook végrehajtásakor könnyen hozzáférhessünk a címkéhez. A második feladatban ugyanazt fogjuk csinálni, mint az első feladatban, de a címkének egyedinek kell lennie, majd a debug opciót használjuk a feladat bemutatására a kapcsolódó üzenettel együtt.

- otthont ad:

- helyi kiszolgáló
összegyűjti_tényeket: hamis


feladatok:
- név: Ellenőrizze a fájl létezését x`
stat: path=./host.yml
regiszter: fileExists
címkék: check_file


- hibakeresés:
msg: '{{ 'A fájl létezik', ha a fileExists.stat.exists egyébként 'A fájl nem található' }}'
címkék: check_file


- név: Ellenőrizze, hogy a host.yml fájl elérhető-e az aktuális felhasználó számára
shell: stat -c '%a' ./host.yml
regisztráció: accessPath
címkék: check_access


- hibakeresés:
msg: '{{ 'A fájl elérhető' if (accessPath.stdout|int) < 660 else 'A fájl nem elérhető' }}'
címkék: check_access

Most elmentjük a forgatókönyvet, majd bezárjuk. Futtatni akarjuk az ansible_tags.yml játékkönyvet, ezért a következő parancsot írjuk az Ansible terminálba, hogy bemutassuk a kimenetet a felhasználók számára.

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

A fenti parancs futtatása után cserébe megkapjuk a kívánt kimenetet. Az alábbiakban látható módon csak egy feladat kerül végrehajtásra, és ez megjelenik a kimenetben, amely „ellenőrizze a fájl létezését”.

02. példa: Egy adott címke figyelmen kívül hagyása az Ansible Playbookban

Itt van az Ansible címke második példája, ahol a „skip” címkére megyünk. Önön múlik, hogy figyelmen kívül hagyja-e az összes feladatot, vagy figyelmen kívül hagyja az Ansible játékkönyvének egy bizonyos feladatát. Az 1. példa megvalósítását használjuk, majd kihagyjuk a feladatot, egyszerűen beírjuk az alábbi utasítást az Ansible terminálba.

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

A fenti parancsból egyszerűen figyelmen kívül hagytuk a „fájl létezésének ellenőrzése” feladatot. Most már csak egyetlen feladat jelenik meg a kimenetben, amely zöld betűtípussal „elérhető fájl”.

03. példa: Mindig folytassa a feladat futtatását az Ansible Playbookban

A harmadik példát az Ansible címke alapján fogjuk megvalósítani. Ebben a példában az „always” címkét fogjuk használni, ami azt jelenti, hogy egy adott címke mindig végrehajtásra kerül az Ansible Playbookban. A játékkönyv elindításához használja a következő parancsot:

[root@master ansible]# nano ansible_tags.yml

A forgatókönyvben több feladatot is létrehoztunk futtatásra, de az utolsó feladatban átadtuk a „mindig” címkét, ami a „jelszó törlése a készletből”. A következő parancsok vannak implementálva a játékkönyvben:

- házigazdák: mind

összegyűjti_tényeket: hamis


feladatok:
- név: Ellenőrizze a fájl létezését
stat: path=./host.yml
register: fileExists
delegate_to: localhost
címkék: check_file


- hibakeresés:
msg: '{{ 'A fájl létezik', ha a fileExists.stat.exists egyébként 'A fájl nem található' }}'
címkék: check_file


- név: Ellenőrizze, hogy a host.yml fájl elérhető-e az aktuális felhasználó számára
shell: stat -c '%a' ./host.yml
regisztráció: accessPath
delegate_to: localhost
címkék: check_access


- hibakeresés:
msg: '{{ 'A fájl elérhető' if (accessPath.stdout|int) < 660 else 'A fájl nem elérhető' }}'
címkék: check_access


- név: Jelszó törlése a készletből
lineinfile:
elérési út: '{{inventory_file}}'
reguláris kifejezés: '\b{{elem}}.*\b'
állapot: nincs jelen
delegate_to: localhost
lesz: hamis
címkék: mindig
with_items:
- ansible_password

Ezt követően létrehozzuk a leltárfájlt a vezérlő és a cél távoli gazdagép közötti kapcsolat létrehozásához. Alul a parancs:

[root@master ansible]# nano host.yml

Itt található a leltárfájl, amely az Ansible-ben található „Linux_host”-hoz kapcsolódó információkat tartalmazza.

Minden:

otthont ad:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
lehetséges_jelszó: ******
ansible_connection: ssh
lehetséges_port: 22

A kívánt kimenet eléréséhez a következő parancsot futtatjuk az Ansible terminálban:

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

Következtetés

Az Ansible címkéit ebben a cikkben ismertetjük. Most már megértjük a címkék funkcióját és azokat a helyeket az Ansible-ben, ahol alkalmazni fogjuk őket. Annak érdekében, hogy a tanuló megértse az Ansible címkék fogalmát, számos példát dolgoztunk ki.