Puppet, Salt, Chef és Ansible: Összehasonlítás

Olvasási idő: 8 perc

Melyik a megfelelő az Ön számára?

Tartalomjegyzék

I. Báb II. SaltStack III. Chef IV. Ansible IV. Következtetés

Bevezetés

Egyetlen szerver konfigurálása a szükséges szoftverekkel viszonylag egyszerű feladat. Ha azonban számos szerverre kell ugyanazt vagy hasonló szoftvert és konfigurációt telepíteni, a folyamat elvégzése számos munkaórát vesz igénybe, ami kimeríti az amúgy is megfeszített erőforrásokat. Automatizálás nélkül ez a feladat szinte megoldhatatlanná válhat. Ezt a feladatot szem előtt tartva új konfigurációkezelő eszközöket fejlesztettek ki az új szerverek előre elkészített konfigurációkkal és frissítésekkel történő telepítésének szükségességére, amelyek lehetővé tették a gördülékenyebb és jobban kezelhető automatizálási folyamatot. Ahhoz, hogy ezeket a szervereket szinkronban tartsa és a frissítéseket egy adatközpontban vagy felhőkörnyezetben lévő hosztok széles skáláján kezelje, az olyan automatizálási eszközök, mint a Puppet, a SaltStack, a Chef és az Ansible megfelelnek ennek az igénynek.

A megfelelő menedzsmenteszközök kiválasztása az infrastruktúrához való használathoz kritikus döntés. Ezért áttekintjük a rendelkezésre álló lehetőségeket. Ezek az eszközök kínálják a legtöbb előnyt a DevOps és a rendszergazdák számára egyaránt. Remélhetőleg ez az információ a helyes irányba mutat. Bár igaz, hogy a fent említett konfigurációs eszközök mindegyike nagy valószínűséggel elvégzi ezeket a feladatokat, mindegyikük más-más módszertant kínál, és némileg eltérő módon játszik szerepet a cél elérésében. Ennek a cikknek az a célja, hogy bemutasson néhány alapvető különbséget, amelyet az egyes szoftverkezelő platformok nyújtanak. Ez lehetővé teszi, hogy megalapozottabb döntést hozzon, mivel megpróbáljuk érinteni az egyes szoftvercímeket és azok előnyeit, majd a végén áttekintést nyújtunk

.

Puppet

A Puppet az egyik legrégebbi és legmegbízhatóbb menedzsmenteszköz a listánkon. Emiatt szélesebb támogatási bázist kínál a Puppet közösségen belül és a Puppet csapat részéről is. A Puppet a szoftverének nyílt forráskódú kiadását is biztosítja, amely a legkülönbözőbb operációs rendszerekre telepíthető. A szoftver vállalati verziója azonban képes nagyobb rendszereket, például az IBM AIX vagy az F5 Big-IP hardverét is felölelni. Megjegyzendő, hogy a Puppet mesterszerver csak Unix/Linux operációs rendszerekre telepíthető.

A Puppet telepítése általában egy mesterszerverből és több kliensgépből (amelyeket ügynököknek nevezünk) áll. A Puppet az egyik olyan eszköz ebben a listában, amely saját, egyedi nyelvet használ, amely a Ruby-ra épül. A Puppet DSL (vagy Domain Specific Language) a rendszer kívánt állapotának leírására szolgál egy fájlban, amelyet manifeszt fájlnak nevezünk. A manifeszt fájlok alapvetően konfigurációk vagy feladatok összessége, amelyek meghatározzák, hogy a hálózati és operációs rendszer erőforrásai (például szolgáltatások, csomagok és fájlok) hogyan legyenek konfigurálva. A Puppet ezután a manifeszt fájlokat katalógusokká állítja össze, és minden katalógust a kijelölt csomópontra tol, hogy a csomópontot az egész infrastruktúrában átkonfigurálja a kívánt állapotra.

A Puppet emellett egy intuitív és egyszerű webes felhasználói felületet kínál, amely a feladatok jelentősebb részének elvégzésére szolgál, beleértve a csomópontok valós idejű kezelését is. Továbbá, mivel a Puppet többmesteres architektúra formájában van kialakítva, ha az éppen aktív mester leáll, egy másik mester helyettesíti az előző mestert, hogy elkerülje a csökkent rendelkezésre állást.

A Puppet úgy frissíti a csomópontok konfigurációját, hogy a kliensek ellenőrzik a mester frissített manifesztjeit, majd az új konfigurációkat lehívják a mesterkiszolgálóról. E tulajdonsága miatt a Puppet inkább rendszergazda-központú, mint sok más itt említett eszköz. A Puppet hátránya, hogy a csomópontok számára nem áll rendelkezésre azonnali távoli végrehajtás. Emellett a Puppetnek meredekebb a tanulási görbéje a Puppet DSL és a Ruby programozási nyelvek szükséges ismerete miatt.

Top

SaltStack

A SaltStack (más néven Salt) a lista egyik újabb eszköze. A szoftverkonfiguráció-kezelés területén azonban még mindig nagyon fontos. A Salt viszonylag aktív közösséggel és hatékony támogatással rendelkezik. A Saltot úgy tervezték, hogy lehetővé tegye az alacsony késleltetésű, nagy sebességű kommunikációt és adatátvitelt a csomópontok között a távoli végrehajtáshoz. A Saltot úgy tervezték, hogy működjön a Unix/Linux és a Windows operációs rendszerekkel, de a Salt Mester kiszolgáló csak Unix/Linux operációs rendszereken képes működni.

A SaltStack egy Salt Mesterből áll, amely a központi Salt kiszolgáló, valamint a Salt Minionoknak nevezett kliensekből, amelyek az egyes csomóponti gépeken ügynökként futnak. A Salt nyelvének elsajátítása viszonylag egyszerű, mivel az ember által olvasható konfigurációk Python és YAML fájlokat használnak, ami az egyik legtermészetesebb és legegyszerűbb adatszerkezet. Míg a Puppet úgy működik, hogy a csomópontok kérik a frissítéseket, addig a Salt ezzel ellentétesen működik. A Salt Master tolja az összes konfigurációt az összes kliens gépre. Emellett a Salt aszinkron fájlkiszolgálóként szolgál, ami növeli a Salt Minionokat kiszolgáló fájlátvitel sebességét. A telepítési sebesség a Salt filozófiájának egyik fő célja.

A Salt többmesteres konfigurációban is futhat. Ha egy Salt mesterszerver leáll, az ügynökök egy másik, a konfigurációkban felsorolt mesterszerverhez csatlakoznak. Ez a funkció növeli a rendszer egészének általános rendelkezésre állását és redundanciáját. A Salt további előnye, hogy lehetővé teszi egyszerre több parancs párhuzamos végrehajtását. Ezeket a parancsokat AES (Advanced Encryption Standard) titkosítja, és az SSH protokollon keresztül továbbítja az ügyfélcsomópontokhoz. A Salt utolsó előnye, hogy több mestert is képes kezelni. A Salt kínál egy webes felhasználói felületet is; ez azonban korlátozott képességekkel és funkciókkal rendelkezik.

Top

Chef

A Chef belső szerverek közötti telepítési eszközként indult, mielőtt végül 2009-ben nyílt forráskódú szoftverként megjelent. A Chef jelentős előnye, hogy nagy támogatói közösséget is kínál, kiterjedt dokumentációval és útmutatással. A Chef master és node szoftver egyaránt működik Unix/Linux rendszereken, de Windows szervereken csak a kliens és munkaállomás változatok telepíthetők.

A Chef konfigurációs lehetőségei szakácskönyvekből és receptekből állnak. A receptek a definíciós fájlok, amelyek attribútumokkal, fájlokkal, könyvtárakkal és más receptekkel kombinálhatók a Cookbookok összeállításához. Ezek a szakácskönyvek azután felhasználhatók az ügyféltelepítéshez.

A Chef 3 fő komponensből áll:

  • Chef munkaállomás – A Chef munkaállomást a rendszermérnökök használják a szakácskönyvek létrehozására, tesztelésére és telepítésére a Chef mesterszerverekre.
  • Chef mesterszerver – A Chef szerverek lényegében a központ, ahol az összes Chef konfigurációs adat tárolódik. Ezek az információk magukban foglalják a szakácskönyveket, a szerveradatokat és egyéb releváns információkat.
  • Chef kliens – A Chef kliens a Chef master szerverek által kezelt végcsomóponti gépek. Ezek a kiszolgálók rendszeresen húznak és hajtanak végre szakácskönyv-konfigurációkat a Chef master szerverről.

A Chef programozási nyelve a Puppet-hez hasonlóan egy, a Chef-re jellemző DSL-t (Domain Specific Language) használ, de támogatja a Ruby nyelven írt szkripteket is.

A Chef elsősorban Chef master szervernek, valamint tartalék szervernek van beállítva arra az esetre, ha a központi Chef master szerver leállna. Kiesés esetén a tartalék master szerver helyettesíti a központi Chef master szervert. Így épül be a redundancia a Chef környezetbe. A Chef az automatizált munkafolyamatok mellett további felhő- és infrastruktúra-automatizálást is kínál, amelyek segítségével folyamatos szállítást biztosítanak az ügyfélgépek számára. Egy kikötés, amit meg kell jegyezni; Az elsődleges nyelv a programozóknak kedvez, mivel megköveteli a DSL/Ruby orientált szkriptelés használatát a szakácskönyvekben. A Chef és infrastruktúrája nagyon stabil és a megbízhatóságra épül. A Chef szekvenciális végrehajtási sorrendet is kínál, szemben például a Salt-tal, amely párhuzamos végrehajtást biztosít.

Top

Ansible

Az Ansible az egyik modernebb eszköz, amelyet konfigurációkezelési megoldásként használnak. Egyszerűsége és egyszerű konfigurálhatósága miatt vitathatatlanul az egyik legnépszerűbb szoftver. Az előző eszközökhöz hasonlóan az Ansible is támogatja a Windows és Unix/Linux kliensgépeket, de az Ansible mesterszerverhez Unix/Linux alapú szerver szükséges.

A korábbi eszközökkel ellentétben az Ansible futtatásához csak egy Ansible master szükséges, mivel az Ansible az SSH (vagy Windows esetén az RDP) protokollokat használja arra, hogy kapcsolatot nyisson a kliensszerverekkel a szekvenciális parancsok végrehajtásához. Az Ansible annyiban hasonlít a Puppethez, hogy az Ansible konfigurációs fájljai Python-alapúak, és YAML fájlokat használnak a strukturált adatokhoz. Ezeket a fájlokat Playbookoknak nevezik. Az Ansible egy Python API-t is támogat, amely bizonyos eseményekre való reagálásra használható, hogy a csomópontok felett maguk gyakorolhassák az irányítást. Az Ansible parancssori felületen keresztül is használható. A CLI-felület ilyen módon történő használata nem igényli a konfigurációs fájl használatát, ha egy egyszerű feladat, például egy kiszolgáló újraindítása esetén. Az összetettebb feladatokhoz playbookra van szükség, mivel a mesterkiszolgáló tolja az információkat az ügyfélcsomópontoknak. Az Ansible alkalmas a parancsok valós idejű távoli végrehajtására vagy az alkalmazások kezelésére is.

A redundancia tekintetében az Ansible-t általában egyetlen aktív mesterszerverre konfigurálják (amelyet elsődleges példánynak neveznek), mivel nem szükséges, hogy ügynökök csatlakozzanak hozzá. Egy másodlagos master konfigurálható, hogy átvegye a főszerver leállása esetén. Mivel az Ansible ügynök nélküli megközelítést használ, egy mérnök viszonylag gyorsan telepítheti a változásokat vagy tolhatja a frissítéseket az összes csomópontra. Az Ansible hátránya, hogy az ügyfélszámítógépek nem ellenőrzik, hogy az elsődleges masteren nem történnek-e időszakos konfigurációváltozások.

Top

Következtetés

Egyszerűen fogalmazva, a konfigurációkezelő egy absztrakciós réteget biztosít a szerverek meglévő konfigurációja és a kívánt állapot között. Ezt a célt úgy éri el, hogy az eléréséhez szükséges terjedelmes feladatok helyett inkább egy konkrét eredményre összpontosít.

A négy termék áttekintése során, ha kizárólag a népszerűség alapján keresünk következtetést, az egyértelmű győztes az Ansible. Ez annak köszönhető, hogy a cikkben szereplő többi termékhez képest az adminok sokkal szélesebb csoportja választja az Ansible-t elsődleges konfigurációkezelő eszközként. Az Ansible-nak megvannak a maga előnyei, mivel felépítését és paradigmáját tekintve inkább a SysOps-orientált szerepkörre irányul. A Salt ebből a szempontból hasonló, de eltér a Puppet-től és a Chef-től, mivel ezek inkább fejlesztőorientáltak. Ráadásul az Ansible az egyik legkönnyebben beállítható, konfigurálható és azonnal használható opció ebben a listában.

A Puppet viszont a használhatóság szempontjából a leginkább megközelíthető és megbízható lenne. Bár ahogyan azt már korábban vázoltuk, a Ruby alapos ismerete szükséges ahhoz, hogy teljes mértékben kihasználhassuk a funkciók széles skáláját, struktúráját és skálázhatóságát. A Puppet konfigurációja nagyon szemcsés és néha bonyolult lehet, de ez a legbiztosabb választás, ha nem heterogén szoftverkörnyezetet keresünk.

Ha olyan konfigurációs eszközt keres, amely egy egységesebb infrastruktúra felé áramvonalasodik, akkor az Ansible és a Salt jobban megfelel ennek a célnak. A Salt önmagában az egyik legmegbízhatóbb és robusztusabb eszköz ezen a listán, de egy fokozattal lejjebb kerül a webes felhasználói felület miatt, mivel a kezdők számára nehéz megérteni néhány mélyebb konfigurációs lehetőséget. Ezt azonban a fejlett skálázhatósági opciókkal és a SysOps vagy a rendszergazda szemszögéből megközelíthető munkakörnyezettel kompenzálja. Több olyan kiegészítő is rendelkezésre áll, amely javítja és bővíti a felhasználói felület képességeit, ami növeli a használhatóságot és a funkcionalitást.

A Chef önmagában egy nagyon egyszerű és jól megtervezett eszköz. Jobb megközelítést kínál a könnyű hozzáférés és a Puppetnél nagyobb fokú gyakorlatiasság érdekében. Mint korábban említettük, a Chef jelentős tanulási nehézséget jelenthet a SysOps vagy a fejlesztésorientált tapasztalatokkal nem rendelkező rendszergazdák számára, mivel a programozási nyelvek szélesebb körű ismeretét és tapasztalatot igényel.

Végeredményben az Ansible a rendelkezésre álló dokumentáció, a felépítése és a könnyű hozzáférhetőség miatt egyszerű választás a belépő szintű konfigurációkezeléshez. A Puppet szintén megbízható eszköz, de a felhasználónak vagy a csapatnak új kódolási eljárásokat és funkciókat kell megtanulnia ahhoz, hogy leküzdje a meredekebb tanulási görbét a DSL (Domain Specific Language) programozása során. A használhatóság, a skálázhatóság és a több környezetre vonatkozó lehetőségek tekintetében a Salt leginkább a rendszergazdák körében fog visszhangra találni, akik szeretnék kihasználni a sok lehetőséget és a rendkívül vonzó skálázási lehetőségeket. A Chef jól megtervezett felépítéssel, struktúrával rendelkezik, és jelentős stabilitást kínál. Kezdetben némi nehézséget okozhat a tanulási görbe, mivel inkább a programozói készségekhez igazodik. Mindegyik eszköz meghatározott szerepet tölt be az infrastruktúra és a kívánt állapotok konfigurálásakor. Használatuk teljes mértékben az Ön konfigurációs igényeitől, a személyes támogatástól és a megvalósításukhoz szükséges kényelmi szinttől függ.

Top

Szeretnénk, ha csatlakozna hozzánk!

Hívjon minket a 800.580.4985-ös telefonszámon, vagy nyisson velünk csevegést vagy jegyet, hogy beszélhessen hozzáértő megoldás- vagy tapasztalt tárhely tanácsadóink egyikével, és megtudja, hogyan használhatja ki ezeket a technikákat még ma!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.