Puppet, Salt, Chef și Ansible: O comparație

Timp de citire: 8 minute

Ce este potrivit pentru dumneavoastră?

Tabloul cuprinsului

I. Păpușa II. SaltStack III. Chef IV. Ansible IV. Concluzie

Introducere

Configurarea unui singur server cu software-ul necesar este o sarcină rezonabil de simplă. Cu toate acestea, în cazul în care numeroase servere trebuie să aibă instalate pe ele același software și configurații identice sau similare, procesul ar necesita numeroase ore de muncă pentru a fi finalizat, ceea ce ar epuiza resursele dumneavoastră deja solicitate. Fără o anumită formă de automatizare, această sarcină poate deveni aproape insurmontabilă. Ținând cont de această sarcină, au fost dezvoltate noi instrumente de gestionare a configurației pentru a răspunde nevoii de a implementa servere noi cu configurații și actualizări prefabricate, care au permis un proces de automatizare mai ușor și mai ușor de gestionat. Pentru a menține sincronizarea acestor servere și pentru a gestiona actualizările pe o gamă largă de gazde într-un centru de date sau într-un mediu cloud, instrumentele de automatizare precum Puppet, SaltStack, Chef și Ansible răspund acestei nevoi.

Alegerea instrumentelor de gestionare potrivite pentru a fi utilizate pentru infrastructura dumneavoastră este o decizie critică. Acesta este motivul pentru care trecem în revistă opțiunile disponibile pentru aceste proiecte. Aceste instrumente oferă cele mai multe beneficii atât pentru DevOps, cât și pentru sysadmins. Sperăm că aceste informații vă pot îndruma în direcția corectă. Deși este adevărat că toate instrumentele de configurare menționate mai sus vor îndeplini cel mai probabil aceste sarcini, fiecare dintre ele oferă metodologii și roluri diferite în moduri oarecum diferite pentru a atinge acest obiectiv. Acest articol își propune să vă arate câteva dintre diferențele esențiale pe care le oferă fiecare platformă de gestionare a software-ului. Acest lucru vă va permite să luați o decizie mai bine informată, deoarece încercăm să abordăm fiecare titlu de software și beneficiile sale, iar la final vă oferim o prezentare generală

.

Puppet

Puppet este unul dintre cele mai vechi și mai de încredere instrumente de management din lista noastră. Din acest motiv, oferă o bază de suport mai largă în cadrul comunității Puppet, precum și din partea echipei Puppet. Puppet oferă, de asemenea, o ediție open-source a software-ului său, care poate fi instalată pe o mare varietate de sisteme de operare. Cu toate acestea, versiunea de întreprindere a software-ului este capabilă să înglobeze sisteme mai mari, cum ar fi AIX de la IBM sau hardware-ul F5 Big-IP. Trebuie remarcat faptul că serverul principal Puppet poate fi instalat numai pe sisteme de operare Unix/Linux.

O implementare Puppet este de obicei compusă dintr-un server principal și mai multe mașini client (care sunt denumite agenți). Puppet este unul dintre instrumentele din această listă care utilizează un limbaj propriu și unic care se bazează pe Ruby. Puppet DSL (sau limbajul specific domeniului) este utilizat pentru a descrie starea dorită a sistemului dumneavoastră în cadrul unui fișier, care se numește fișier manifest. Fișierele manifest sunt, în esență, un set de configurații sau sarcini care determină modul în care sunt configurate resursele rețelei și ale sistemului de operare (cum ar fi serviciile, pachetele și fișierele). Puppet compilează apoi fișierele manifest în cataloage și împinge fiecare catalog către nodul său desemnat, astfel încât nodul să fie reconfigurat la starea dorită în întreaga infrastructură.

Puppet oferă, în plus, o interfață de utilizare intuitivă și simplă, bazată pe web, care este utilizată pentru a finaliza un număr mai semnificativ de sarcini, inclusiv gestionarea nodurilor în timp real. În plus, deoarece Puppet este configurat într-o formă de arhitectură cu mai mulți maeștri, în cazul în care maestrul activ în acel moment cade, un alt maestru îl va înlocui pe cel anterior pentru a evita degradarea disponibilității.

Puppet actualizează configurația nodurilor prin faptul că clienții verifică maestrul pentru manifestele actualizate și apoi trage noile configurații în jos de pe serverul maestru. Datorită acestei caracteristici, Puppet este mai orientat către administratorul de sistem decât multe dintre celelalte instrumente menționate aici. Un dezavantaj al Puppet este că nu există o execuție imediată de la distanță disponibilă pentru noduri. În plus, Puppet are o curbă de învățare mai abruptă, din cauza cunoștințelor necesare ale limbajelor de programare Puppet DSL și Ruby.

Top

SaltStack

SaltStack (denumit, de asemenea, Salt) este unul dintre instrumentele mai noi din această listă. Cu toate acestea, este încă foarte relevant în domeniul gestionării configurației software. Salt are o comunitate relativ activă și un suport eficient. Salt este conceput pentru a permite o latență redusă, o comunicare de mare viteză și o transmisie de date între nodurile de execuție la distanță. Salt este proiectat să funcționeze cu sistemele de operare Unix/Linux și Windows, dar serverul Salt Master poate funcționa numai pe sistemele de operare Unix/Linux.

SaltStack este compus dintr-un Salt Master, care este serverul Salt central, și clienți care se numesc Salt Minions, care rulează ca agenți pe fiecare dintre mașinile nodurilor. Stăpânirea limbajului Salt este relativ ușoară, deoarece configurațiile lizibile pentru oameni folosesc fișiere Python și YAML, care este una dintre cele mai naturale și mai simple structuri de date. În timp ce Puppet funcționează într-o manieră în care nodurile solicită actualizările, Salt funcționează în opoziție cu aceasta. Maestrul Salt împinge toate configurațiile către toate mașinile client. În plus, Salt servește ca un server de fișiere asincron, ceea ce crește viteza transferurilor de fișiere care deservesc Salt Minions. Viteza de implementare este unul dintre obiectivele principale ale filozofiei Salt.

Salt poate rula, de asemenea, într-o configurație multi-master. Dacă un server principal Salt cade, agenții se vor conecta la un alt server principal listat în configurație. Această caracteristică crește disponibilitatea și redundanța generală a sistemului în ansamblu. Un beneficiu suplimentar al lui Salt este că permite executarea în paralel a mai multor comenzi deodată. Aceste comenzi sunt criptate prin AES (Advanced Encryption Standard) și transmise către nodurile client prin intermediul protocolului SSH. Un ultim avantaj al lui Salt este că poate gestiona mai mulți maeștri. Salt oferă și o interfață web UI; cu toate acestea, aceasta are capacități și caracteristici limitate.

Top

Chef

Chef a început ca un instrument intern de implementare de la server la server înainte de a fi lansat în cele din urmă ca software open-source în 2009. Un beneficiu semnificativ al lui Chef este că oferă, de asemenea, o comunitate mare de suport cu documentație și îndrumare extinsă. Software-ul Chef master și nodul funcționează atât pe sistemele Unix/Linux, dar numai versiunile client și stație de lucru pot fi implementate pe servere Windows.

Opțiunile de configurare ale lui Chef constau în Cookbooks și Recipes. Rețetele sunt fișierele de definiție care pot fi combinate cu atribute, fișiere, biblioteci și alte rețete pentru a construi Cookbooks. Aceste cookbooks pot fi apoi utilizate pentru implementarea clienților.

Chef este format din 3 componente principale:

  • Chef Workstation – Stația de lucru Chef este utilizată de inginerii de sistem pentru a crea, testa și implementa cookbooks pe serverele principale Chef.
  • Chef Master Server – Serverele Chef sunt, în esență, hub-ul în care sunt stocate toate datele de configurare Chef. Aceste informații includ cărți de bucate, date despre servere și alte informații relevante.
  • Chef Client – Clientul Chef este reprezentat de mașinile de nod final gestionate de serverele principale Chef. Aceste servere extrag periodic și execută configurațiile cookbook-urilor de la serverul principal Chef.

Limbajul de programare al lui Chef este similar cu Puppet, în sensul că folosește un DSL (Domain Specific Language) unic pentru Chef, dar acceptă și scripturi scrise în Ruby.

Chef este configurat în primul rând ca server principal Chef, precum și ca server de rezervă în cazul în care serverul principal Chef central se oprește. Dacă apare o întrerupere, serverul master de rezervă va înlocui serverul master Chef central. Acesta este modul în care este încorporată redundanța în mediul Chef. Chef oferă, de asemenea, o automatizare suplimentară a cloud-ului și a infrastructurii, pe lângă fluxurile de lucru automatizate, care sunt utilizate pentru a asigura livrarea continuă către mașinile client. O stipulație care trebuie remarcată; Limbajul primar favorizează programatorii, deoarece necesită utilizarea scripturilor orientate pe DSL/Ruby în Cookbooks. Chef și infrastructura sa sunt foarte stabile și construite pentru fiabilitate. Chef oferă, de asemenea, o ordine de execuție secvențială, spre deosebire de, de exemplu, Salt, care oferă o execuție paralelă.

Top

Ansible

Ansible este unul dintre cele mai moderne instrumente utilizate ca soluție de gestionare a configurației. Este, fără îndoială, unul dintre cele mai populare programe datorită simplității și configurației sale directe. La fel ca instrumentele anterioare, Ansible acceptă atât mașini client Windows, cât și Unix/Linux, dar serverul principal Ansible necesită un server bazat pe Unix/Linux.

Spre deosebire de instrumentele anterioare, este necesar doar un server Ansible master pentru a rula, deoarece Ansible utilizează protocoalele SSH (sau RDP pentru Windows) pentru a deschide o conexiune cu serverele client pentru a executa comenzile sale secvențiale. Ansible este similar cu Puppet prin faptul că fișierele de configurare Ansible sunt bazate pe Python și utilizează fișiere YAML pentru datele structurate. Aceste fișiere se numesc Playbooks. Ansible suportă, de asemenea, un API Python, care poate fi utilizat pentru a răspunde la evenimente specifice pentru a exercita controlul asupra nodurilor în sine. Ansible poate fi utilizat, de asemenea, prin intermediul unei interfețe de linie de comandă. Utilizarea unei interfețe CLI în acest mod nu ar necesita utilizarea unui fișier de configurare în cazul unei sarcini simple, cum ar fi repornirea unui server. Pentru sarcini mai complexe, este necesar un playbook, deoarece serverul principal împinge informațiile către nodurile client. Ansible este, de asemenea, potrivit pentru executarea de la distanță în timp real a comenzilor sau pentru gestionarea aplicațiilor.

În ceea ce privește redundanța, Ansible este de obicei configurat ca un singur server principal activ (denumit instanță primară), deoarece nu este necesar ca agenții să se conecteze la acesta. Un server principal secundar poate fi configurat pentru a prelua controlul în cazul în care serverul principal cade. Deoarece Ansible utilizează o abordare fără agenți, acesta poate implementa modificări sau poate împinge actualizări relativ rapid către toate nodurile de către un inginer. Un dezavantaj al Ansible este că calculatoarele client nu verifică dacă există modificări periodice ale configurației pe magistrala principală.

Top

Concluzie

În termeni simpli, un manager de configurație oferă un strat de abstractizare între configurația existentă a unui server și starea sa dorită. Acest obiectiv este îndeplinit prin concentrarea mai mult pe un rezultat specific în locul sarcinilor verboase necesare pentru a le realiza.

În analiza noastră a acestor patru produse, dacă căutăm o concluzie bazată doar pe popularitate, câștigătorul clar este Ansible. Acest lucru se datorează faptului că un grup mult mai larg de administratori alege să folosească Ansible ca instrument principal de gestionare a configurației în comparație cu celelalte produse din acest articol. Ansible are avantajele sale, deoarece este orientat mai mult către un rol orientat către SysOps în ceea ce privește structura și paradigma sa. Salt este similar din acest punct de vedere, dar este diferit de Puppet și Chef, deoarece acestea sunt orientate mai mult către dezvoltatori. În plus, Ansible este una dintre opțiunile din această listă mai ușor de instalat, configurat și început să se folosească imediat.

Puppet, pe de altă parte, ar fi cea care este cea mai accesibilă și mai fiabilă din punct de vedere al utilizabilității. Deși, așa cum s-a subliniat anterior, sunt necesare cunoștințe practice de Ruby pentru a profita pe deplin de gama sa largă de caracteristici, structură și scalabilitate. Configurația lui Puppet poate deveni foarte granulară și uneori complicată, dar este cel mai sigur pariu dacă sunteți în căutarea unui mediu software neeterogen.

Dacă sunteți în căutarea unui instrument de configurare care este raționalizat spre o infrastructură mai uniformă, Ansible și Salt ar fi mai potrivite pentru acest obiectiv. Salt în sine este unul dintre cele mai fiabile și mai robuste instrumente de pe această listă, dar este coborât cu o treaptă mai jos din cauza dificultății pe care o are interfața web pentru începători de a înțelege unele dintre opțiunile de configurare mai profunde disponibile. Cu toate acestea, compensează prin opțiunile sale avansate de scalabilitate și un mediu de lucru accesibil din perspectiva SysOps sau a administratorului. Există, de asemenea, mai multe add-on-uri disponibile care îmbunătățesc și extind abilitățile interfeței de utilizare, ceea ce sporește utilizabilitatea și funcționalitatea.

Chef în sine este un instrument foarte simplu și bine conceput. Oferă o abordare îmbunătățită pentru ușurința accesului și un nivel mai mare de practicitate decât Puppet. După cum s-a menționat anterior, Chef poate reprezenta o curbă de învățare notabilă pentru SysOps sau pentru administratorii de sistem care nu au experiență orientată spre dezvoltare, deoarece necesită o înțelegere mai largă a limbajelor de programare și experiență.

În concluzie, Ansible este o alegere directă pentru managementul configurației la nivel de intrare, datorită documentației disponibile, structurii sale și ușurinței de accesibilitate. Puppet este, de asemenea, un instrument solid, dar un utilizator sau o echipă va trebui să învețe noi proceduri și funcții de codare pentru a cuceri curba de învățare mai abruptă atunci când utilizează programarea sa DSL (Domain Specific Language). În ceea ce privește ușurința de utilizare, scalabilitatea și opțiunile pentru mai multe medii, Salt va rezona cel mai clar cu administratorii de sistem care doresc să profite de numeroasele sale opțiuni și de capacitățile de scalare foarte atrăgătoare. Chef are un aspect bine conceput, o structură bine pusă la punct și oferă un nivel considerabil de stabilitate. Este posibil să existe unele dificultăți inițiale în ceea ce privește curba de învățare, deoarece este orientată mai mult către abilitățile unui programator. Toate aceste instrumente îndeplinesc un rol specific atunci când vă configurați infrastructura și stările dorite ale acesteia. Utilizarea lor va depinde în întregime de nevoile dvs. de configurare, de suportul personal și de nivelul de confort necesar pentru a le implementa.

Top

Ne-ar plăcea să ni te alături!

Dați-ne un telefon la 800.580.4985 sau deschideți un chat sau un tichet cu noi pentru a vorbi cu unul dintre consilierii noștri cunoscători în materie de soluții sau de găzduire cu experiență pentru a afla cum puteți profita de aceste tehnici chiar astăzi!

Lasă un răspuns

Adresa ta de email nu va fi publicată.