Kezdő oktatóanyag - Ansible Playbooks, Variables and Inventory

Beginner S Tutorial Ansible Playbooks



Az ansible játékkönyvek olyan fájlok, amelyek olyan feladatokat tartalmaznak, amelyeket a gazdagépek Ansible segítségével történő konfigurálásához futtatnak. A nem használható játékkönyvek YAML formátumban készülnek. A YAML egy nagyon egyszerű fájlformátum, akárcsak a JSON. A cikk későbbi részében megmutatom, hogyan néznek ki az Ansible YAML játékkönyvek.

Az Ansible Inventory fájlok karbantartják azoknak a gazdagépeknek a listáját, amelyeket konfigurálni vagy kezelni szeretne az Ansible segítségével. Ezeket a gazdagépeket csoportosíthatja, és csoportok szerint is kezelheti. Ezenkívül különböző változókat adhat át minden gazdagép vagy gazdagépcsoport számára.







Ebben a cikkben gyakorlati példákkal mutatom meg, hogyan kell dolgozni az Ansible játékkönyvekkel, változókkal, leltárfájlokkal és néhány gyakori Ansible modullal. Szóval, kezdjük el!



Előfeltételek

Ha szeretné kipróbálni a cikkben szereplő példákat,



1) A számítógépen telepítenie kell az Ansible alkalmazást.
2) Legalább Ubuntu/Debian és CentOS/RHEL 8 gazdagépekkel kell rendelkeznie az Ansible automatizáláshoz.





Sok cikk található a LinuxHint -en az Ansible telepítéséről és a gazdagépek konfigurálásáról az Ansible automatizáláshoz. Ha szükséges, nézze meg ezeket a cikkeket további információkért.

Projektkönyvtár létrehozása

Először hozzon létre egy projektkönyvtárat ~/project/ a következő paranccsal:

$mkdir -pv~/projekt/játékkönyvek

Navigáljon a ~/project/ könyvtár az alábbiak szerint:

$CD~/projekt

Alapkészlet fájl:

Hozzon létre egy Ansible készletfájlt otthont ad a projektkönyvtárban a következő paranccsal:

$nanootthont ad

Az Ansible segítségével megadhatja a konfigurálni/automatizálni kívánt állomások IP -címét a otthont ad leltárfájl.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

Miután befejezte ezt a lépést, mentse a fájlt a megnyomásával + x követi ÉS és .

Ha DNS -neveket szeretne használni a leltárfájlban az IP -címek helyett, akkor ezt is megteheti.

Ha nincs működő DNS -kiszolgálója, használhatja a /etc/hosts fájlt a számítógépen a helyi DNS -feloldáshoz.

A helyi DNS feloldáshoz nyissa meg a /etc/hosts fájl szövegszerkesztővel ( nano , az én esetemben) a következőképpen:

$sudo nano /stb./otthont ad

Írja be az IP -címeket és a kívánt DNS -neveket az alábbiak szerint:

192.168.20.167 vm1.nodekite.com
192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com

Ha befejezte ezt a lépést, nyomja meg a gombot + x követi ÉS és .

Nyissa meg az Ansible készletfájlt otthont ad alábbiak szerint:

$nanootthont ad

Most beírhatja a konfigurálni/automatizálni kívánt állomások DNS -nevét az Ansible használatával a otthont ad leltárfájl.

vm1.nodekite.com
vm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com

Ha elkészült, mentse a hosts leltárfájlt a megnyomásával + x követi ÉS és .

Az összes gazdagéphez való csatlakozás tesztelése

Most megpróbálhatja pingelni a leltárfájl összes gazdagépét az alábbiak szerint:

$képtelen-énházigazdája minden-uképtelen-m ping

Mint látható, a leltárfájlban található összes gazdagép elérhető. Tehát készen állunk a cikk következő szakaszára.

Az első Ansible Playbook

Készítsünk egy egyszerű Ansible játékkönyvet ping_all_hosts.yaml ban,-ben játékkönyvek/ Könyvtár. Ez a művelet pingelni fogja az összes gazdagépet a otthont ad leltárfájl, mint korábban.

$nanojátékkönyvek/ping_all_hosts.yaml

Írja be a következő sorokat a ping_all_hosts.yaml Nem megengedett játékkönyv fájl:

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Ping minden gazdagép
ping:

Itt,

házigazdák: mind - kiválasztja az összes gazdagépet a leltárfájlból otthont ad .
felhasználó: ansible - mondja az Ansible -t az SSH -nak a leltárfájlban található gazdagépekhez képtelen felhasználó.
feladatokat - az összes olyan feladat, amelyet az Ansible végrehajt a gazdagépekben, itt található. Minden feladathoz általában tartozik egy név és egy vagy több modul -specifikus opciót.

A játékkönyv ping_all_hosts.yaml csak egy feladata van, pingelve a leltárfájl összes gazdagépét otthont ad . A feladat neve az Ping minden gazdagép és használja a ping modul.

Az ping modulnak nincs szüksége más opciókra. Tehát üresen hagytam (a vastagbél után nincs semmi, : )

Miután befejezte ezt a lépést, mentse a fájlt a megnyomásával + x követi ÉS és .

Futtathatja a ping_all_hosts.yaml Engedhetetlen játékkönyv a következőképpen:

$ansible-playbook-énjátékkönyveket rendez/ping_all_hosts.yaml

Amint láthatja, a ping feladat sikeres a leltárfájl minden gazdagépében.

Egyszerű, nem használható konfigurációs fájl

A korábbi példában a -én lehetőséget, hogy megmondja az Ansible -nek, hogy melyik készletfájlt használja. Az én esetemben ez a otthont ad leltárfájl.

$ansible-playbook-énjátékkönyveket rendez/ping_all_hosts.yaml

Ha nem kíván leltárfájlt továbbítani a -én opciót minden alkalommal, amikor Ansible játékkönyvet futtat, mindössze annyit kell tennie, hogy beállít egy alapértelmezett készletfájlt a projekthez.

Ehhez hozzon létre egy új Ansible konfigurációs fájlt ansible.cfg a projekt gyökerében az alábbiak szerint:

$nanoansible.cfg

Írja be a következő sorokat a ansible.cfg fájl:

[alapértelmezések]
leltár =./otthont ad

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Ugyanazt az Ansible játékkönyvet futtathatja az alábbiak szerint:

$ansible-playbook játékkönyvek/ping_all_hosts.yaml

Mint látható, a játékkönyv a otthont ad alapértelmezés szerint leltárfájl. Még mindig használhatja a -én lehetőség, hogy megadjon egy másik készletfájlt, ha szeretné. Az ansible nagyon rugalmas.

Gazdák csoportosítása a leltárfájlban

Eddig megmutattam, hogyan kell egy feladatkészletet (játékkönyvet) futtatni a leltárfájl összes gazdagépében. De mi van akkor, ha egy feladatkészletet szeretne futtatni néhány gazdagépben, egy másik feladatsort pedig más gazdagépekben? A gazdagépeket a leltárfájlba csoportosíthatja, és különböző feladatokat futtathat a gazdacsoportokon.

Ebben a részben megmutatom, hogyan csoportosíthatja a gazdagépeket a leltárfájlban, és hogyan dolgozhat a gazdacsoportokkal.

Először nyissa meg a leltárfájlt otthont ad alábbiak szerint:

$nanootthont ad

Írja be a következő sorokat a otthont ad leltárfájl:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com

Itt két fogadó csoportot hoztam létre: debian10 és centos8 .

Ban,-ben debian10 csoport, két házigazdám van: vm1.nodekite.com és vm2.nodekite.com

Ban,-ben centos8 csoport, két házigazdám van: vm3.nodekite.com és vm4.nodekite.com

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Most létrehozunk egy új játékkönyvet ping_debian10_hosts.yaml , amely pingelni fogja a házigazdákat, mint korábban, de csak a házigazdákat a debian10 házigazda csoport.

Hozzon létre egy játékkönyvet ping_debian10_hosts.yaml ban,-ben játékkönyvek/ könyvtár az alábbiak szerint:

$nanojátékkönyvek/ping_debian10_hosts.yaml

Írja be a következő sorokat a ping_debian10_hosts.yaml Elengedhetetlen játékkönyv:

- házigazdák: debian10
felhasználó: ansible
feladatok:
- név: Ping all Debian10otthont ad
ping:

Ahelyett házigazdák: mind , Hozzáadtam házigazdák: debian10 itt. debian10 a házigazda csoport. Ez a játékkönyv csak a gazdagépeken fut debian10 házigazda csoport.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a játékkönyvet az alábbiak szerint:

$ansible-playbook játékkönyvek/ping_debian10_hosts.yaml

Mint látható, csak a házigazdák a debian10 a fogadó csoport pingel.

Ugyanezzel a módszerrel hozzon létre egy másik játékkönyvet ping_centos8_hosts.yaml alábbiak szerint:

$nanojátékkönyvek/ping_centos8_hosts.yaml

Írja be a következő sorokat a ping_centos8_hosts.yaml Elengedhetetlen játékkönyv:

- házigazdák: centos8
felhasználó: ansible
feladatok:
- név: Ping all CentOS8otthont ad
ping:

Hasonló módon tettem hozzá házigazdák: centos8 itt. centos8 a házigazda csoport. Ez a játékkönyv csak a gazdagépeken fut centos8 házigazda csoport.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a játékkönyvet az alábbiak szerint:

$ansible-playbook játékkönyvek/ping_centos8_hosts.yaml

Mint látható, csak a házigazdák a centos8 a fogadó csoport pingel.

Változó típusok

Az Ansible különböző típusú változókat tartalmaz. A fő változótípusok a következők Ansible Facts változók és Felhasználó által definiált változók .

Ansible Facts változók: Attól függően, hogy az Ansible milyen gazdagépen dolgozik, az Ansible Ansible tények változókat generál. Az Ansible Facts változók információkat tartalmaznak a gazdagépről, például IP -címeket, hostnevet, domain nevet, dátumot, időt, shell környezeti változókat és így tovább.

Felhasználó által definiált változók: Ezek a felhasználó által meghatározott egyéni változók. A felhasználó által definiált változókat átadhatja a parancssorból vagy a leltárfájl használatával.

A felhasználó által definiált változók alapvetően két típusból állnak: Változók csoportosítása és Host változók .

Ansible Variable Precedence

Az Ansible változó prioritása az : Parancssori változók > Host változók > Változók csoportosítása

Ha ugyanazt a változót állítja be, mint a gazda és a csoportváltozó, akkor a gazda változó alkalmazásra kerül.

Hasonlóképpen, a játékkönyv futtatása közben a parancssorból beállított változók helyettesítik a gazda- és a csoportváltozókat is.

Ansible Facts Változókkal való munka

Ebben a részben megmutatom, hogyan kell dolgozni az Ansible Facts változókkal. Szóval, kezdjük el!

Sorolhatja fel a gazdagépek összes Ansible Facts változóját otthont ad leltárfájl az alábbiak szerint:

$képtelen minden-uképtelen-mbeállít

Amint láthatja, az Ansible Facts összes változója JSON formátumban van felsorolva. Ez egy nagyon hosszú lista.

Mivel a lista meglehetősen hosszú, megnyithatja azt egy személyhívó programmal, mint pl Kevésbé alábbiak szerint:

$képtelen minden-uképtelen-mbeállít| Kevésbé

Most szükség szerint görgetheti a kimenetet felfelé, lefelé, balra és jobbra.

A személyhívóból is kereshet változóneveket. Ehhez nyomja meg a gombot / gombot a billentyűzeten. Ezután írja be a keresési karakterláncot ( hostname az én esetemben) és nyomja meg .

Amint láthatja, az Ansible tények változó, amely megfelel a keresési karakterláncnak ansible_hostname . Megnyomhatja N hogy menjen a következő mérkőzésre és P hogy a lapozóból az előző mérkőzésre lépjen. Így találhatja meg az Ansible tények változót, amelyre szüksége van az Ansible projekthez.

Most nézzük meg, hogyan lehet elérni az Ansible tények változókat.

Hozzon létre egy új játékkönyvet print_variable1.yaml alábbiak szerint:

$nanojátékkönyvek/print_variable1.yaml

Írja be a következő sorokat a print_variable1.yaml fájl:

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Nyomtatáshostnameaz összes házigazda
hibakeresés:
üzenet:'{{ansible_hostname}}'

Itt egy feladatot adtam hozzá Az összes gép gazdagépnevének nyomtatása . Ez a feladat az Ansible -t használja hibakeresés modul az üzenet nyomtatására a játékkönyv futtatásakor.

üzenet az egyetlen szükséges paraméter hibakeresés modul. Az üzenet paraméter elfogad egy karakterláncot idézőjelben, ez az üzenet jelenik meg a konzolon.

Itt, {{változó_neve}} formátum egy változó eléréséhez használható. Ebben az esetben, {{ansible_hostname}} nyomtatására szolgál ansible_hostname a leltárfájl minden gazdagépének változója.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Hozzáférhet az Ansible tények változóhoz is ansible_facts [változó_neve] . Így a ansible_hostname változó lesz ansible_facts [gazdagépnév] .

Újraírhatjuk a print_variable1.yaml ilyen játékkönyvet is. Ugyanazt a kimenetet kapjuk.

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Nyomtatáshostnameaz összes házigazda
hibakeresés:
üzenet:'{{ansible_facts [' variable_name ']}}'

Futtassa a játékkönyvet print_variable1.yaml alábbiak szerint:

$ansible-playbook játékkönyvek/print_variable1.yaml

Amint láthatja, a leltárfájlban található összes gazdagép neve nyomtatásra kerül a konzolon.

Most nyomtassuk ki minden gazdagép alapértelmezett IPv4 -címét a gazdagépnévvel együtt. Mint látható, a gazdagép alapértelmezett IPv4 -címe a cím tulajdona a ansible_default_ipv4 tárgy.

Hozzon létre egy új játékkönyvet print_variable2.yaml alábbiak szerint:

$nanojátékkönyvek/print_variable2.yaml

Írja be a következő sorokat a print_variable2.yaml fájl:

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Nyomtatáshostnameaz összes házigazda
hibakeresés:
üzenet:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}

Ez a játékkönyv ugyanaz, mint korábban. Az egyetlen különbség az új változó {{ansible_default_ipv4.address}} ban,-ben üzenet opció a hibakeresés modul.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a print_variable2.yaml játékkönyv a következőképpen:

$ansible-playbook játékkönyvek/print_variable2.yaml

Amint láthatja, az alapértelmezett IPv4 -cím és a gépek gazdagépneve nyomtatásra kerül a konzolon.

Tehát így dolgozhat az Ansible Facts változókkal.

Felhasználó által definiált változók beállítása a parancssorból:

Ebben a szakaszban megmutatom, hogyan lehet beállítani a felhasználó által definiált változókat a parancssorból az Ansible playbooks futtatása közben.

Először hozzon létre egy új játékkönyvet print_variable3.yaml alábbiak szerint:

$nanojátékkönyvek/print_variable3.yaml

Írja be a következő sorokat a print_variable3.yaml fájl:

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Nyomtatásparancsvonalváltozó
hibakeresés:
üzenet:'Üdvözöljük {{username}}'

Itt használtam a hibakeresés modul az üzenet kinyomtatásához Üdvözöljük {{username}} . felhasználónév egy változó, amelyet a játékkönyv futtatásakor helyettesítünk.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a játékkönyvet print_variable3.yaml alábbiak szerint:

$ansible-playbook-És 'username = Bob'játékkönyvek/print_variable3.yaml

JEGYZET: Itt, -És opciót használjuk a felhasználónév változó az értékkel Bob a játékkönyvhöz print_variable3.yaml a parancssorból.

Mint látható, az üzenet Isten hozott Bob fel van nyomtatva a konzolra.

Most fedezzük fel, hogyan lehet több változót átadni a parancssorból.

Hozzon létre egy új játékkönyvet print_variable4.yaml alábbiak szerint:

$nanojátékkönyvek/print_variable4.yaml

Írja be a következő sorokat a print_variable4.yaml fájl:

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Felhasználó által definiált változók nyomtatása
hibakeresés:
üzenet:'username = {{username}} http_port = {{http_port}}'

A játékkönyvnek most nagyon ismerősnek kell lennie. Mindössze annyit tesz, hogy kinyomtatja a 2 változót felhasználónév és http_port a konzolon.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Most átadhatja a felhasználónév és http_port változó a játékkönyvbe két különböző használatával -És opció az alábbiak szerint:

$ ansible-playbook-És 'username = Bob' -És 'http_port = 8080'
játékkönyvek/print_variable4.yaml

Vagy egyszerűen elválaszthatja a változókat egy szóközzel, az alábbiak szerint:

$ ansible-playbook-És 'username = Bob http_port = 8080'
játékkönyvek/print_variable4.yaml

Mint látható, a felhasználónév és http_port a változók a konzolra vannak nyomtatva.

Munka a felhasználó által definiált csoportváltozókkal

Tegyük fel, hogy hozzá szeretne adni néhány változót a gazdagépek csoportjához. Ezt a műveletet nagyon könnyű elvégezni az Ansible -ben.

Először nyisd meg otthont ad leltárfájl az alábbiak szerint:

$nanootthont ad

Gépelje be a következő sorokat otthont ad leltárfájl:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
felhasználónév = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
felhasználónév = Bob
http_port =7878

Mint láthatod, létrehoztam egy új részt [debian10: vars] számára debian10 host csoportot, és hozzáadta a változókat ( felhasználónév és http_port ) számára debian10 házigazda csoport.

Hasonló módon létrehoztam egy új részt [centos8: vars] számára centos8 host csoportot, és hozzáadta a változókat ( felhasználónév és http_port ) számára centos8 házigazda csoport.

Ha elkészült, mentse a otthont ad leltárfájl megnyomásával + x követi ÉS és .

Futtassa a print_variable4.yaml játékkönyvek az alábbiak szerint:

$ansible-playbook játékkönyvek/print_variable4.yaml

Amint láthatja, a megfelelő változókat minden gazdagép továbbítja a gazdacsoportjuktól függően.

Munka a felhasználó által definiált gazdaváltozókkal

Ebben a szakaszban megmutatom, hogyan lehet változókat beállítani a leltárfájl egyes állomásaihoz.

Először nyissa meg a otthont ad leltárfájl az alábbiak szerint:

$nanootthont ad

Változók hozzáadásához egy adott gazdagéphez (pl. vm1.nodekite.com ), csak adjon hozzá egy szóközt/fület a gazdagép IP/DNS neve után, és írja be a változókat, amint az az alábbi képernyőképen látható.

Több változót is hozzáadhat. Egyszerűen válassza el az egyes változókat szóközzel.

Ha végzett, mentse a leltárfájlt a megnyomásával + x követi ÉS és .

Futtassa a print_variable4.yaml játékkönyvek az alábbiak szerint:

$ansible-playbook játékkönyvek/print_variable4.yaml

Mint látható, a változók csak a vm1.nodekite.com házigazda. A többi gép csoportváltozókat alkalmaz rájuk.

Leltárfájlok gyors létrehozása tartományokkal

Használhat tartományokat az Ansible készletfájlok gyors létrehozásához, ha a gazdagép IP -címei vagy DNS -nevei konzisztensek (azaz meghatározott formátumúak).

A korábbi példákban a házigazdákat használtam vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com és vm4.nodekite.com . Ahelyett, hogy 4 sort írtam volna, csak gépelhettem volna vm [1: 4] .nodekite.com a leltárfájlban.

A tartományokkal való kísérletezéshez nyissa meg a otthont ad leltárfájl az alábbiak szerint:

$nanootthont ad

Távolítsa el az összes gazdagépet és változót a leltárfájlokból.

Most cserélhetjük vm1.nodekite.com és vm2.nodekite.com val vel vm [1: 2] .nodekite.com számára debian10 fogadó csoportot az alábbiak szerint.

Ugyanígy cserélhetjük vm3.nodekite.com és vm4.nodekite.com val vel vm [3: 4] .nodekite.com számára centos8 házigazda csoport.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a ping_all_hosts.yaml alábbiak szerint:

$ansible-playbook játékkönyvek/ping_all_hosts.yaml

Mint látható, a házigazda tartományok kibővültek, amikor a játékkönyvet futtattam.

Változók tárolása különböző fájlokban

A csoportváltozók és a gazdaváltozók tárolása ugyanabban a leltárfájlban nagyon egyszerű. De lehet, hogy nagyobb rugalmasságot keres. Különösen akkor, ha tartományokat szeretne használni a készletfájlban, mivel a tartományok használata esetén már nem állíthatja be a gazdagép változóit. Nos, tárolhat csoportváltozókat és gazdagépváltozókat különböző fájlokban. Ebben a részben megmutatom, hogyan történik.

Alapértelmezés szerint az Ansible csoportváltozókat keres a group_vars / könyvtár és a gazda változók a host_vars / Könyvtár.

Tehát hozza létre a group_vars / és host_vars / könyvtár az alábbiak szerint:

$mkdir -pv {házigazda, csoport}_akinek

Csoportváltozók beállításához a debian10 host csoport, hozzon létre egy fájlt debian10 (ugyanaz, mint a csoport neve) a group_vars / könyvtár az alábbiak szerint:

$nanogroup_vars/debian10

Írja be a változókat az alábbiak szerint:

felhasználónév: Lili
http://www.4343

Ha végzett, mentse a fájlt a gombbal + x majd Y és .

Hasonló módon csoportváltozókat állíthat be a centos8 host csoport, hozzon létre egy fájlt centos8 (ugyanaz, mint a csoport neve) a group_vars / könyvtár az alábbiak szerint:

$nanogroup_vars/centos8

Írja be a változókat az alábbiak szerint:

felhasználónév: Bob
http://port.7878

Ha végzett, mentse a fájlt a gombbal + x majd Y és .

Futtassa a print_variable4.yaml játékkönyv a következőképpen:

$ansible-playbook játékkönyvek/print_variable4.yaml

Amint láthatja, a csoportváltozók helyesen vannak beállítva minden gazdacsoporthoz.

A gazdagép változóinak beállítása vm1.nodekite.com , hozzon létre egy fájlt vm1.nodekite.com (ugyanaz, mint a gazdagép neve vagy IP -címe) a host_vars / könyvtár az alábbiak szerint:

$nanovm1.nodekite.com

Írja be a gazdagép változóit az alábbiak szerint:

felhasználónév: Alex
http_port: 7788

Ha végzett, mentse a fájlt a gombbal + x majd Y és .

Futtassa a print_variable4.yaml játékkönyv a következőképpen:

$ ansible-playbook játékkönyvek/print_variable4.yaml
[

Amint láthatja, a gazdaváltozók helyesen vannak beállítva a gazdagéphez vm1.nodekite.com .

Loops in Ansible használata

Ebben a részben megmutatom, hogyan kell használni a hurkokat az Ansible -ben.

Először hozzon létre egy új játékkönyvet hurok1.yaml ban,-ben játékkönyvek/ könyvtár az alábbiak szerint:

$nanojátékkönyvek/hurok1.yaml

Írja be a következő sorokat a hurok1.yaml játékkönyv:

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Felhasználói lista nyomtatása
hibakeresés:
üzenet:'Felhasználó: {{item}}'
with_items:
- Alex
- Bob
- Lily

Itt van 1 feladatom, amely kinyomtatja a felhasználók listáját a ciklus használatával.

A feladat iterációs értékeinek beállításához használja a with_items modul. Ezután egyenként hozzáadja az értékeket.

with_items:
- Alex
- Bob
- Lily

Az aktuális iteráció értékét a tétel változó.

hibakeresés:
üzenet:'Felhasználó: {{item}}'

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a hurok1.yaml játékkönyv a következőképpen:

$ansible-playbook játékkönyvek/hurok1.yaml

Amint láthatja, ugyanaz a feladat futott minden egyes elemen minden gazdagépen. Tehát a hurok működik.

Munka feltételek Ansible

Ha bizonyos feltételek alapján szeretne feladatokat futtatni, akkor ez a rész az Ön számára készült.

Feltételek alapján feladatok futtatásához használhatja a amikor modul Ansible. Lássunk egy példát erre a modulra. Először hozzon létre egy új játékkönyvet feltétel1.yaml alábbiak szerint:

$nanojátékkönyvek/feltétel1.yaml

Írja be a következő sorokat a feltétel1.yaml játékkönyv:

- házigazdák: mind
felhasználó: ansible
feladatok:
- name: Ezt a feladatot csak Debianon futtassa
hibakeresés:
üzenet:'ez a feladat Debianon fut'
amikor: ansible_facts['terjesztés']=='Debian'

Itt,

ansible_facts [’distribution’] == ‘Debian’ annak ellenőrzésére szolgál, hogy a terjesztés van Debian . A feladat csak akkor fut, ha a disztribúció Debian.

Az ansible_facts [’elosztás’] az Ansible Facts változó elérésére szolgál ansible_distribution . A terjesztési verziót a ansible_distribution_major_version változó.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a feltétel1.yaml játékkönyv a következőképpen:

$ansible-playbook játékkönyvek/feltétel1.yaml

Amint láthatja, a feladat csak a Debian gazdagépeken futott. A feladat nem futott a CentOS gazdagépeken.

Egyidejűleg több feltételt is ellenőrizhet, és csak akkor futtathatja a feladatot, ha minden feltétel teljesül. Lássunk egy példát.

Hozzon létre egy új játékkönyvet feltétel2.yaml alábbiak szerint:

$nanojátékkönyvek/feltétel2.yaml

Írja be a következő sorokat a feltétel2.yaml fájl:

- házigazdák: mind
felhasználó: ansible
feladatok:
- name: Ezt a feladatot csak Debianon futtassa10
hibakeresés:
üzenet:'ez a feladat Debian 10 -en fut'
amikor: ansible_facts['terjesztés']=='Debian'
és ansible_facts['distribution_major_version']==„10”

Itt a feladat csak akkor fut, ha a disztribúció Debian ( ansible_facts [’distribution’] == ‘Debian’ ) és a verzió 10 ( ansible_facts [’distribution_major_version’] == ’10’ ). Ha mindkét feltétel igaz, akkor a feladat futni fog. Ellenkező esetben a feladat nem fog futni.

Használtam a és kulcsszó segítségével ellenőrizheti, hogy mindkét feltétel teljesül -e itt. Ha ellenőrizni szeretné, hogy valamelyik feltétel teljesül -e, akkor használhatja a vagy kulcsszó helyett.

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a játékkönyvet feltétel2.yaml alábbiak szerint:

$ansible-playbook játékkönyvek/feltétel2.yaml

Mint látható, a feladat csak a Debian 10 gazdagépeken futott.

Változtassunk a játékkönyvön feltétel2.yaml hogy a feladatot csak Debian 8 gépeken futtassa az alábbiak szerint.

Amint láthatja, az összes gazdagépet kihagytuk, mivel a leltárfájlban nincs Debian 8 gazdagép.

Az Ansible apt modul használata

Az találó Az Ansible modul egy adott szoftvercsomag Ubuntu/Debian gépekre történő telepítésére szolgál. Lássuk, hogyan kell használni ezt a modult.

Először hozzon létre egy új játékkönyvet apt1.yaml ban,-ben játékkönyvek/ könyvtár az alábbiak szerint:

$nanojátékkönyvek/apt1.yaml

Írja be a következő sorokat a apt1.yaml játékkönyv:

- házigazdák: debian10
felhasználó: ansible
váljon: Igaz
feladatok:
- név: telepítse az apache2 -t
találó:
név: apache2
állapot: legújabb

Az találó modul csak a név a telepíteni/frissíteni/eltávolítani kívánt csomagból, és a állapot a csomagból.

Itt megpróbálom telepíteni a apache2 csomag ( név: apache2 ) a Debian 10 gépemen. Miközben egy csomagot próbálok telepíteni és frissíteni is, ha elérhető új verzió, a állapot kellene legújabb .

állapot az alábbi lehetőségeket is elfogadja:

- hiányzó - A csomag eltávolításra kerül, ha már telepítve van.
- legújabb - A csomag frissítésre kerül, ha rendelkezésre áll frissítés. Ha a csomag még nincs telepítve, akkor telepítve lesz.
- ajándék - A csomag telepítésre kerül, ha még nincs telepítve. De a csomag nem frissül, ha rendelkezésre áll frissítés.

Figyelje meg, hogy hozzáadtam váljon: Igaz a játékkönyvben. Ez megadja a képtelen felhasználói sudo jogosultságok a fájlrendszer szerkezetének módosításához (pl. csomagok telepítése/frissítése/eltávolítása). Nélkül váljon: Igaz , az találó modul nem tudja telepíteni a apache2 csomag.

Ha elkészült, mentse el a játékkönyvet a megnyomásával + x követi ÉS és .

Futtassa a apt1.yaml játékkönyv a következőképpen:

$ansible-playbook játékkönyvek/apt1.yaml

Mint látható, a játékkönyv sikeresen futott a Debian 10 gazdagépeken.

Mint látható, a apache2 csomag telepítve van a Debian 10 gépekre.

Munka az Ansible dnf/yum modullal

Az dnf és yum Az Ansible modul egy adott szoftvercsomag telepítésére szolgál a CentOS/RHEL gazdagépekre. Ezt a modult ugyanúgy használhatja, mint korábban találó modul a cikk korábbi szakaszában.

Mind a dnf és yum A modulok ugyanazokat a paramétereket fogadják el. Használhatja a dnf modul a CentOS/RHEL 8 gazdagépeken, és yum CentOS/RHEL 7 vagy régebbi rendszeren.

Nézzünk most egy példát erre a modulra.

Először hozzon létre egy új játékkönyvet dnf1.yaml ban,-ben játékkönyvek/ könyvtár az alábbiak szerint:

$nanojátékkönyvek/dnf1.yaml

Írja be a következő sorokat a dnf1.yaml játékkönyv:

- házigazdák: centos8
felhasználó: ansible
váljon: Igaz
feladatok:
- név: httpd csomag telepítése
dnf:
név: httpd
állapot: legújabb

Az dnf és yum modul csak a név a telepíteni/frissíteni/eltávolítani kívánt csomagból, és a állapot a csomagból.

Itt megpróbálom telepíteni a httpd csomag ( név: httpd ) a CentOS 8 házigazdáimon. Mivel egy csomagot próbálok telepíteni, és azt is szeretném frissíteni, ha új verzió áll rendelkezésre, a állapot kellene legújabb .

állapot elfogadja a következő lehetőségeket:

- hiányzó - A csomag eltávolításra kerül, ha már telepítve van.
- legújabb - A csomag frissítésre kerül, ha rendelkezésre áll frissítés. Ha a csomag még nincs telepítve, akkor telepítve lesz.
- ajándék - A csomag telepítésre kerül, ha még nincs telepítve. De a csomag nem frissül, ha rendelkezésre áll frissítés.

Figyelje meg, hogy hozzáadtam váljon: Igaz a játékkönyvben. Ez adja a képtelen felhasználói sudo jogosultságok a fájlrendszer szerkezetének módosításához (pl. csomagok telepítése/frissítése/eltávolítása). Nélkül váljon: Igaz , az találó modul nem tudja telepíteni a httpd csomag.

Ha elkészült, mentse el a játékkönyvet a megnyomásával + x követi ÉS és .

Futtassa a dnf1.yaml játékkönyv a következőképpen:

$ansible-playbook játékkönyvek/dnf1.yaml

Mint látható, a játékkönyv sikeresen futott a CentOS 8 gazdagépen.

Munka az Ansible szervizmodullal

Az szolgáltatás Az Ansible modulja segítségével elindíthatja, leállíthatja, újraindíthatja, engedélyezheti (szolgáltatás hozzáadása az indításhoz), és letilthatja (eltávolíthatja a szolgáltatást az indításból) a gazdagépeken.

A korábbi szakaszokban megmutattam, hogyan kell telepíteni az Apache HTTP szervercsomagot az Ansible segítségével találó , dnf és yum modulok. Most győződjünk meg arról, hogy az Apache HTTP szerver szolgáltatás fut, és hozzáadásra került a rendszer indításához.

Együtt fogok dolgozni a Debian 10 házigazdáimmal. Ha kívánja, dolgozhat azonban CentOS 8 gazdagépekkel. Egyszerűen állítsa be a játékkönyvet ennek megfelelően.

Először hozzon létre egy új Ansible játékkönyvet apt2.yaml alábbiak szerint:

$nanojátékkönyvek/apt2.yaml

Írja be a következő sorokat a apt2.yaml játékkönyv:

- házigazdák: debian10
felhasználó: ansible
váljon: Igaz
feladatok:
- név: telepítse az apache2 -t
találó:
név: apache2
állapot: legújabb
- név: Indítsa el az apache2 szolgáltatást
szolgáltatás:
név: apache2
állapot: elindult
engedélyezve: Igaz

Itt új feladatot adtam hozzá, Indítsa el az apache2 szolgáltatást .

név: apache2 - az a szolgáltatás, amelyen dolgozom apache2 .

állapot: elindult - a szolgáltatásnak futnia kell.

engedélyezve: Igaz - a szolgáltatást hozzá kell adni a rendszerindításhoz.

Az állapot paraméter elfogad más értékeket.

- újratöltve - A szolgáltatásnak újra kell töltenie a konfigurációs fájlokat.
- újraindítva - A szolgáltatást újra kell indítani.
- elindult - A szolgáltatásnak futnia kell. Ha a szolgáltatás nem fut, indítsa el a szolgáltatást.
- megállt - A szolgáltatást le kell állítani. Ha a szolgáltatás fut, állítsa le a szolgáltatást.

Futtassa a játékkönyvet apt2.yaml alábbiak szerint:

$ansible-playbook játékkönyvek/apt2.yaml

Mint látható, a játékkönyv sikeresen futott.

Mint látható, a apache2 szolgáltatás fut a Debian 10 gépemen.

Az Ansible copy modul használata

Az Ansible másolat modul elsősorban fájlok másolására szolgál a számítógépről a távoli gépekre.

Az előző részben telepítettem az Apache 2 webszervert a Debian 10 gépekre. Most másoljunk egy index.html fájlt a Debian 10 állomások webgyökerébe.

Először hozzon létre egy új könyvtárat fájlok/ alábbiak szerint:

$mkdir -vfájlokat

Hozzon létre egy új fájlt index.html ban,-ben fájlok/ könyvtár az alábbiak szerint:

$nanofájlokat/index.html

Írja be a következő sorokat a index.html fájl:


< html >
< fej >
< cím >Az Ansible webszervere</ cím >
</ fej >
< test >
< h1 >Üdvözli a LinuxHint!</ h1 >
< o >Ezt a webszervert az Ansible segítségével telepítették.</ o >
</ test >
</ html >

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Hozzon létre egy új Ansible játékkönyvet apt3.yaml alábbiak szerint:

$nanojátékkönyvek/apt3.yaml

Írja be a következő sorokat a apt3.yaml fájl:

- házigazdák: debian10
felhasználó: ansible
váljon: Igaz
feladatok:
- név: telepítse az apache2 -t
találó:
név: apache2
állapot: legújabb
- név: Az index.html másolása a szerverre
másolat:
src: ../fájlokat/index.html
dest:/ahol/www/html/index.html
mód: 0644
tulajdonos: www-data
csoport: www-adatok
- név: Indítsa el az apache2 szolgáltatást
szolgáltatás:
név: apache2
állapot: elindult
engedélyezve: Igaz

Itt a feladat Másolja az index.html fájlt a szerverre másolja a index.html tól fájlok/ könyvtárat a / var / www / html / a Debian 10 gazdagépek könyvtárát.

src: ../files/index.html - A forrásfájl elérési útja.
dest: /var/www/html/index.html - A cél fájl elérési útja.
mód: 0644 - A fájlfelhasználó (6 - olvasás és írás), csoport (4 - olvasás) és mások (4 - olvasás) jogosultságai.
tulajdonos: www-data - Állítsa be a fájl tulajdonosát www-adatok .
csoport: www-adatok - Állítsa a fájl csoportját erre www-adatok .

Ha végzett, mentse a fájlt a gombbal + x követi ÉS és .

Futtassa a apt3.yaml játékkönyv a következőképpen:

$ansible-playbook játékkönyvek/apt3.yaml

Mint látható, a feladat Másolja az index.html fájlt a szerverre sikeres.

Mint látható, a index.html fájlt a Debian 10 gazdagépekre másolta.

Mint látható, a Debian 10 webszerver a index.html oldal, amelyet most másoltam a Debian 10 gazdagépekre.

Tehát ezek az Ansible alapjai. Ha többet szeretne megtudni az Ansible -ről, olvassa el az Ansible hivatalos dokumentációját. Köszönjük, hogy elolvasta ezt a cikket.