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önyvekNavigáljon a ~/project/ könyvtár az alábbiak szerint:
$CD~/projektAlapkészlet fájl:
Hozzon létre egy Ansible készletfájlt otthont ad a projektkönyvtárban a következő paranccsal:
$nanootthont adAz 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.167192.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.com192.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 adMost 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.comvm2.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 pingMint 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: mindfelhaszná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.yamlAmint 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.yamlHa 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.yamlMint 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: debian10felhaszná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.yamlMint 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: centos8felhaszná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.yamlMint 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ítAmint 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: mindfelhaszná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: mindfelhaszná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.yamlAmint 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: mindfelhaszná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.yamlAmint 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: mindfelhaszná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.yamlJEGYZET: 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: mindfelhaszná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 adGé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.yamlAmint 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 adVá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.yamlMint 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 adTá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.yamlMint 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}_akinekCsoportvá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: Lilihttp://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: Bobhttp://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.yamlAmint 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: Alexhttp_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: mindfelhaszná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.yamlAmint 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: mindfelhaszná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.yamlAmint 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: mindfelhaszná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.yamlMint 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: debian10felhaszná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.yamlMint 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: centos8felhaszná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.yamlMint 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: debian10felhaszná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.yamlMint 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ájlokatHozzon 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: debian10felhaszná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.yamlMint 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.