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.

A rendszergazda manuálisan dolgozik a szervereken
A rendszergazda manuálisan dolgozik a szervereken

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 Puppet automatizálja a szerverkezelést
A Puppet automatizálja a szerverkezelést

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.

Deklaratív paradigmák

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.

Deklaratív paradigmák

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.

Puppet Master Agent Kommunikáció
Puppet Master Agent Kommunikáció

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.…

Kommunikáció a Mester és az Ügynök között
Az ügynök tényeket küld a Mesternek

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.

Kommunikáció a Mester és az Ügynök között
A Mester katalógust küld az ügynöknek

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.

Kommunikáció a Mester és az Ügynök között
Az ügynök alkalmazza a konfigurációt

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

  1. Tudástár
  2. Osztályok
  3. Nyilvánvaló
  4. 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.

Báb modulok
Báb modulok

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:

  1. Puppet mag vagy beépített erőforrástípusok.
  2. A bábban meghatározott erőforrástípusok.
  3. 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

Báb egyéni erőforrástípusok

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		

Báb egyéni erőforrástípusok

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

Báb egyéni erőforrástípusok

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

Báb egyéni erőforrástípusok

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

Demo Telepítse az NTP-t

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

Demo Telepítse az NTP-t

A következő parancs futtatásával ellenőrizze, hogy az ntp szolgáltatás nem létezik:

systemctl status ntp

Demo Telepítse az NTP-t

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.

Demo Telepítse az NTP-t

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

Demo Telepítse az NTP-t