Puppet, Salt, Chef e Ansible: Un confronto

Tempo di lettura: 8 minuti

Quale è adatto a te?

Tabella dei contenuti

I. Puppet II. SaltStack III. Chef IV. Ansible IV. Conclusione

Introduzione

Configurare un singolo server con il software richiesto è un compito ragionevolmente semplice. Tuttavia, se numerosi server hanno bisogno di avere lo stesso o simili software e configurazioni installate su di essi, il processo richiederebbe numerose ore di lavoro per essere completato, il che esaurirebbe le risorse già impegnate. Senza qualche forma di automazione, questo compito può diventare quasi insormontabile. Con questo compito in mente, sono stati sviluppati nuovi strumenti di gestione della configurazione per affrontare la necessità di distribuire nuovi server con configurazioni e aggiornamenti predefiniti, che hanno permesso un processo di automazione più fluido e gestibile. Per mantenere questi server sincronizzati e per gestire gli aggiornamenti su un’ampia fascia di host in un data center o in un ambiente cloud, strumenti di automazione come Puppet, SaltStack, Chef e Ansible soddisfano questa esigenza.

Scegliere gli strumenti di gestione giusti da utilizzare per la vostra infrastruttura è una decisione critica. Ecco perché stiamo esaminando le opzioni disponibili per questi progetti. Questi strumenti offrono i maggiori benefici sia ai DevOps che ai sysadmin. Speriamo che queste informazioni possano indirizzarvi nella giusta direzione. Mentre è vero che tutti gli strumenti di configurazione menzionati sopra molto probabilmente svolgeranno questi compiti, ognuno offre diverse metodologie e ruoli in modi un po’ diversi per raggiungere questo obiettivo. Questo articolo mira a mostrarvi alcune delle differenze essenziali che ogni piattaforma di gestione del software fornisce. Questo vi permetterà di prendere una decisione più informata in quanto cercheremo di toccare ogni titolo software e i suoi benefici, per poi offrire una panoramica alla fine

.

Puppet

Puppet è uno degli strumenti di gestione più vecchi e affidabili della nostra lista. A causa di questo, offre una base di supporto più ampia all’interno della comunità Puppet così come dal team Puppet. Puppet fornisce anche un’edizione open-source del suo software che può essere installato su una vasta gamma di sistemi operativi. La versione enterprise del software è, tuttavia, in grado di comprendere sistemi più grandi come AIX di IBM o l’hardware F5 Big-IP. Va notato che il server master Puppet può essere installato solo su sistemi operativi Unix/Linux.

Una distribuzione Puppet è di solito composta da un server master e più macchine client (che sono chiamate agenti). Puppet è uno degli strumenti in questa lista che usa il suo linguaggio unico che è basato su Ruby. Il DSL di Puppet (o Domain Specific Language) è usato per descrivere lo stato desiderato del vostro sistema all’interno di un file, che è chiamato un file manifest. I file manifesto sono fondamentalmente un insieme di configurazioni o compiti che determinano come le risorse di rete e del sistema operativo (come servizi, pacchetti e file) sono configurati. Puppet quindi compila i file manifest in cataloghi e spinge ogni catalogo al suo nodo designato in modo che il nodo sia riconfigurato allo stato desiderato in tutta l’infrastruttura.

Puppet offre inoltre un’intuitiva e semplice interfaccia utente basata sul web che viene utilizzata per completare un numero più significativo di attività, compresa la gestione dei nodi in tempo reale. Inoltre, poiché Puppet è impostato in una forma di architettura multi-master, se il master attualmente attivo va giù, un altro master sostituirà il master precedente per evitare una disponibilità degradata.

Puppet aggiorna la configurazione dei nodi facendo controllare ai client il master per i manifesti aggiornati e poi tira giù le nuove configurazioni dal server master. A causa di questa caratteristica, Puppet è più orientato all’amministratore di sistema rispetto a molti degli altri strumenti qui menzionati. Uno svantaggio di Puppet è che non c’è un’esecuzione remota immediata disponibile per i nodi. Inoltre, Puppet ha una curva di apprendimento più ripida, a causa della conoscenza richiesta del DSL Puppet e dei linguaggi di programmazione Ruby.

Top

SaltStack

SaltStack (chiamato anche Salt) è uno degli strumenti più recenti in questa lista. Tuttavia, è ancora molto rilevante nel regno della gestione della configurazione del software. Salt ha una comunità relativamente attiva e un supporto efficace. Salt è progettato per consentire la comunicazione a bassa latenza e ad alta velocità e la trasmissione di dati tra i nodi per l’esecuzione remota. Salt è progettato per funzionare con i sistemi operativi Unix/Linux e Windows, ma il server Master Salt può funzionare solo su sistemi operativi Unix/Linux.

SaltStack è composto da un Salt Master, che è il server Salt centrale, e da client che sono chiamati Salt Minions, che vengono eseguiti come agenti su ciascuna delle macchine nodo. Padroneggiare il linguaggio di Salt è relativamente facile in quanto le configurazioni leggibili dall’uomo usano Python e file YAML, che è una delle strutture dati più naturali e dirette. Mentre Puppet lavora in un modo in cui i nodi richiedono gli aggiornamenti, Salt lavora in opposizione a questo. Il Salt Master spinge tutte le configurazioni a tutte le macchine client. Inoltre, Salt serve come un file server asincrono, che aumenta la velocità dei trasferimenti di file che servono i Salt Minions. La velocità di distribuzione è uno degli obiettivi principali della filosofia di Salt.

Salt può anche funzionare in una configurazione multi-master. Se un server master di Salt va giù, gli agenti si collegheranno ad un altro master elencato nelle configurazioni. Questa caratteristica aumenta la disponibilità complessiva e la ridondanza del sistema nel suo complesso. Un ulteriore vantaggio di Salt è che permette l’esecuzione parallela di più comandi contemporaneamente. Questi comandi sono criptati tramite AES (Advanced Encryption Standard) e inviati ai nodi client tramite il protocollo SSH. Un ultimo vantaggio di Salt è che può gestire più master. Salt offre anche un’interfaccia web; tuttavia, ha capacità e caratteristiche limitate.

Top

Chef

Chef ha iniziato come strumento di distribuzione interna da server a server prima di essere rilasciato come software open-source nel 2009. Un vantaggio significativo di Chef è che offre anche una grande comunità di supporto con ampia documentazione e guida. Il software Chef master e node funziona su entrambi i sistemi Unix/Linux, ma solo le versioni client e workstation possono essere distribuite su server Windows.

Le opzioni di configurazione di Chef consistono in libri di cucina e ricette. Le ricette sono i file di definizione che possono essere combinati con attributi, file, librerie e altre ricette per costruire libri di cucina. Questi ricettari possono poi essere usati per la distribuzione dei client.

Chef consiste di 3 componenti principali:

  • Chef Workstation – La Chef workstation è usata dagli ingegneri di sistema per creare, testare e distribuire i ricettari ai server master Chef.
  • Chef Master Server – I server Chef sono essenzialmente l’hub dove sono memorizzati tutti i dati di configurazione di Chef. Queste informazioni includono ricettari, dati del server e altre informazioni rilevanti.
  • Client Chef – Il client Chef è la macchina end-node gestita dai server master Chef. Questi server periodicamente estraggono ed eseguono le configurazioni dei ricettari dal server master Chef.

Il linguaggio di programmazione di Chef è simile a Puppet, in quanto utilizza un DSL (Domain Specific Language) unico per Chef, ma supporta anche script scritti in Ruby.

Chef è impostato principalmente come un server master Chef, così come un server di backup nel caso in cui il server master Chef centrale vada giù. Se si verifica un’interruzione, il server master di backup sostituirà il server master centrale di Chef. Questo è il modo in cui la ridondanza è incorporata nell’ambiente Chef. Chef offre anche un’ulteriore automazione del cloud e dell’infrastruttura, oltre a flussi di lavoro automatizzati, che vengono utilizzati per fornire una consegna continua alle macchine client. Una stipulazione che dovrebbe essere notata; il linguaggio primario favorisce i programmatori in quanto richiede l’uso del DSL/Ruby oriented scripting nei libri di cucina. Chef e la sua infrastruttura sono molto stabili e costruiti per l’affidabilità. Chef offre anche un ordine di esecuzione sequenziale, al contrario, per esempio, di Salt, che fornisce un’esecuzione parallela.

Top

Ansible

Ansible è uno degli strumenti più moderni utilizzati come soluzione di gestione della configurazione. È probabilmente uno dei software più popolari grazie alla sua semplicità e alla sua configurazione diretta. Come gli strumenti precedenti, Ansible supporta sia macchine client Windows che Unix/Linux, ma il server master Ansible richiede un server basato su Unix/Linux.

In contrasto con gli strumenti precedenti, solo un master Ansible è necessario per funzionare perché Ansible utilizza i protocolli SSH (o RDP per Windows) per aprire una connessione ai server client per eseguire i suoi comandi sequenziali. Ansible è simile a Puppet in quanto i file di configurazione di Ansible sono basati su Python e utilizzano file YAML per i dati strutturati. Questi file sono chiamati Playbook. Ansible supporta anche un’API Python, che può essere utilizzata per rispondere a eventi specifici per esercitare il controllo dei nodi stessi. Ansible può anche essere utilizzato tramite un’interfaccia a riga di comando. Utilizzando un’interfaccia CLI in questo modo non sarebbe necessario l’uso di un file di configurazione se un compito semplice come il riavvio di un server. Per compiti più complessi, è necessario un playbook poiché il server master spinge le informazioni ai nodi client. Ansible è anche adatto per l’esecuzione remota in tempo reale di comandi o di gestione delle applicazioni.

Per quanto riguarda la ridondanza, Ansible è di solito configurato come un singolo server master attivo (indicato come istanza primaria) in quanto non sono richiesti agenti per collegarsi ad esso. Un master secondario può essere configurato per subentrare se il server principale va giù. Poiché Ansible utilizza un approccio senza agenti, può distribuire i cambiamenti o spingere gli aggiornamenti in modo relativamente rapido a tutti i nodi da un ingegnere. Uno svantaggio di Ansible è che i computer client non controllano i cambiamenti periodici di configurazione sul master primario.

Top

Conclusione

In termini semplici, un gestore di configurazione fornisce un livello di astrazione tra la configurazione esistente di un server e il suo stato desiderato. Questo obiettivo viene raggiunto concentrandosi maggiormente su un risultato specifico invece che sui compiti verbosi necessari per realizzarlo.

Nella nostra revisione di questi quattro prodotti, se cerchiamo una conclusione basata solo sulla popolarità, il chiaro vincitore è Ansible. Questo è dovuto al fatto che un gruppo molto più ampio di amministratori sceglie di utilizzare Ansible come strumento primario di gestione della configurazione rispetto agli altri prodotti in questo articolo. Ansible ha i suoi vantaggi in quanto è diretto più verso un ruolo orientato a SysOps per quanto riguarda la sua struttura e il paradigma. Salt è simile in questo aspetto, ma è diverso da Puppet e Chef che sono più orientati agli sviluppatori. Inoltre, Ansible è una delle opzioni più facili in questa lista da impostare, configurare e iniziare ad usare subito.

Puppet, d’altra parte, sarebbe quello che è più accessibile e affidabile dal punto di vista dell’usabilità. Anche se, come sottolineato in precedenza, una conoscenza pratica di Ruby è necessaria per trarre il massimo vantaggio dalla sua vasta gamma di funzioni, struttura e scalabilità. La configurazione di Puppet può diventare molto granulare e talvolta complicata, ma è la scommessa più sicura se state cercando un ambiente software non eterogeneo.

Se state cercando uno strumento di configurazione che sia semplificato verso un’infrastruttura più uniforme, Ansible e Salt sarebbero più adatti a questo scopo. Salt in sé e per sé è uno degli strumenti più affidabili e robusti di questa lista, ma è portato giù di una tacca a causa della difficoltà dell’interfaccia web per i principianti di comprendere alcune delle opzioni di configurazione più profonde disponibili. Tuttavia, compensa questo con le sue opzioni avanzate di scalabilità e un ambiente di lavoro accessibile dal punto di vista del SysOps o dell’amministratore. Ci sono anche molteplici addon disponibili che migliorano ed estendono le capacità dell’UI che migliorano l’usabilità e la funzionalità.

Chef di per sé è uno strumento molto semplice e ben progettato. Offre un approccio migliorato per la facilità di accesso e un maggiore livello di praticità rispetto a Puppet. Come accennato in precedenza, Chef può rappresentare una curva di apprendimento notevole per i SysOps o gli amministratori di sistema che mancano di esperienza orientata allo sviluppo, in quanto richiede una più ampia comprensione dei linguaggi di programmazione e di esperienza.

In conclusione, Ansible è una scelta diretta per la gestione della configurazione entry level a causa della documentazione disponibile, la sua struttura e la facilità di accesso. Puppet è anche uno strumento solido, ma un utente o un team dovrà imparare nuove procedure e funzioni di codifica per conquistare la curva di apprendimento più ripida quando si usa la sua programmazione DSL (Domain Specific Language). In termini di usabilità, scalabilità e opzioni multi-ambiente, Salt risuonerà più chiaramente con gli amministratori di sistema che desiderano approfittare delle sue molte opzioni e capacità di scalabilità molto interessanti. Chef ha un layout ben progettato, una struttura e offre un notevole livello di stabilità. Ci può essere qualche difficoltà iniziale con la curva di apprendimento in quanto è più orientato alle competenze di un programmatore. Tutti questi strumenti svolgono un ruolo specifico nella configurazione della vostra infrastruttura e dei suoi stati desiderati. Il loro utilizzo dipenderà interamente dalle vostre esigenze di configurazione, dal supporto personale e dal livello di convenienza necessario per implementarli.

Top

Ci piacerebbe che ti unissi a noi!

Ci chiami al numero 800.580.4985, oppure apra una chat o un ticket con noi per parlare con uno dei nostri esperti consulenti di Soluzioni o di Hosting esperto per sapere come può trarre vantaggio da queste tecniche oggi stesso!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.