Bábok bemutatója kezdőknek: Mi az a báb és hogyan kell használni?
Mielőtt megtanulnánk a Puppet-et, értsük meg:
Mi az a konfigurációkezelés?
A konfigurációkezelés a szoftverek és számítógépes rendszerek (például szerverek, tárolók, hálózatok) ismert, kívánt és konzisztens állapotban tartásának folyamata. Lehetővé teszi a hozzáférést a rendszerállapot pontos előzményeihez projektmenedzsment és audit célból.
A rendszeradminisztrátorok többnyire ismétlődő feladatokat hajtanak végre, mint például a szerverek telepítése, a szerverek konfigurálása stb. Ezek a szakemberek szkriptek írásával automatizálhatják ezt a feladatot.
Ez azonban nehéz munka, amikor hatalmas infrastruktúrán dolgoznak. Az ilyen problémák megoldására bevezették a Konfigurációkezelő eszközt, például a Puppet-et.
Mi az a Puppet?
Báb egy rendszerfelügyeleti eszköz a konfigurációkezelési folyamat központosítására és automatizálására. A Puppet szoftvertelepítő eszközként is használatos. Ez egy nyílt forráskódú konfigurációkezelő szoftver, amelyet széles körben használnak különféle alkalmazások és szolgáltatások szerverkonfigurálására, kezelésére, telepítésére és összehangolására a szervezet teljes infrastruktúrájában.
A Puppet kifejezetten a Linux és a konfigurációk kezelésére szolgál Windows rendszerek. Ruby nyelven íródott, és az egyediségét használja Dfő- Specific Lnyelv (DSL) a rendszerkonfiguráció leírására.
Mik a Puppet verziók?
A Puppet két változatban kapható:
- Nyílt forráskódú báb: Ez a Puppet konfigurációkezelő eszköz alapváltozata, amely Open Source Puppet néven is ismert. Közvetlenül a Puppet webhelyéről érhető el, és az Apache 2.0 rendszer licence alatt áll.
- Bábvállalat: Kereskedelmi verzió, amely olyan funkciókat kínál, mint a megfelelőségi jelentés, irányítás, szerepalapú hozzáférés-vezérlés, grafikus felhasználói felület, API és parancssori eszközök a csomópontok hatékony kezeléséhez.
Mire képes a báb?
Például van egy infrastruktúrája körülbelül 100 szerverrel. Rendszergazdaként az Ön feladata annak biztosítása, hogy ezek a kiszolgálók mindig naprakészek legyenek, és teljes funkcionalitással működjenek.
Ehhez használhatja a Puppet-et, amely lehetővé teszi egy egyszerű kód írását, amely automatikusan telepíthető ezekre a szerverekre. Ez csökkenti az emberi erőfeszítést, és gyorsítja és hatékonnyá teszi a fejlesztési folyamatot.
A báb a következő funkciókat látja el:
- A Puppet lehetővé teszi, hogy minden gazdagéphez külön konfigurációt határozzon meg.
- Az eszköz lehetővé teszi a szerverek folyamatos figyelését, hogy megbizonyosodjon arról, hogy a szükséges konfiguráció létezik-e vagy sem, és az nem módosul. Ha a konfiguráció megváltozik, a Puppet eszköz visszaáll az előre meghatározott konfigurációra a gazdagépen.
- Ezenkívül az összes konfigurált rendszer vezérlését is biztosítja, így a központosított változtatás automatikusan megtörténik.
- Telepítési eszközként is használatos, mivel automatikusan telepíti a szoftvert a rendszerre. Megvalósítja a az infrastruktúra kódként, mert a házirendek és konfigurációk kódként vannak megírva.
Puppet DSL és programozási paradigmák
Mielőtt megtanulnánk a Puppet DSL-t, ismerjük meg a programozási paradigmákat:
A programozási paradigma egy olyan stílus, amelyet a számítógépes programozásban használ.
A paradigmák négy típusa:
- Parancsoló.
- Kijelentő.
- Funkcionális (amely a deklaratív paradigma részhalmazának tekinthető)
- Objektum orientált.
Az imperatívuszra és a deklaratívra összpontosítunk.
Imperatív paradigmák
Ez a programozási paradigma kifejezi egy számítás logikáját (mit tegyünk) és leírja annak vezérlési folyamatát (Hogyan kell csinálni)
Példa:
Tegyük fel, hogy az irodába megy, lefoglal egy taxit, és lépésről lépésre útmutatást ad a sofőrnek, amíg el nem éri az irodát. Meghatározni, hogy mit és hogyan kell csinálni, kötelező stílus.
Deklaratív paradigmák
Ez a programozási paradigma egy számítás logikáját fejezi ki (mit tegyünk) anélkül, hogy leírná a vezérlési folyamatát (Hogyan kell csinálni)
Példa:
Tegyük fel, hogy az irodába megy, lefoglalja az Uber taxit, és megadja a végső célállomást (Iroda). Deklaratív stílus annak meghatározása, hogy mit ne tegyünk, hogyan kell csinálni.
Paradigma | Mi a teendő, | Hogyan kell csinálni |
---|---|---|
parancsoló | Igen | Igen |
Nyilatkozatos | Igen | Nem |
A Puppet deklaratív programozási paradigmát használ
A Puppet deklaratív programozási megközelítést alkalmaz.
Példa: Hozzon létre egy felhasználót a rendszeren:
Megtehető az Imperative programozási mintával egy shell script segítségével: Itt adjuk meg, hogyan hozzuk létre a felhasználót, és milyen parancsokat használjunk a operációs rendszer.
Ez azonban megtehető Deklaratív programozási mintával néhány sor bábkóddal, Puppet domain-specifikus nyelvvel (DSL), és továbbra is ugyanazt az eredményt érheti el.
Konfigurációkezelő eszközök telepítési modelljei
Két telepítési modell létezik konfigurációkezelő eszközök :
- Push-alapú telepítési modell: egy fő csomópont kezdeményezi.
- Lehívás alapú telepítési modell: ügynökök kezdeményezték.
Push-alapú telepítési modell
Ebben a telepítési modellben a főkiszolgáló a konfigurációkat és a szoftvert továbbítja az egyes ügynökökhöz. A biztonságos kapcsolat ellenőrzése után a mester távolról futtatja a parancsokat az ügynökökön. Például, Ansible és Salt Stack.
Húzásalapú telepítési modell.
Ebben a telepítési modellben az egyes kiszolgálók kapcsolatba lépnek egy főkiszolgálóval, ellenőrzik és létrehozzák a biztonságos kapcsolatot, letöltik konfigurációikat és szoftvereiket, majd ennek megfelelően konfigurálják magukat – például a Puppet és a Chef.
Hogyan működik a Puppet?
A Puppet egy Pull telepítési modellen alapul, ahol az ügynökcsomópontok minden alkalommal rendszeresen bejelentkeznek 1800 másodpercig a főcsomóponttal, hogy megnézze, kell-e valamit frissíteni az ügynökben. Ha valamit frissíteni kell, az ügynök lekéri a szükséges bábkódokat a mestertől, és végrehajtja a szükséges műveleteket.
Magyarázzuk meg egy példával:
Példa: Mester – Ügynök beállítása:
A Mester
Linux alapú gép, melyre Puppet master szoftver van telepítve. Felelős a konfigurációk karbantartásáért bábkódok formájában. A fő csomópont csak Linux lehet.
Az ügynökök
A báb által kezelt célgépek a rájuk telepített bábügynök szoftverrel.
Az ügynök konfigurálható bármely támogatott operációs rendszeren, például Linuxon vagy Windows or Solaris vagy Mac OS.
A master és az ügynök közötti kommunikáció biztonságos tanúsítványokon keresztül jön létre.
Kommunikáció a Mester és az Ügynök között
Step 1) Miután létrejött a kapcsolat az ügynök és a mester között, a Puppet ügynök elküldi az állapotára vonatkozó adatokat a Puppet master szervernek. Ezeket tényeknek nevezzük: Ezek az információk magukban foglalják a gazdagép nevét, a kernel adatait, az IP-címet, a fájlnév részleteit stb.…
Step 2) A Puppet Master ezeket az adatokat használja, és összeállít egy listát az ügynökre alkalmazandó konfigurációval. Az ügynökön végrehajtandó konfigurációk ezen listája a katalógus. Ez módosítható, például csomagtelepítés, frissítés vagy eltávolítás, fájlrendszer létrehozása, felhasználó létrehozása vagy törlése, szerver újraindítása, IP-konfiguráció módosítása stb.
Step 3) Az ügynök ezt a konfigurációs listát használja a szükséges konfigurációs módosítások alkalmazásához a csomóponton.
Abban az esetben, ha a konfigurációban nincsenek eltolódások, az ügynök nem hajt végre konfigurációs módosításokat, és a csomópontot ugyanazzal a konfigurációval hagyja futni.
Step 4) Miután ez megtörtént, a csomópont jelentést küld a bábmesternek, jelezve, hogy a konfiguráció alkalmazásra került és befejeződött.
Bábblokkok
A Puppet rugalmasságot biztosít a jelentések integrálásához harmadik féltől származó eszközökkel a Puppet API-k segítségével.
Négyféle báb építőelem létezik
- Tudástár
- Osztályok
- Nyilvánvaló
- Modulok
Puppet Resources
A Puppet Resources a Puppet építőkövei.
Az erőforrások a beépített funkciók amelyek a hátsó végén futnak, hogy elvégezzék a szükséges műveleteket a bábban.
Bábos osztályok
A különböző erőforrások kombinációja egyetlen osztályba csoportosítható.
Puppet Manifest
A Manifest egy bábos DSL-fájlokat tartalmazó könyvtár. Ezek a fájlok .pp kiterjesztéssel rendelkeznek. A .pp kiterjesztés a puppet program rövidítése. A bábkód a bábosztályok definícióiból vagy deklarációiból áll.
Báb modulok
A modulok olyan fájlok és könyvtárak gyűjteményét jelentik, mint például a manifestek, osztálydefiníciók. Ezek a Puppet újrafelhasználható és megosztható egységei.
Például a MySQL modul telepítéséhez és konfigurálásához MySQL vagy a Jenkins modul a Jenkins kezelésére stb.
A báb erőforrások típusai
Általában egy rendszer fájlokból, felhasználókból, szolgáltatásokból, folyamatokból, csomagokból stb. áll. A Puppetben ezeket erőforrásoknak nevezzük. Az erőforrások az alapvető építőkövei
Báb. A bábügynökök minden műveletét bábos erőforrások segítségével hajtják végre.
A báberőforrások olyan kész eszközök, amelyek különféle feladatok és műveletek végrehajtására szolgálnak bármely támogatott platformon. Használhatunk egyetlen báberőforrást egy adott feladat végrehajtására, vagy több báberőforrást is használhatunk együtt néhány összetett alkalmazáskonfiguráció telepítéséhez.
Az erőforrások különböző típusúak lehetnek. Bábhasználat erőforrás és a erőforrástípusok a rendszer konfigurációjának leírásához.
Háromféle erőforrástípus létezik:
- Puppet mag vagy beépített erőforrástípusok.
- A bábban meghatározott erőforrástípusok.
- Báb egyéni erőforrástípusok.
Puppet mag vagy beépített erőforrástípusok
Az alap- vagy beépített erőforrástípusok a bábszoftverrel együtt szállított, előre elkészített báb erőforrástípusok. Az összes alapvető vagy beépített Puppet erőforrástípust a Puppet csapat írja és karbantartja.
A bábban meghatározott erőforrástípusok
A meghatározott erőforrástípusok könnyű erőforrástípusok, amelyeket Puppet deklaratív nyelven írnak a meglévő erőforrástípusok kombinációjával.
Báb egyéni erőforrástípusok
Az egyéni erőforrástípusok teljesen testreszabott, Ruby nyelven írt erőforrástípusok.
Fedezzük fel a bábos erőforrástípusokat…
A terminálba írja be a következő parancsot a Puppet releváns alparancsok listájának megjelenítéséhez:
Puppet --help
A mi esetünkben a "" alparancs érdekel minketforrás” segítségével fogjuk megtalálni a beépített báb erőforrástípusokról szóló információkat.
A terminálba írja be a következő parancsok bármelyikét a lista megjelenítéséhez cselekvések a báb-alparancshoz kapcsolódikforrás"
Puppet help resource Puppet resource --help
Ebben az esetben nálunk a forrás alparancsként és -típusok mint cselekvés.
A Puppet 49 beépített alapvető erőforrástípussal rendelkezik.
A terminálba írja be a következő parancsot az elérhető beépített báb erőforrástípusok listájának megjelenítéséhez:
puppet resource –types
Mindegyik típus egy listát támogat attribútumok. Ezek az attribútumok részletes leírást adnak, amelyet a Puppet az erőforrás kezelésére használ.
A báb-erőforrástípushoz tartozó összes attribútum kiderítéséhez használja a következő parancsot:
puppet describe <resource type name>
A paraméterek felsorolják az adott erőforrástípushoz tartozó összes elérhető attribútumot.
báb leírás csomag
Egy új ember számára nehéz megérteni és összekapcsolni sok kezeletlen bábkódfájlt. Itt van szükségünk néhány csoportosításra a műveletek összekapcsolásához. A cél egyetlen probléma megoldása, például az ssh konfigurálásához szükséges összes művelet egy szerveren vagy ntp szolgáltatáson vagy egy teljes webszerveren vagy adatbázis-kiszolgálón a semmiből.
Mik azok a bábórák?
A bábosztályok a bábos erőforrások gyűjteménye, amelyek egyetlen egységként vannak összecsomagolva.
A Puppet osztályokat vezetett be, hogy a szerkezet újrahasznosítható és rendszerezhető legyen.
Először is meg kell határoznunk egy osztályt az osztálydefiníciós szintaxis használatával; az osztályoknak egyedinek kell lenniük, és csak egyszer deklarálhatók ugyanazzal a névvel:
class <class-name> { <Resource declarations> }
Példa:
class ntpconfig { file { "/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } }
Eddig csak az osztályt határoztuk meg, de sehol nem használtuk. Ez azt jelenti, hogy ez a kód, amit írtunk, soha nem kerül végrehajtásra, hacsak nem deklaráljuk ezt az osztályt máshol.
Osztálynyilatkozat
Ha egy meghatározott osztályt szeretne használni a kódban, használja a tartalmaz kulcsszó.
class ntpconfig { file { "/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } } include ntpconfig
Értsük meg ezt egy valós eset forgatókönyvével.
NTP demo telepítés
Először győződjön meg arról, hogy az NTP-csomag még nincs jelen a kiszolgálón, a következő parancs nem ad vissza semmit, ha a telnet nincs jelen a szerveren:
rpm -qa | grep -i ntp
Amint látjuk, az NTP csomag már jelen van a szerveren. Távolítsuk el a meglévő NTP-csomagot:
yum remove ntp
A csomag eltávolítása után győződjön meg arról, hogy az ntp.conf fájl nem létezik:
ls -lrt /etc/ntp.conf
A következő parancs futtatásával ellenőrizze, hogy az ntp szolgáltatás nem létezik:
systemctl status ntp
Hozzon létre egy új .pp fájlt a kód mentéséhez. A parancssorból:
vi demontp.pp
Váltson beszúrási módba a billentyűzet i gombjának megnyomásával.
Új fájl létrehozásához írja be a következő kódot:
# Class Definition class ntpconfig { # Installing NTP Package package {"ntp": ensure=> "present", } # Configuring NTP configuration file file {"/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } # Starting NTP services service {"ntpd": ensure=> "running", } }
A szerkesztés befejezése után: nyomja meg az esc gombot
A fájl mentéséhez nyomja meg a :wq!
A következő lépés az ellenőrizze hogy a kódban vannak-e szintaktikai hibák. Hajtsa végre a következő parancsot:
puppet parser validate demontp.pp
Győződjön meg arról, hogy a gyökér hogy hiba nélkül tudja befejezni a tesztet a parancs végrehajtásával:
su root
Tesztelés a kód létrehozási folyamatának következő lépése. A füstteszt végrehajtásához hajtsa végre a következő parancsot:
Puppet applies demontp.pp --noop
Az utolsó lépés az futás a bábot valós módban, és ellenőrizze a kimenetet.
puppet apply demontp.pp
Puppet nem adott elő semmit, mert a demóóra csak volt meghatározott de nem bevallott.
Tehát amíg nem deklarálja a bábosztályt, a kód nem kerül alkalmazásra.
Nézzük kijelent a demó osztály ugyanazon kódon belül használja tartalmazza az osztály nevét a kód végén:
# Class Definition class ntpconfig { # Installing NTP Package package {"ntp": ensure=> "present", } # Configuring NTP configuration file file {"/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } # Starting NTP services service {"ntpd": ensure=> "running", } } # Class Declaration include ntpconfig
Ismét ellenőrizze hogy a kódban vannak-e szintaktikai hibák. Hajtsa végre a következő parancsot:
puppet parser validate demontp.pp
Győződjön meg arról, hogy a gyökér hogy hiba nélkül tudja befejezni a tesztet a parancs végrehajtásával:
su root
Tesztelés a kód létrehozási folyamatának következő lépése. A füstteszt végrehajtásához hajtsa végre a következő parancsot:
Puppet apply demontp.pp --noop
Az utolsó lépés az futás a bábot valós módban, és ellenőrizze a kimenetet.
puppet apply demontp.pp
Ezúttal a kód alkalmazásra kerül, mert az osztályt meghatározták, majd deklarálták.
Győződjön meg arról, hogy az ntp.conf már létezik:
ls -lrt /etc/ntp.conf
Ellenőrizze, hogy az ntp szolgáltatás elindult-e a következő parancs futtatásával:
systemctl status ntpd