Puppet, Salt, Chef och Ansible: En jämförelse

Lästid: 8 minuter

Vilken är lämplig för dig?

Tabell med innehållsförteckning

I. Marionett II. SaltStack III. Chef IV. Ansible IV. Slutsats

Inledning

Att konfigurera en enda server med den programvara som krävs är en ganska enkel uppgift. Men om många servrar behöver ha samma eller liknande programvara och konfigurationer installerade på sig, skulle processen ta många arbetstimmar i anspråk för att slutföra, vilket skulle tära på dina redan ansträngda resurser. Utan någon form av automatisering kan denna uppgift bli nästan oöverstiglig. Med denna uppgift i åtanke utvecklades nya konfigurationshanteringsverktyg för att tillgodose behovet av att distribuera nya servrar med färdiga konfigurationer och uppdateringar, vilket möjliggjorde en smidigare och mer hanterbar automatiseringsprocess. För att hålla dessa servrar synkroniserade och för att hantera uppdateringar över ett stort antal värddatorer i ett datacenter eller en molnmiljö uppfyller automatiseringsverktyg som Puppet, SaltStack, Chef och Ansible detta behov.

Det är ett viktigt beslut att välja rätt hanteringsverktyg för din infrastruktur. Det är därför vi granskar de tillgängliga alternativen för dessa projekt. Dessa verktyg erbjuder de största fördelarna för både DevOps och sysadmins. Förhoppningsvis kan den här informationen peka dig i rätt riktning. Även om det är sant att alla konfigurationsverktyg som nämns ovan med största sannolikhet kommer att utföra dessa uppgifter, erbjuder var och en av dem olika metoder och roller på lite olika sätt för att uppnå detta mål. Den här artikeln syftar till att visa dig några av de väsentliga skillnaderna som varje plattform för programvaruhantering erbjuder. Detta kommer att göra det möjligt för dig att fatta ett mer välgrundat beslut eftersom vi försöker beröra varje programvarutitel och dess fördelar och sedan erbjuda en översikt i slutet

.

Puppet

uppet är ett av de äldsta och mest betrodda förvaltningsverktygen i vår lista. På grund av detta erbjuder det en bredare stödbas inom Puppet-communityt samt från Puppet-teamet. Puppet tillhandahåller också en öppen källkodsutgåva av sin programvara som kan installeras på ett stort antal olika operativsystem. Företagsversionen av programvaran kan dock omfatta större system som IBM:s AIX eller F5 Big-IP-hårdvara. Det bör noteras att Puppets huvudserver endast kan installeras på Unix/Linux-operativsystem.

En Puppet-installation består vanligtvis av en huvudserver och flera klientmaskiner (som kallas agenter). Puppet är ett av verktygen i den här listan som använder sitt eget unika språk som är baserat på Ruby. Puppet DSL (eller Domain Specific Language) används för att beskriva det önskade tillståndet för ditt system i en fil, som kallas manifestfil. Manifestfiler är i grunden en uppsättning konfigurationer eller uppgifter som bestämmer hur dina nätverks- och operativsystemresurser (t.ex. tjänster, paket och filer) konfigureras. Puppet sammanställer sedan manifestfilerna till kataloger och skickar varje katalog till sin angivna nod så att noden omkonfigureras till det önskade tillståndet i hela infrastrukturen.

Puppet erbjuder dessutom ett intuitivt och enkelt webbaserat användargränssnitt som används för att utföra ett större antal uppgifter, inklusive nodehantering i realtid. Eftersom Puppet är uppbyggt i en arkitekturform med flera masters, om den för närvarande aktiva mastern går ner, kommer dessutom en annan master att ersätta den tidigare mastern för att undvika försämrad tillgänglighet.

Puppet uppdaterar nodernas konfiguration genom att klienterna kontrollerar masteren för uppdaterade manifest och hämtar sedan de nya konfigurationerna ner från masterservern. På grund av denna funktion är Puppet mer systemadministratörsorienterad än många av de andra verktygen som nämns här. En nackdel med Puppet är att det inte finns någon omedelbar fjärrkörning tillgänglig för noderna. Dessutom har Puppet en brantare inlärningskurva på grund av de kunskaper som krävs i programmeringsspråken Puppet DSL och Ruby.

Top

SaltStack

SaltStack (även kallad Salt) är ett av de nyare verktygen på denna lista. Det är dock fortfarande mycket relevant för konfigurationshantering av programvara. Salt har en relativt aktiv gemenskap och ett effektivt stöd. Salt är utformat för att möjliggöra låg latens, höghastighetskommunikation och dataöverföring mellan noderna för fjärrkörning. Salt är utformat för att fungera med operativsystemen Unix/Linux och Windows, men Master Salt-servern kan endast fungera på Unix/Linux-operativsystem.

SaltStack består av en Salt Master, som är den centrala Salt-servern, och klienter som kallas Salt Minions, som körs som agenter på var och en av nodens maskiner. Det är relativt enkelt att behärska språket i Salt eftersom de människoläsbara konfigurationerna använder Python och YAML-filer, vilket är en av de mer naturliga och okomplicerade datastrukturerna. Medan Puppet arbetar på ett sätt där noderna begär uppdateringarna arbetar Salt i motsats till detta. Salt Master pushar alla konfigurationer till alla klientmaskiner. Dessutom fungerar Salt som en asynkron filserver, vilket ökar hastigheten på filöverföringarna som betjänar Salt Minions. Distributionshastighet är ett av huvudmålen i Salts filosofi.

Salt kan också köras i en multi-master-konfiguration. Om en Salt-masterserver går ner kommer agenterna att ansluta till en annan master som anges i konfigurationerna. Denna funktion ökar den totala tillgängligheten och redundansen för systemet som helhet. En ytterligare fördel med Salt är att den tillåter parallell exekvering av flera kommandon samtidigt. Dessa kommandon krypteras via AES (Advanced Encryption Standard) och skickas till klientnoderna via SSH-protokollet. En sista fördel med Salt är att det kan hantera flera masters. Salt erbjuder också ett webbgränssnitt, men det har begränsade möjligheter och funktioner.

Top

Chef

Chef började som ett internt verktyg för utplacering av server-till-server innan det till slut släpptes som öppen källkod 2009. En betydande fördel med Chef är att det också erbjuder en stor supportgemenskap med omfattande dokumentation och vägledning. Chef master- och node-programvaran fungerar på både Unix/Linux-system, men endast klient- och arbetsstationsversionerna kan distribueras på Windows-servrar.

Chefs konfigurationsalternativ består av kokböcker och recept. Recepten är definitionsfiler som kan kombineras med attribut, filer, bibliotek och andra recept för att bygga Cookbooks. Dessa kokböcker kan sedan användas för klientdistribution.

Chef består av 3 huvudkomponenter:

  • Chef-arbetsstation – Chef-arbetsstationen används av systemingenjörer för att skapa, testa och distribuera kokböcker till Chef-masterservrarna.
  • Chef Master Server – Chef Servers är i huvudsak navet där alla Chef-konfigurationsdata lagras. Denna information omfattar kokböcker, serverdata och annan relevant information.
  • Chef-klient – Chef-klienten är de slutnodsmaskiner som hanteras av Chef-masterservrarna. Dessa servrar hämtar och utför regelbundet kokbokskonfigurationer från Chef-masterservern.

Chefs programmeringsspråk liknar Puppet, genom att det använder ett DSL (Domain Specific Language) som är unikt för Chef, men det stödjer även skript som är skrivna i Ruby.

Chef är i första hand konfigurerad som en Chef-masterserver, samt som en backup-server ifall den centrala Chef-masterservern skulle gå ner. Om ett avbrott inträffar kommer backup-masterservern att ersätta den centrala Chef-masterservern. På detta sätt införlivas redundans i Chef-miljön. Chef erbjuder också ytterligare moln- och infrastrukturautomatisering, förutom automatiserade arbetsflöden, som används för att tillhandahålla kontinuerlig leverans till klientmaskinerna. Det primära språket gynnar programmerare eftersom det kräver användning av DSL/Ruby-orienterade skript i kokböckerna. Chef och dess infrastruktur är mycket stabila och byggda för tillförlitlighet. Chef erbjuder också sekventiell exekveringsordning, till skillnad från till exempel Salt, som erbjuder parallell exekvering.

Top

Ansible

Ansible är ett av de modernare verktygen som används som lösning för konfigurationshantering. Det är utan tvekan en av de mest populära programvarorna på grund av dess enkelhet och okomplicerade konfiguration. Liksom de tidigare verktygen stöder Ansible både Windows- och Unix/Linux-klientmaskiner, men Ansible-masterservern kräver en Unix/Linux-baserad server.

I motsats till de tidigare verktygen krävs endast en Ansible master-server för att köras eftersom Ansible använder protokollen SSH (eller RDP för Windows) för att öppna en anslutning till klientservrarna för att utföra sina sekventiella kommandon. Ansible liknar Puppet på så sätt att Ansible-konfigurationsfilerna är Python-baserade och använder YAML-filer för de strukturerade uppgifterna. Dessa filer kallas Playbooks (spelböcker). Ansible stöder också ett Python-API som kan användas för att reagera på specifika händelser för att utöva kontroll över själva noderna. Ansible kan också användas via ett kommandoradsgränssnitt. Om man använder ett CLI-gränssnitt på detta sätt skulle man inte behöva använda en konfigurationsfil om en enkel uppgift som t.ex. att starta om en server. För mer komplexa uppgifter krävs en spelbok eftersom huvudservern skickar informationen till klientnoderna. Ansible lämpar sig också för fjärrkörning i realtid av kommandon eller programhantering.

Med avseende på redundans konfigureras Ansible vanligtvis som en enda aktiv huvudserver (kallad Primary Instance) eftersom inga agenter krävs för att ansluta till den. En sekundär huvudserver kan konfigureras för att ta över om huvudservern går ner. Eftersom Ansible använder en agentlös metod kan en tekniker relativt snabbt distribuera ändringar eller skjuta upp uppdateringar till alla noder. En nackdel med Ansible är att klientdatorerna inte kontrollerar om det sker några periodiska konfigurationsändringar på den primära masteren.

Top

Slutsats

Enklare uttryckt tillhandahåller en konfigurationshanterare ett abstraktionslager mellan en servares befintliga konfiguration och dess önskade tillstånd. Detta mål uppnås genom att fokusera mer på ett specifikt resultat i stället för de verbala uppgifter som behövs för att uppnå dem.

I vår granskning av dessa fyra produkter, om vi letar efter en slutsats baserad enbart på popularitet, är den tydliga vinnaren Ansible. Detta beror på att en mycket större grupp administratörer väljer att använda Ansible som sitt primära konfigurationshanteringsverktyg jämfört med de andra produkterna i den här artikeln. Ansible har sina fördelar eftersom det är mer riktat mot en SysOps-orienterad roll när det gäller dess struktur och paradigm. Salt är liknande i denna aspekt, men skiljer sig från Puppet och Chef eftersom de är mer utvecklarorienterade. Dessutom är Ansible ett av de enklare alternativen i den här listan att sätta upp, konfigurera och börja använda direkt.

Puppet skulle å andra sidan vara det som är mest lättillgängligt och pålitligt ur användbarhetssynpunkt. Även om det, som tidigare beskrivits, krävs en fungerande kunskap i Ruby för att dra full nytta av dess breda utbud av funktioner, struktur och skalbarhet. Puppets konfiguration kan bli mycket granulär och ibland komplicerad, men det är det säkraste alternativet om du letar efter en icke-heterogen mjukvarumiljö.

Om du letar efter ett konfigurationsverktyg som är strömlinjeformat mot en mer enhetlig infrastruktur skulle Ansible och Salt vara mer lämpade för det målet. Salt i sig är ett av de mer pålitliga och robusta verktygen på den här listan, men får en sänkning på grund av webbgränssnittets svårighet för nybörjare att förstå några av de djupare konfigurationsalternativen som finns tillgängliga. Det kompenserar dock för detta genom sina avancerade skalbarhetsalternativ och en lättillgänglig arbetsmiljö ur SysOps- eller administratörsperspektiv. Det finns också flera tillägg tillgängliga som förbättrar och utökar UI:s möjligheter, vilket ökar användbarheten och funktionaliteten.

Chef i sig är ett mycket enkelt och väldesignat verktyg. Det erbjuder ett förbättrat tillvägagångssätt för enkel åtkomst och en större praktisk nivå än Puppet. Som tidigare nämnts kan Chef utgöra en anmärkningsvärd inlärningskurva för SysOps eller systemadministratörer som saknar utvecklingsorienterad erfarenhet, eftersom det kräver en bredare förståelse för programmeringsspråk och erfarenhet.

Slutsatsen är att Ansible är ett enkelt val för konfigurationshantering på instegsnivå på grund av den tillgängliga dokumentationen, strukturen och den enkla tillgängligheten. Puppet är också ett gediget verktyg, men en användare eller ett team kommer att behöva lära sig nya kodningsprocedurer och funktioner för att övervinna den brantare inlärningskurvan när man använder dess DSL-programmering (Domain Specific Language). När det gäller användbarhet, skalbarhet och alternativ för flera miljöer kommer Salt att vara mest intressant för systemadministratörer som vill dra nytta av de många alternativen och den mycket tilltalande skalbarheten. Chef har en väl utformad layout och struktur och erbjuder en betydande stabilitetsnivå. Det kan finnas vissa inledande svårigheter med inlärningskurvan eftersom den är mer inriktad på en programmerares färdigheter. Alla dessa verktyg spelar en specifik roll när du konfigurerar din infrastruktur och dess önskade tillstånd. Deras användning beror helt och hållet på dina konfigurationsbehov, supportpersonalen och den bekvämlighetsnivå som krävs för att implementera dem.

Top

Vi skulle vilja att du anslöt dig till oss!

Ringa oss på 800.580.4985, eller öppna en chatt eller biljett hos oss för att prata med en av våra kunniga rådgivare för lösningar eller erfarna webbhotell för att lära dig hur du kan dra nytta av dessa tekniker redan idag!

Lämna ett svar

Din e-postadress kommer inte publiceras.