Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

5 configuration management tool per automatizzare i processi

5 configuration management tool con cui automatizzare i processi per velocizzare il time to market dei nostri progetti.
5 configuration management tool per automatizzare i processi
5 configuration management tool con cui automatizzare i processi per velocizzare il time to market dei nostri progetti.
Link copiato negli appunti

Le tecniche e le strategie di DevOps si stanno evolvendo rapidamente e stanno acquisendo slancio man mano che le aziende scoprono come tali metodologie consentono di produrre applicazioni migliori e ridurre il time to market, ovvero il tempo che intercorre dall'ideazione di un prodotto alla sua effettiva commercializzazione.

Nel dettaglio le DevOps sono una metodologia di sviluppo del software che punta alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle operations, ovvero tutte quelle funzioni di una impresa coinvolte, in senso lato, nella fornitura di un determinato prodotto o servizio per il cliente.

I valori fondamentali delle DevOps sono: Culture, Automation, Measurement e Sharing (CAMS) e possono essere spiegati in questo modo:

  • la cultura unisce persone e processi;
  • l'automazione crea una struttura per le DevOps;
  • la misurazione consente di valutare i miglioramenti;
  • la condivisione abilita il ciclo di feedback CAMS.

Un altro concetto DevOps è l'idea che quasi tutto può essere gestito in modo automatizzato: server, database, reti, file di log, configurazioni di applicazioni, documentazione, test automatici, processi di implementazione, ecc. In questo articolo ci focalizzeremo proprio proprio sull'automatizzazione e del configuration management. Gli strumenti di gestione delle configurazioni consentono l'utilizzo di pratiche di sviluppo software collaudate e comprovate, utili per la gestione e il provisioning dei data center.

Manipolando i file di configurazione, un team DevOps può sfruttare le migliori pratiche di sviluppo delle applicazioni. In breve questo significa che il codice può essere scritto per fornire e gestire un'infrastruttura oltre che per automatizzare i vari processi di sviluppo in generale. Gli strumenti di gestione della configurazione consentono quindi alle modifiche e alle implementazioni di essere più veloci, ripetibili, scalabili, prevedibili e in grado di mantenere lo stato desiderato.

Alcuni vantaggi dell'utilizzo degli strumenti di gestione della configurazione includono:

  • aderenza alle convenzioni di codifica che semplificano la navigazione del codice;
  • idempotenza, il che significa che lo stato finale rimane lo stesso indipendentemente dal numero di volte che il codice viene eseguito;
  • progettazione della distribuzione per migliorare la gestione di un numero elevato di server remoti.

Alcuni strumenti di gestione della configurazione utilizzano un modello definito come pull, in cui un "agente" installato sui server viene eseguito periodicamente per estrarre le definizioni più recenti da un repository centrale e applicarle al server. Altri strumenti utilizzano un modello chiamato push, in cui un server centrale attiva gli aggiornamenti ai server gestiti.

La community open source ha quindi sviluppato numerosi configuration management tool, ognuno di essi con vari punti di forza che li rendono adattati a vari contesti e situazioni.

Ansible

Partiamo da Ansible, è una piattaforma di automazione IT che semplifica l'implementazione di applicazioni e sistemi. Permette di automatizzare il processo di scrittura degli script o di codice personalizzato per implementare e aggiornare le applicazioni, inoltre supporta l'automazione tramite linguaggio naturale o comunque tramite un Inglese estremamente semplificato.

È possibile utilizzare Ansible per eseguire lo stesso comando per un elenco di server direttamente dalla shell. Si possono anche sfruttare dei "playbook", scritti in un file YAML, per automatizzare vari processi, questi file facilitano la comunicazione tra team e non tecnici. Dunque i principali vantaggi di Ansible e che è semplice, agentless e di facile lettura, specialmente per chi non conoscere la programmazione.

Inoltre, i costi di gestione dei server sono minori. La connessione SSH, pienamente supportata, sarà necessaria quando si esegue in modalità push, che è quella di default, mentre la modalità pull è disponibile se necessario. I playbook possono essere scritti con un set minimo di comandi ed è possibile ridimensionarli per attività di automazione più complesse che potrebbero includere ruoli, variabili e moduli scritti da altre persone.

Si può combinare Ansible con altri strumenti per creare una console centrale in modo da controllare i processi. Questi strumenti includono Ansible Works (AWX), Jenkins, RunDeck e ARA, che offrono la tracciabilità durante l'esecuzione dei playbook.

CFEngine

Passiamo a CFEngine, è un popolare sistema di gestione della configurazione open source, la cui funzione principale è quella di fornire la configurazione e la manutenzione automatiche di sistemi informatici su larga scala. CFEngine è stato pensato con un
approccio scientifico alla gestione della configurazione automatizzata.

L'obiettivo dei suoi creatori era quello di gestire l'entropia nella configurazione dei sistemi informatici e risolverla con la "convergenza" dello stato finale. La convergenza è appunto uno stato finale desiderato con l'elaborazione dell'idempotenza.

CFEngine richiede alcune conoscenze specialistiche per gestire le configurazioni, quindi è più adatto ai tecnici.

Chef

Andiamo adesso su Chef, un framework di integrazione dei sistemi, creato per portare i benefici della gestione della configurazione all'intera infrastruttura. Chef utilizza delle "ricette" scritte in Ruby per mantenere la tua infrastruttura sempre aggiornata e conforme.

Le ricette descrivono una serie di risorse che dovrebbero essere in uno stato particolare. Lo chef può eseguire in modalità client/server o in una configurazione autonoma denominata chef-solo.

Ha una buona integrazione con i principali cloud provider per eseguire il provisioning e la configurazione automatica di nuove macchine. Chef dispone di una solida userbase e fornisce un set di strumenti completo per consentire alle persone con background e competenze tecniche diverse di interagire con le ricette.

Puppet

È il turno di Puppet, un motore di amministrazione automatizzato per i sistemi Linux, Unix e Windows, esegue attività amministrative, come ad esempio l'aggiunta di utenti, l'installazione di pacchetti e l'aggiornamento delle configurazioni del server, il tutto basandosi su di una specifica centralizzata.

È stato concepito come uno strumento orientato verso operazioni e amministratori di sistema, negli anni il progetto si è consolidato come strumento di gestione della configurazione. Di solito funziona in un'architettura client-server, ovvero un agente comunica con il server per recuperare le istruzioni di configurazione. Puppet utilizza un linguaggio dichiarativo o Ruby per descrivere la configurazione del sistema ed è organizzato in moduli, i file manifest contengono gli obiettivi dello stato desiderato per mantenere tutto come richiesto.

Puppet implementa il modello push come impostazione predefinita ma può essere usato anche il modello pull.

Salt

Chiudiamo l'articolo con Salt, questo software permette di automatizzare la gestione e la configurazione di qualsiasi infrastruttura o applicazione su vasta scala. Salt è stato creato per la raccolta di dati ad alta velocità ed è capace di scalare su decine di migliaia di server.

Sfrutta dei moduli Python per gestire i dettagli di configurazione e le azioni specifiche, tali moduli gestiscono tutte le operazioni di esecuzione remota e di gestione dello stato di Salt. Per configurare i moduli sono necessarie alcune competenze tecniche dunque è indirizzato a chi già conosce la programmazione Python.

Salt usa una topologia client-server, con Salt master come server e Salt minions come client. Le configurazioni sono conservate in file di stato Salt e descrivono tutto ciò che è necessario per mantenere un sistema nello stato desiderato.

Ti consigliamo anche