Doba čtení: 8 minut
Který z nich je pro vás vhodný?
Obsah
I. Loutka II. SaltStack III. Chef IV. Ansible IV. Závěr
Úvod
Konfigurace jednoho serveru s potřebným softwarem je poměrně jednoduchý úkol. Pokud je však třeba na mnoha serverech nainstalovat stejný nebo podobný software a konfigurace, proces by si vyžádal mnoho člověkohodin, což by vyčerpalo již tak napjaté zdroje. Bez nějaké formy automatizace se tento úkol může stát téměř neřešitelným. S ohledem na tento úkol byly vyvinuty nové nástroje pro správu konfigurace, které řešily potřebu nasazení nových serverů s předem připravenými konfiguracemi a aktualizacemi a které umožnily hladší a lépe zvládnutelný proces automatizace. Aby bylo možné tyto servery synchronizovat a spravovat aktualizace v širokém rozsahu hostitelů v datovém centru nebo cloudovém prostředí, splňují tuto potřebu automatizační nástroje jako Puppet, SaltStack, Chef a Ansible.
Výběr správných nástrojů pro správu, které chcete použít pro svou infrastrukturu, je zásadním rozhodnutím. Proto se věnujeme přehledu dostupných možností pro tyto projekty. Tyto nástroje nabízejí nejvíce výhod jak pro DevOps, tak pro sysadminy. Doufejme, že vás tyto informace nasměrují správným směrem. I když je pravda, že všechny výše uvedené konfigurační nástroje tyto úkoly s největší pravděpodobností splní, každý z nich nabízí různé metodiky a role poněkud odlišným způsobem, jak tohoto cíle dosáhnout. Cílem tohoto článku je ukázat vám některé zásadní rozdíly, které jednotlivé platformy pro správu softwaru poskytují. Umožní vám to učinit informovanější rozhodnutí, protože se pokusíme dotknout každého softwarového titulu a jeho výhod a na závěr nabídneme přehled
.
Puppet
Puppet je jedním z nejstarších a nejdůvěryhodnějších nástrojů pro správu v našem seznamu. Díky tomu nabízí širší základnu podpory v rámci komunity Puppet i od týmu Puppet. Puppet také poskytuje edici svého softwaru s otevřeným zdrojovým kódem, kterou lze nainstalovat na širokou škálu operačních systémů. Podniková verze softwaru je však schopna obsáhnout větší systémy, jako je IBM AIX nebo hardware F5 Big-IP. Je třeba poznamenat, že hlavní server Puppet lze nainstalovat pouze na operační systémy Unix/Linux.
Nasadení Puppet se obvykle skládá z hlavního serveru a několika klientských počítačů (které se označují jako agenti). Puppet je jedním z nástrojů v tomto seznamu, který používá vlastní jedinečný jazyk, který je založen na jazyce Ruby. Puppet DSL (neboli Domain Specific Language) se používá k popisu požadovaného stavu systému v souboru, který se nazývá soubor manifest. Soubory manifest jsou v podstatě souborem konfigurací nebo úloh, které určují, jak jsou nakonfigurovány síťové prostředky a prostředky operačního systému (například služby, balíčky a soubory). Puppet pak soubory manifestů sestaví do katalogů a každý katalog odešle do určeného uzlu tak, aby byl uzel rekonfigurován do požadovaného stavu v celé infrastruktuře.
Puppet navíc nabízí intuitivní a přehledné webové uživatelské rozhraní, které slouží k provádění významnějšího počtu úloh, včetně správy uzlů v reálném čase. Protože je Puppet navíc nastaven ve formě architektury s více mastery, v případě výpadku aktuálně aktivního masteru nahradí předchozí master jiný master, aby nedošlo ke zhoršení dostupnosti.
Puppet aktualizuje konfiguraci uzlů tak, že klienti zkontrolují master, zda nejsou aktualizovány manifesty, a poté stáhnou nové konfigurace z master serveru. Díky této vlastnosti je Puppet více orientován na správce systému než mnoho jiných zde uvedených nástrojů. Nevýhodou nástroje Puppet je, že pro uzly není k dispozici okamžité vzdálené spuštění. Kromě toho má nástroj Puppet strmější křivku učení, a to kvůli nutným znalostem programovacích jazyků Puppet DSL a Ruby.
Nahoru
SaltStack
SaltStack (označovaný také jako Salt) je jedním z novějších nástrojů v tomto seznamu. V oblasti správy konfigurace softwaru je však stále velmi důležitý. Salt má poměrně aktivní komunitu a účinnou podporu. Salt je navržen tak, aby umožňoval nízkou latenci, vysokorychlostní komunikaci a přenos dat mezi uzly pro vzdálené spuštění. Salt je navržen pro práci s operačními systémy Unix/Linux a Windows, ale server Salt Master může pracovat pouze v operačních systémech Unix/Linux.
SaltStack se skládá ze serveru Salt Master, což je centrální server Salt, a klientů, kteří se nazývají Salt Minions a běží jako agenti na jednotlivých uzlových počítačích. Zvládnutí jazyka Salt je poměrně snadné, protože jeho lidsky čitelné konfigurace používají jazyk Python a soubory YAML, což je jedna z přirozenějších a přímočařejších datových struktur. Zatímco Puppet pracuje způsobem, kdy uzly žádají o aktualizace, Salt pracuje opačně. Salt Master odesílá všechny konfigurace do všech klientských počítačů. Salt navíc slouží jako asynchronní souborový server, což zvyšuje rychlost přenosů souborů, které obsluhují Salt Minions. Rychlost nasazení je jedním z hlavních cílů filozofie Saltu.
Salt také může běžet v konfiguraci s více mastery. Pokud dojde k výpadku hlavního serveru Salt, agenti se připojí k jinému hlavnímu serveru uvedenému v konfiguraci. Tato funkce zvyšuje celkovou dostupnost a redundanci systému jako celku. Další výhodou systému Salt je, že umožňuje paralelní provádění více příkazů najednou. Tyto příkazy jsou šifrovány pomocí AES (Advanced Encryption Standard) a odesílány do klientských uzlů prostřednictvím protokolu SSH. Poslední výhodou systému Salt je, že dokáže spravovat více masterů. Salt nabízí také webové uživatelské rozhraní; má však omezené možnosti a funkce.
Nahoru
Chef
Chef začal jako interní nástroj pro nasazení mezi servery, než byl nakonec v roce 2009 uvolněn jako software s otevřeným zdrojovým kódem. Významnou výhodou Chefu je, že nabízí také rozsáhlou komunitu podpory s rozsáhlou dokumentací a návody. Software Chef master a node funguje v systémech Unix/Linux, ale na serverech se systémem Windows lze nasadit pouze verze pro klienty a pracovní stanice.
Možnosti konfigurace softwaru Chef se skládají z kuchařských knih a receptů. Recepty jsou definiční soubory, které lze kombinovat s atributy, soubory, knihovnami a dalšími recepty a vytvářet tak kuchařky. Tyto kuchařky pak lze použít pro nasazení u klientů.
Chef se skládá ze tří hlavních součástí:
- Pracovní stanice Chef – Pracovní stanici Chef používají systémoví inženýři k vytváření, testování a nasazování kuchařek na hlavní servery Chef.
- Hlavní server Chef – servery Chef jsou v podstatě centrem, kde jsou uložena všechna konfigurační data Chefu. Tyto informace zahrnují kuchařky, data serverů a další důležité informace.
- Klient Chef – Klient Chef jsou stroje s koncovými uzly spravované hlavními servery Chef. Tyto servery pravidelně stahují a provádějí konfigurace kuchařek z hlavního serveru Chef.
Programovací jazyk Chef je podobný jazyku Puppet, protože používá jazyk DSL (Domain Specific Language), který je pro Chef jedinečný, ale podporuje také skripty napsané v jazyce Ruby.
Chef je primárně nastaven jako hlavní server Chef a také jako záložní server pro případ výpadku centrálního hlavního serveru Chef. Pokud dojde k výpadku, záložní hlavní server nahradí centrální hlavní server Chef. Takto je do prostředí Chef začleněna redundance. Kromě automatizovaných pracovních postupů, které se používají k zajištění nepřetržitého doručování na klientské počítače, nabízí Chef také další automatizaci cloudu a infrastruktury. Je třeba upozornit na jednu podmínku; Primární jazyk upřednostňuje programátory, protože vyžaduje používání skriptování orientovaného na DSL/Ruby v kuchařkách. Chef a jeho infrastruktura jsou velmi stabilní a postavené na spolehlivosti. Chef také nabízí sekvenční pořadí provádění na rozdíl například od Saltu, který poskytuje paralelní provádění.
Nahoru
Ansible
Ansible je jedním z modernějších nástrojů využívaných jako řešení správy konfigurace. Je pravděpodobně jedním z nejoblíbenějších softwarů díky své jednoduchosti a přímočaré konfiguraci. Stejně jako předchozí nástroje podporuje Ansible klientské počítače se systémem Windows i Unix/Linux, ale hlavní server Ansible vyžaduje server založený na systému Unix/Linux.
Na rozdíl od předchozích nástrojů je ke spuštění nutný pouze hlavní server Ansible, protože Ansible používá protokoly SSH (nebo RDP pro systém Windows) k otevření spojení s klientskými servery, na kterých provádí své sekvenční příkazy. Ansible je podobný nástroji Puppet v tom, že konfigurační soubory Ansible jsou založeny na jazyku Python a pro strukturovaná data používají soubory YAML. Tyto soubory se nazývají Playbooks. Ansible také podporuje rozhraní API jazyka Python, které lze použít k reakci na konkrétní události a vykonávat tak kontrolu nad samotnými uzly. Ansible lze používat také prostřednictvím rozhraní příkazového řádku. Při použití rozhraní CLI tímto způsobem by v případě jednoduché úlohy, jako je například restartování serveru, nebylo nutné používat konfigurační soubor. Pro složitější úlohy je nutný playbook, protože hlavní server předává informace klientským uzlům. Ansible je také vhodný pro vzdálené provádění příkazů v reálném čase nebo správu aplikací.
S ohledem na redundanci se Ansible obvykle konfiguruje jako jediný aktivní hlavní server (označovaný jako primární instance), protože k němu není třeba připojovat žádné agenty. Sekundární hlavní server může být nakonfigurován tak, aby převzal funkci v případě výpadku hlavního serveru. Protože Ansible používá přístup bez agentů, může inženýr relativně rychle nasadit změny nebo odeslat aktualizace do všech uzlů. Nevýhodou Ansible je, že klientské počítače nekontrolují pravidelné změny konfigurace na primárním masteru.
Nahoru
Závěr
Zjednodušeně řečeno, správce konfigurace poskytuje abstrakční vrstvu mezi stávající konfigurací serveru a jeho požadovaným stavem. Tohoto cíle je dosaženo tím, že se více zaměřuje na konkrétní výsledek namísto slovních úloh potřebných k jejich dosažení.
Pokud bychom v našem přehledu těchto čtyř produktů hledali závěr pouze na základě oblíbenosti, je jasným vítězem Ansible. Je to dáno tím, že ve srovnání s ostatními produkty uvedenými v tomto článku se mnohem širší skupina administrátorů rozhodne používat Ansible jako svůj primární nástroj pro správu konfigurace. Ansible má své výhody, protože je svou strukturou a paradigmatem zaměřen spíše na roli orientovanou na SysOps. Salt je v tomto ohledu podobný, ale na rozdíl od Puppetu a Chefu je více orientován na vývojáře. Ansible je navíc jednou z možností v tomto seznamu, kterou lze snadněji nastavit, nakonfigurovat a začít ihned používat.
Puppet by byl na druhou stranu tím, který je z hlediska použitelnosti nejpřístupnější a nejspolehlivější. I když, jak již bylo nastíněno, k plnému využití jeho široké škály funkcí, struktury a škálovatelnosti je nutná znalost jazyka Ruby. Konfigurace Puppetu může být velmi granulární a někdy komplikovaná, ale je to nejbezpečnější sázka, pokud hledáte neheterogenní softwarové prostředí.
Pokud hledáte konfigurační nástroj, který je zjednodušený směrem k jednotnější infrastruktuře, Ansible a Salt budou k tomuto cíli vhodnější. Salt je sám o sobě jedním ze spolehlivějších a robustnějších nástrojů na tomto seznamu, ale je o stupeň níže kvůli tomu, že webové uživatelské rozhraní je pro začátečníky obtížné pochopit některé hlubší možnosti konfigurace, které jsou k dispozici. Vynahrazuje to však svými pokročilými možnostmi škálování a přístupným pracovním prostředím z pohledu SysOps nebo správce. K dispozici je také několik doplňků, které vylepšují a rozšiřují schopnosti uživatelského rozhraní, což zvyšuje jeho použitelnost a funkčnost.
Chef sám o sobě je velmi jednoduchý a dobře navržený nástroj. Nabízí vylepšený přístup pro snadný přístup a vyšší úroveň praktičnosti než Puppet. Jak již bylo zmíněno, Chef může představovat pozoruhodnou křivku učení pro SysOps nebo správce systému, kteří nemají zkušenosti s orientací na vývoj, protože vyžaduje širší znalosti programovacích jazyků a zkušenosti.
Závěrem lze říci, že Ansible je díky dostupné dokumentaci, své struktuře a snadné dostupnosti jasnou volbou pro základní úroveň správy konfigurace. Puppet je také solidní nástroj, ale uživatel nebo tým se bude muset naučit nové kódovací postupy a funkce, aby překonal strmější křivku učení při používání jeho programovacího jazyka DSL (Domain Specific Language). Z hlediska použitelnosti, škálovatelnosti a možností použití ve více prostředích bude mít Salt největší ohlas u správců systémů, kteří chtějí využít jeho mnoha možností a velmi atraktivních možností škálování. Chef má dobře navržené uspořádání, strukturu a nabízí značnou úroveň stability. Zpočátku mohou nastat určité potíže s křivkou učení, protože je orientován spíše na dovednosti programátora. Všechny tyto nástroje plní specifickou roli při konfiguraci vaší infrastruktury a jejích požadovaných stavů. Jejich využití bude zcela záviset na vašich potřebách konfigurace, osobní podpoře a úrovni pohodlí potřebné k jejich implementaci.
Nahoru
Budeme rádi, když se k nám přidáte!
Zavolejte nám na 800 580 4985 nebo si u nás otevřete chat či ticket a promluvte si s některým z našich kompetentních poradců pro řešení nebo zkušených hostitelů a zjistěte, jak můžete tyto techniky využít ještě dnes!