Panoramica
Red Hat® Ansible® Automation Platform e HashiCorp Terraform sono entrambi prodotti di automazione radicati nell'open source che adottano un approccio Infrastructure as Code (IaC) per l'automazione degli ambienti IT.
La valutazione di queste soluzioni per la tua organizzazione non può limitarsi a un semplice confronto, poiché non esiste un solo modo "giusto" per automatizzare o un solo strumento di automazione da utilizzare, così come non esiste un unico modo per risolvere un problema. Le esigenze della tua azienda sono completamente diverse da quelle di un'altra organizzazione che opera nel tuo stesso settore.
I concetti dell'automazione da conoscere
Durante la ricerca di soluzioni di automazione, hai senza dubbio visto utilizzare molti termini per descrivere le differenze principali e la funzionalità dei prodotti. Definiamo alcuni tra i più comuni e scopriamone le correlazioni tra loro e con Ansible e Terraform.
L'orchestrazione è l'esecuzione coordinata di più flussi di lavoro. Ogni flusso di lavoro esegue una o più attività. Insieme, questi flussi di lavoro automatizzano la configurazione e la gestione di sistemi, applicazioni e servizi complessi. Questo coordinamento in genere si basa su regole prestabilite definite in una policy. Inoltre, l'orchestrazione è in grado di coordinare più soluzioni di automazione. Queste, a loro volta, eseguono i flussi di lavoro dell'automazione.
Sia Ansible che Terraform possono fungere da agenti di orchestrazione, poiché possono invocare più flussi di lavoro di automazione in sequenza, secondo criteri specifici. In Ansible sono disponibili moduli integrati per la connessione e la gestione di altri strumenti di automazione (incluso Terraform). Di conseguenza, puoi standardizzare l'approccio all'automazione in tutto il tuo ambiente IT, usando Ansible come linguaggio principale e comune a tutti i team.
Il provisioning è il processo di creazione e deployment dell'infrastruttura IT per applicazioni e servizi.
Sia Ansible che Terraform possono eseguire il provisioning (e il deprovisioning) dell'infrastruttura IT. Ansible è anche in grado di eseguire il provisioning di app e servizi.
Con gestione della configurazione si intende il processo di definizione e gestione della configurazione di infrastrutture, applicazioni e servizi.
Come molte altre soluzioni di automazione, anche Ansible e Terraform consentono di definire le configurazioni e di applicarle a vari target dell'infrastruttura. Tuttavia, il loro approccio alla gestione della configurazione è diverso. Terraform utilizza un approccio noto come programmazione dichiarativa, che tenta di preservare la configurazione di un'infrastruttura IT definendo una condizione target. 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. Ciascun processo è descritto in dettaglio di seguito.
Un approccio Infrastructure as Code (IaC) definisce e predispone il provisioning dell'infrastruttura mediante un codice che verrà eseguito automaticamente anziché tramite processi manuali. Considerando un'infrastruttura IT come codice, le organizzazioni possono automatizzare le attività di gestione, sfruttando le best practice di sviluppo software e riducendo gli errori umani.
Sia Ansible che Terraform sono strumenti IaC, anche se, come accennato, la programmazione utilizzata da ciascuna soluzione è diversa.
Programmazione dichiarativa è un metodo di scrittura del codice che prevede di descrivere il risultato desiderato di un programma invece di specificare come raggiungerlo. È incentrata sullo stato finale, anziché sui comandi e sui passaggi specifici necessari per raggiungerlo.
Terraform utilizza l'Hashicorp Configuration Language (HCL) come linguaggio di automazione e approccio alla programmazione dichiarativo. Di conseguenza, la sequenza di comandi che Terraform deve eseguire per apportare le modifiche richieste alla configurazione non è visibile o nota all'utente finale.
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. Per l'automazione, Ansible utilizza 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.
Ansible può essere sia dichiarativo che procedurale: molti moduli funzionano in modo dichiarativo, mentre altri preferiscono un approccio di programmazione procedurale. Inoltre, alcuni costrutti nel linguaggio Ansible, come condizionali e loop, consentono agli utenti di definire una logica procedurale. Grazie a questo mix, puoi concentrarti su ciò che devi fare, piuttosto che aderire rigorosamente a un paradigma.
Con immutabilità della configurazione si intende che la configurazione (di un'infrastruttura o di un'applicazione) non può essere modificata. Per eseguire il provisioning della versione più recente di un'app, ad esempio, è necessario eliminare e sostituire la versione precedente, anziché modificarla e aggiornarla. Le risorse vengono distrutte e ricreate automaticamente.
Terraform adotta un approccio immutabile per l'infrastruttura, che consente agli utenti di muovere rapidamente i primi passi grazie alla possibilità di utilizzare con facilità le risorse, effettuare test e procedere allo smantellamento. Tuttavia, a seconda delle dimensioni dell'infrastruttura, gestirla può diventare complesso e difficile. Sebbene Ansible sia stato progettato presupponendo la mutabilità della configurazione, alcuni flussi di lavoro dell'automazione possono essere progettati in modo da adottare un approccio immutabile.
Con mutabilità della configurazione si intende che la configurazione (di un'infrastruttura o di un'applicazione) può essere modificata. Ad esempio, è possibile eseguire il provisioning delle versioni più recenti delle applicazioni aggiornando o modificando la risorsa esistente, senza eliminarla o sostituirla.
Ansible è stato progettato presupponendo la mutabilità della configurazione. Il vantaggio di questo approccio sta nel fatto che i flussi di lavoro dell'automazione sono semplici da capire e risolvere i problemi è facile. In alcuni scenari, tuttavia, può essere complesso eseguire il deprovisioning delle risorse senza conoscere la sequenza corretta delle operazioni.
L'errore di configurazione si verifica quando un'infrastruttura cambia a causa di modifiche manuali, non approvate o non monitorate nel tempo, e tali modifiche non vengono registrate o tracciate sistematicamente. Spesso i cambiamenti sono dovuti a situazioni di emergenza o a un'eccessiva complessità, fattori che possono dissuadere i dipendenti dal seguire il processo stabilito. Di conseguenza, gli errori di configurazione sono frequenti nelle organizzazioni di grandi dimensioni.
Un approccio IaC aiuta a eliminare gli errori, ma è fondamentale un'ulteriore gestione degli errori. Ansible ti aiuta a contrastare gli errori con gli Ansible Playbook (flussi di lavoro di automazione) che possono essere impostati in modo da rilevarli. Quando viene rilevato un errore, invia una notifica alla persona incaricata che può apportare le modifiche necessarie e riportare il sistema allo stato di riferimento.
L'approccio di programmazione procedurale adottato da Ansible consente agli sviluppatori di comprendere più facilmente quando e dove sta cambiando la loro configurazione di automazione, accelerando l'isolamento di una parte specifica della configurazione e la correzione degli errori. A seconda della complessità dell'infrastruttura IT, modificare la configurazione delle soluzioni di automazione che utilizzano un approccio di programmazione dichiarativo (come Terraform) può risultare molto più complesso. Di conseguenza, a volte le organizzazioni IT preferiscono utilizzare Ansible per eseguire semplici modifiche alla configurazione, piuttosto che riconfigurare un intero sistema IT in modo olistico con una soluzione come Terraform.
Scegli la soluzione di automazione più adatta alle tue esigenze
La domanda più appropriata potrebbe essere: "Di cosa ha bisogno la tua azienda per lo scenario di utilizzo specifico?" È necessario valutare le sfide e i requisiti specifici della propria azienda e scegliere la soluzione o le soluzioni più adatte. Alcuni problemi sono più adatti a un approccio, mentre altri possono essere risolti meglio con un altro. A volte, una combinazione di soluzioni è la chiave del successo.
Automazione del provisioning
Sebbene sia Terraform che Ansible Automation Platform siano le soluzioni di automazione più diffuse e gli strumenti DevOps più amati, queste due soluzioni presentano capacità molto diverse. Terraform è specializzata nel provisioning di infrastrutture di cloud pubblico, uno dei tanti scenari di utilizzo nel mondo dell'automazione IT, mentre Ansible Automation Platform si occupa di una vasta gamma di scenari di utilizzo dell'automazione. Anziché un approccio unico all'automazione, Ansible Automation Platform offre una gamma di approcci per affrontare una serie di problemi. E se i nostri clienti riscontrano un problema particolare, che può essere risolto al meglio con la combinazione di due soluzioni di automazione, Ansible Automation Platform è in grado di integrarsi con altri prodotti dei principali provider di cloud, come Amazon Web Services (AWS) CloudFormation, Microsoft Azure Resource Manager e Google Cloud Platform (GCP) Cloud Deployment Manager, oltre a Helm e Terraform.
Molti dei nostri clienti utilizzano più soluzioni di automazione contemporaneamente. Durante il deployment delle applicazioni nel cloud, ad esempio, spesso eseguono il provisioning dell'infrastruttura cloud con CloudFormation o Terraform, quindi effettuano la configurazione delle applicazioni e dei processi con Ansible Automation Platform. Per incrementare l'efficienza di questo processo, di recente abbiamo lanciato una Red Hat Ansible Certified Content Collection per Terraform. Questa raccolta supportata da Red Hat automatizza la gestione e il provisioning dell'IaC utilizzando Terraform in un ambiente di esecuzione Ansible Automation Platform.
Altri clienti investono esclusivamente in Ansible Automation Platform perché non desiderano automatizzare solo gli scenari di utilizzo del deployment cloud. Ad esempio, potrebbero voler automatizzare i processi di sicurezza, come l'indagine sulle minacce o la risposta agli incidenti, e i processi di rete, come la riconfigurazione di router e switch.
Questi clienti desiderano standardizzare il proprio approccio all'automazione in tutti gli scenari di utilizzo, al fine di massimizzare il ritorno sull'investimento.
Automazione del cloud
Leggi le opinioni di clienti, partner e analisti su Ansible Automation Platform.
Terraform e Ansible: è davvero una competizione?
Con la gamma di prodotti disponibili per l'automazione di livello enterprise, è fondamentale comprendere le caratteristiche, le funzionalità e, soprattutto, capire qual è la soluzione più adatta alle esigenze specifiche della tua organizzazione.
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. È sviluppato sulle fondamenta della community Ansible, che si avvale dell'esperienza e dei contributi di migliaia di collaboratori in tutto il mondo. Ansible Automation Platform è una soluzione progettata per aiutare le organizzazioni a creare, gestire e rendere scalabili i carichi di lavoro dell'automazione. Offre una base flessibile, stabile e orientata alla sicurezza per il deployment di soluzioni di automazione end to end, compresa l'automazione del cloud ibrido, dell'edge computing, delle reti, della sicurezza, dell'infrastruttura e molti altri scenari di utilizzo.
Terraform è uno strumento eccellente per il provisioning e il deprovisioning di un'infrastruttura cloud con un approccio IaC. È uno strumento specifico con uno scopo preciso. Ansible offre una soluzione di automazione universale e multidominio. Entrambi dispongono di community open source attive e prodotti commerciali downstream ben supportati. Ogni soluzione ha i propri punti di forza e, se combinate, si integrano al meglio e migliorano l'efficienza di molte aziende. In parole povere, la scelta di una soluzione di automazione non è sempre basata sull'esclusione di un prodotto, ma spesso sulla coesistenza di più prodotti.
Report di IDC: Il valore di business di Ansible Automation Platform
Secondo la ricerca di IDC, le organizzazioni che hanno scelto la standardizzazione delle operazioni utilizzando Ansible Automation Platform riscontrano un significativo miglioramento nell'efficienza delle operazioni IT, nella velocità e nella scalabilità, con un vantaggio economico del valore medio annuale di 14,81 milioni di USD e un ROI, calcolato su base triennale, del 668%.