Vai al paragrafo

Ansible e Puppet

Copia URL

Ansible e Puppet sono strumenti open source per l'automazione dell'IT sviluppati dalla community. Entrambi sono in grado di semplificare le operazioni IT e DevOps automatizzando le attività di routine come la configurazione e il provisioning dei sistemi, il deployment dei software e la gestione degli aggiornamenti su numerosi server e dispositivi endpoint.

Ansible è uno strumento di facile utilizzo poiché, grazie all'approccio agentless, non richiede l'installazione di software aggiuntivi sui target da automatizzare. Open Source Puppet e Puppet Enterprise sono invece soluzioni basate su agente e richiedono l'installazione di un software aggiuntivo su ciascuna macchina. Ansible e Puppet si distinguono anche nell'approccio all'automazione stessa: Ansible utilizza un linguaggio leggibile in chiaro per i file di configurazione e l'automazione procedurale (definisce i passaggi da eseguire in ordine), mentre Puppet utilizza un Domain-Specific Language (richiede la conoscenza del linguaggio di programmazione Ruby) e l'automazione dichiarativa (definisce la condizione target).

Questo articolo illustra in maniera approfondita le analogie e le differenze fra Ansible e Puppet.

Ansible

Ansible è un'applicazione software open source a riga di comando per l'automazione dell'IT scritta in linguaggio Python. È in grado di configurare i sistemi, distribuire i software e orchestrare i flussi di lavoro avanzati per supportare il deployment delle applicazioni, gli aggiornamenti di sistema e altre attività. Red Hat Ansible Automation Platform è un prodotto acquistabile tramite sottoscrizione che si basa sulla tecnologia Ansible integrata da numerose funzionalità pensate per le aziende.

Il vantaggio che contraddistingue Ansible è la community. Il suo repository GitHub principale, da cui dipendono decine di migliaia di altri repository, attira migliaia di contributori (informazioni aggiornate all'autunno 2022). Ogni anno viene organizzato l'AnsibleFest, una conferenza dedicata agli utenti, e si tengono Ansible Meetup regolarmente in tutto il mondo. Questa community conta su un elevato numero di esperti e contributori che collaborano per garantire la completa e costante integrazione di Ansible con i progetti software più importanti. Inoltre, gli utenti hanno accesso a centinaia di moduli e plugin con cui possono ampliare le funzionalità di Ansible.

Ansible è pensato prettamente per offrire facilità di utilizzo, ma anche per garantire sicurezza e affidabilità, come dimostra il numero di parti mobili ridotto al minimo. Utilizza OpenSSH per il trasporto (ma sono disponibili anche altre modalità di trasporto e pull) e un linguaggio leggibile in chiaro (YAML) per gli Ansible Playbook, modelli che non richiedono particolare formazione e mettono quindi i team in condizione di utilizzare Ansible fin da subito.

Il funzionamento di Ansible prevede un nodo di controllo (il punto da cui si esegue Ansible) e una serie di nodi gestiti (gli endpoint da automatizzare) che possono essere server Linux®, server Windows, dispositivi di rete e altre piattaforme containerizzate, di cloud pubblico, virtuali o bare metal. Dato che è agentless, Ansible è in grado di comunicare con un gran numero di endpoint senza installare applicazioni o servizi sui nodi gestiti. Questa si dimostra una soluzione valida in contesti dove sono presenti ad esempio sistemi chiusi, come router o switch di rete, sui quali non è possibile installare agenti software. 

Ansible utilizza un approccio di programmazione procedurale (o imperativo), che tenta di preservare la configurazione di un'infrastruttura IT definendo i passaggi per raggiungere la condizione target.

Puppet

Open Source Puppet è un'applicazione open source per l'automazione dell'IT scritta in linguaggio Ruby e commercializzata in diverse soluzioni fra cui Puppet Enterprise. Il suo vantaggio principale è la scalabilità. Puppet utilizza un approccio basato su modelli con esecuzione delle attività imperativa ed è concepito per l'automazione delle infrastrutture ibride su larga scala.

Anche Puppet dispone di una community open source attiva ma con meno collaboratori e meno progetti rispetto ad Ansible e un numero di contributi al suo repository principale in forte calo, stando ai dati di GitHub dell'autunno 2022.

Il funzionamento di Puppet è diverso da quello di Ansible. Per quanto preveda anche funzionalità agentless, Puppet viene eseguito principalmente come soluzione basata su agente, il che significa che richiede l'installazione di un software su ogni dispositivo che gestisce.

Puppet utilizza un approccio di programmazione dichiarativo: l'utente definisce la condizione target delle macchine da gestire utilizzando un Domain-Specific Language (DSL) e Puppet automatizza i passaggi necessari per far sì che i sistemi raggiungano la condizione definita. In questo caso gli strumenti necessari per gestire l'automazione sono un server principale (dove si archiviano le condizioni definite) e un agente Puppet (che viene eseguito sui sistemi specificati).

Architettura basata su agente è un modello di infrastruttura e automazione che prevede di eseguire componenti software specifici, chiamati agenti, sull'inventario da gestire. È necessario che l'agente e tutte le sue dipendenze siano installati su ogni nodo target; questo comporta controlli e regole di sicurezza aggiuntivi. Un simile modello si rivela inefficace in tutti i contesti dove gli oggetti da automatizzare non permettono l'installazione e l'esecuzione di un agente. Richiede inoltre che le organizzazioni tengano conto della manutenzione degli agenti all'interno del ciclo di vita del supporto alla manutenzione.

Architettura agentless, quella utilizzata da Ansible, è un modello per l'automazione e la gestione di dispositivi IT che non richiede di installare alcun software agente negli ambienti gestiti. Il software di controllo si connette alle macchine remote tramite connessioni SSH standard e sicure ed è immediatamente in grado di gestirle senza dover attendere un lungo processo di configurazione. Questa architettura elimina la necessità di mantenere un sistema per il deployment degli agenti una volta completati il provisioning e la configurazione.

Programmazione dichiarativa è un metodo di scrittura del codice che prevede di descrivere il risultato desiderato di un programma invece di specificare come raggiungerlo. Utilizza un linguaggio dichiarativo e si concentra sulla condizione target, anziché sui comandi e sui passaggi specifici necessari per raggiungerla. 

Programmazione procedurale o imperativa è un metodo di scrittura del codice che prevede di fornire al computer l'elenco di istruzioni dettagliate necessarie al completamento di un'attività. Si concentra sul processo e non sul risultato finale. Il linguaggio di automazione utilizzato da Ansible è YAML, un linguaggio per la serializzazione dei dati leggibile in chiaro. La sintassi YAML viene interpretata ed eseguita in modo procedurale, ciò significa che il flusso di lavoro di automazione viene eseguito nella sequenza in cui è stato scritto.

Quando si sceglie una soluzione di automazione occorre valutare non solo le funzionalità di cui dispone il software al momento, ma anche le prospettive di sviluppo della piattaforma a lungo termine. Ansible si distingue per la sua community open source molto attiva e per il supporto commerciale di Red Hat.

Al giorno d'oggi è normale utilizzare più soluzioni di automazione. Ansible si connette a un ampio ecosistema di integrazioni e si può utilizzare insieme a molti altri strumenti di gestione dell'automazione e della configurazione, come agente di orchestrazione degli strumenti di automazione. È possibile utilizzare Ansible per automatizzare i sistemi su hyperscaler del cloud pubblico come Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform e molti altri.

Rispetto a Puppet, Ansible è la scelta ideale per gli utenti che desiderano sfruttare le competenze e le conoscenze esistenti, che danno priorità alla facilità di utilizzo e che cercano una soluzione di automazione agentless. Adottato da moltissime aziende, dispone inoltre di un'ampia community di contributori ed è molto apprezzato perché facile da integrare con altre soluzioni.

Red Hat Ansible Automation Platform, basata su tecnologie open source, è un prodotto acquistabile tramite sottoscrizione, potenziato e testato che offre alle organizzazioni un supporto completo per il ciclo di vita. Il suo progetto upstream, Ansible, è il risultato dell'esperienza e della competenza di migliaia di collaboratori in tutto il mondo. 

Ansible Automation Platform include numerosi componenti upstream, oltre 130 raccolte Red Hat Ansible Certified Content Collections fornite da più di 60 partner e strumenti as-a-Service per aumentare il ritorno sull'investimento (ROI), che semplificano l'installazione, la configurazione e il supporto dell'automazione negli ambienti aziendali. Offre un'esperienza di automazione end to end per i team interfunzionali, oltre a garantire un'esperienza plug and play per gli sviluppatori, gli ingegneri e i team operativi che si occupano di automazione.

Le funzionalità di Red Hat Ansible Automation Platform, come Red Hat Insights e automation analytics, forniscono informazioni accessibili sulle prestazioni dell'automazione, permettendoti di misurarne gli effetti e di monitorarne o risolverne i problemi in modo più preciso ed efficace. L'Automation Mesh offre funzionalità di controllo ed esecuzione scalabili in modo indipendente, fornendo così l'automazione vicino agli endpoint che la richiedono, con tempi di fermo minimi o nulli. Ciò permette di ottenere un'esperienza di automazione coerente ovunque, nel datacenter, nel cloud e all'edge della rete.

Tra le diverse opzioni per l'automazione dell'IT, Ansible si distingue per la sua semplicità, il suo approccio agentless e la sua ampia community di utenti.

Continua a leggere

Articolo

I concetti base di Ansible

Ansible consente di automatizzare i processi IT, come il provisioning e la gestione della configurazione. Questo articolo fornisce un'introduzione ai concetti base di Ansible.

Articolo

Cos'è la gestione dei processi aziendali?

La gestione dei processi di business (BPM, business process management) consiste nella creazione di modelli di business, nell'analisi e nell'ottimizzazione dei processi aziendali end to end per realizzare i tuoi obiettivi aziendali strategici.

Articolo

Perché scegliere Red Hat per l'automazione

Red Hat Ansible Automation Platform include tutti gli strumenti necessari per condividere le competenze di automazione tra i team e adottare l'automazione a livello aziendale.

Scopri di più sull'automazione

Prodotti

Collabora con il nostro team di consulenti strategici in grado di analizzare l'azienda nel suo insieme e valutare le sfide da affrontare, per aiutarti a superarle con soluzioni complete e convenienti.

Una piattaforma per implementare l'automazione in azienda, in qualsiasi fase del tuo percorso di trasformazione

Risorse

Ebook

L'azienda automatizzata connette persone e processi

Ebook

Automazione dei flussi di lavoro dell'infrastruttura

Continua a leggere

Formazione

Corso di formazione gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Corso di formazione gratuito

Red Hat Ansible Automation for SAP