Panoramica
Ansible® e Hashicorp Terraform sono due strumenti open source che adottano un approccio Infrastructure as Code (IaC) all'automazione degli ambienti IT. Entrambi sono fondamentali per la gestione dell'infrastruttura, ma svolgono ruoli diversi e specifici all'interno del ciclo di vita dell'automazione.
Terraform è uno strumento di IaC dedicato progettato per realizzare, modificare e gestire l'infrastruttura in modo sicuro e ripetibile. Ansible è un motore di automazione IT multifunzionale realizzato per configurare sistemi, sviluppare software e orchestrare attività complesse tra server, dispositivi di rete, strumenti per la sicurezza e ambienti ibridi. Le strategie di automazione moderne più efficaci utilizzano in concomitanza Terraform e Ansible per ottenere una gestione completa del ciclo di vita dell'infrastruttura.
Le organizzazioni di grandi dimensioni spesso passano da Ansible open source di base alla Red Hat® Ansible Automation Platform per gestire le proprie iniziative di automazione in maniera scalabile. Ansible Automation Platform offre in più funzionalità di livello aziendale, tra cui governance centralizzata, automation analytics e supporto ufficiale. Grazie alla capacità di realizzazione dell’infrastruttura di Terraform, alle funzionalità di configurazione di Ansible e al supporto di Ansible Automation Platform per l’automazione scalabile, i team possono sviluppare una strategia di automazione completa ed efficace.
Cosa si intende con Infrastructure as Code (IaC)?
In passato, il provisioning di nuovi ambienti IT era un'operazione costosa, impegnativa in termini di tempo e che veniva svolta manualmente. Quando la virtualizzazione, i container e il cloud computing hanno portato a modifiche sempre più numerose e frequenti dell'infrastruttura, il ricorso a processi manuali è diventato insostenibile.
Questo è il contesto in cui si inserisce la IaC.
La IaC è un processo di gestione e provisioning dell'infrastruttura IT tramite un codice leggibile dalle macchine anziché attraverso una configurazione manuale o una manipolazione dell'hardware.
L'adozione della IaC migliora radicalmente la collaborazione tra gli sviluppatori e i team operativi. Anziché fare clic sui pulsanti di una console cloud o affidarti a script ad hoc, puoi creare file di configurazione con specifiche complete dell'infrastruttura. A prescindere dalla fase in cui ti trovi, implementazione in fase di sviluppo, di staging o di produzione, potrai fornire lo stesso ambiente in modo coerente ogni volta. Codificando e documentando la tua infrastruttura in file che è possibile modificare, distribuire e sottoporre a un controllo di versione, la IaC aiuta a eliminare gli errori, ad accelerare i deployment e a impedire le modifiche non documentate che portano a errori di configurazione.
Possiamo affermare che alla base dell’approccio DevOps e della strategia cloud moderni, risiede la IaC. Tale metodologia definisce l'infrastruttura attraverso un codice eseguito automaticamente, pertanto per tradurre tali file in un'infrastruttura funzionante servono strumenti specifici. Ansible, Red Hat Ansible Automation Platform e Terraform aiutano a ottimizzare e a ottenere più vantaggi dalla IaC: Terraform serve prettamente per realizzare l'infrastruttura, mentre Ansible configura i componenti eseguibili al suo interno.
Risorse da Red Hat
Quali sono le analogie tra Ansible e Terraform?
Sebbene siano progettati per scopi precisi e diversi del ciclo di vita dell'automazione, Terraform e Ansible presentano notevoli somiglianze che determinano la loro efficacia.
Progettazione agentless
Ansible e Terraform condividono un'architettura moderna e semplificata dall'esecuzione più semplice rispetto a quella dei sistemi di automazione più tradizionali. Trattandosi di soluzioni agentless, non è necessario installare software specifici o agenti permanenti sui server o sulle risorse che gestiscono, il che semplifica significativamente la configurazione. Terraform comunica prevalentemente tramite le interfacce di programmazione delle applicazioni (API) dei fornitori di servizi cloud, mentre Ansible esegue le attività utilizzando protocolli standard come Secure Shell (SSH) e API per comunicare con nodi gestiti.
Ecosistema open source e di community
Sia Ansible che Terraform sono progetti open source di base con un ampio bacino di utenti attivi. Questo ecosistema di community offre librerie di grandi dimensioni di contenuti pronti all'uso. Grazie a migliaia di provider, Terraform può interfacciarsi con quasi ogni tipo di cloud pubblico e piattaforma. Analogamente, Ansible offre moduli e playbook per quasi tutte le attività di configurazione. Ciò aiuta i team che utilizzano entrambi gli strumenti a trovare rapidamente soluzioni e supporto tra colleghi.
Approccio all’automazione
Entrambi gli strumenti condividono l'obiettivo di automatizzare l'infrastruttura. Sebbene progettati per compiti distinti, possono assolvere alla stessa funzione; ad esempio, Ansible può svolgere attività di provisioning, mentre Terraform può eseguire script di configurazione di base. Ciò significa che entrambi contribuiscono al raggiungimento dello stesso obiettivo, trasformando processi IT manuali e passibili di errori in un codice coerente e ripetibile. Grazie a questo scopo comune, Ansible e Terraform possono essere utilizzati in concomitanza per automatizzare l'intero flusso di lavoro.
Automatizza il deployment delle applicazioni, ottimizza l'infrastruttura e supporta aggiornamenti continui e la risoluzione dei problemi con Ansible e Terraform. Durata del video: 2:46.
Quali sono le differenze tra Ansible e Terraform?
Sono due tipologie di IaC, ma progettati in modo diverso per svolgere le loro funzioni primarie. Comprendere queste distinzioni ti permette di scegliere lo strumento più adatto per un'attività o di decidere come integrarli tra loro.
Dichiarativo e procedurale a confronto
La differenza principale risiede nelle modalità di interazione con ciascuno strumento:
- Terraform utilizza il HashiCorp Configuration Language (HCL), un linguaggio di configurazione dichiarativo. "Dichiarativo" significa che è l’utente a definire la condizione target desiderata, ovvero il tipo di infrastruttura. Il motore di Terraform, quindi, determina automaticamente i passaggi necessari per raggiungere tale condizione, gestendo tutte le dipendenze.
- Ansible ha un approccio all'automazione prevalentemente procedurale (o imperativo). Utilizza playbook scritti in YAML comprensibile. "Approccio procedurale" significa che è l’utente a definire esplicitamente passo dopo passo le istruzioni per ottenere il risultato desiderato. Poiché l'ordine di esecuzione è chiaro, questo approccio basato sulle attività consente di controllare con precisione e semplificare la risoluzione dei problemi. Tuttavia, molti moduli alla base di Ansible agiscono anche in modo dichiarativo, effettuando modifiche solo se il sistema target non è già nello stato di configurazione desiderato.
Stateful e stateless a confronto
Questa differenza influisce sul modo in cui ciascuno strumento visualizza e monitora l'infrastruttura nel tempo:
- Terraform è stateful. Mantiene un file di stato che si comporta come unica fonte di attendibilità (SSOT), tracciando ogni risorsa infrastrutturale che fornisce e la sua configurazione corrente. Il file di stato è fondamentale, perché consente a Terraform di gestire l'intero ciclo di vita di una risorsa in modo da poter fornire, adattare con scalabilità o dismettere le risorse in modo affidabile quando non sono più necessarie.
- Ansible è per lo più stateless. Non mantiene un file di stato permanente che traccia l'intera infrastruttura. Si basa invece sull'idempotenza, ovvero la garanzia che l'esecuzione ripetuta dello stesso compito produrrà lo stesso risultato senza apportare modifiche non necessarie. Ansible ottiene la configurazione desiderata interrogando direttamente il sistema di destinazione prima di apportare una modifica.
Immutabile e mutevole a confronto
Gli strumenti sono progettati su approcci diversi per gestire gli aggiornamenti dell'infrastruttura:
- Terraform preferisce un'infrastruttura immutabile, o immodificabile. Se hai bisogno di effettuare modifiche o aggiornamenti sostanziali, Terraform spesso preferisce eliminare la vecchia risorsa a favore di una nuova, configurata correttamente. Questa strategia riduce il rischio di errori di configurazione complessi che possono accumularsi nel tempo.
- Ansible è realizzata per un'infrastruttura mutevole, il che significa che è ideale per apportare modifiche in loco a sistemi esistenti e in esecuzione. Ciò è necessario per le attività di configurazione e manutenzione, come l'applicazione di patch di sicurezza, l'esecuzione di aggiornamenti del sistema operativo o la regolazione delle impostazioni del firewall su un server che non è facilmente sostituibile.
Errori di configurazione
Gli errori di configurazione si verificano quando l'infrastruttura in esecuzione in produzione si discosta da quanto definito nel codice sorgente. Entrambi gli strumenti gestiscono questo aspetto, ma in modo diverso:
- Terraform utilizza il suo file di stato permanente per rilevare attivamente il drift. È in grado di confrontare l'infrastruttura attualmente in esecuzione con il file di stato e segnalare immediatamente eventuali discrepanze.
- Ansible in genere mitiga il drift mantenendosi costantemente in esecuzione e affidandosi ad attività idempotenti in modo da garantire sempre la configurazione desiderata. Ciò impedisce al sistema di discostarsi troppo dallo stato previsto.
Come utilizzare Ansible e Terraform insieme
La conclusione principale che si ottiene dal confronto tra Terraform e Ansible è che utilizzare i due strumenti in parallelo è più efficace rispetto a sceglierne uno solo. Sfruttando i punti di forza di ciascuno, le organizzazioni possono raggiungere un'automazione completa, dal momento in cui viene fornita l'infrastruttura fino alla distribuzione e alla configurazione continue delle applicazioni.
Gestione del ciclo di vita
La pratica più diffusa è un passaggio diretto e sequenziale tra gli strumenti. Terraform gestisce il provisioning della fase 0 (o installazione), creando infrastrutture cloud come server e reti. Una volta predisposta l'infrastruttura, Ansible subentra per la fase 1 della configurazione applicando criteri di sicurezza, installando i software necessari e distribuendo il codice dell'applicazione all'interno di quelle nuove risorse. Ansible gestisce anche le operazioni di fase 2 come il patching, gli aggiornamenti e le modifiche alla configurazione.
Orchestrazione con Ansible
Nel caso di flussi di lavoro complessi, Ansible Automation Platform può fungere anche da agente di orchestrazione centrale, integrando l'esecuzione di Terraform in un processo di automazione più ampio. Ansible Automation Platform può eseguire attività di pre-provisioning e attivare un deployment di Terraform per realizzare l'infrastruttura. Può anche svolgere attività di post-provisioning, come la configurazione delle applicazioni, integrandosi con strumenti di gestione dei servizi IT (ITSM) come ServiceNow ai fini della tracciabilità.
Integrazioni tra Terraform e Ansible Automation Platform
Red Hat offre una raccolta certificata di contenuti Terraform per Ansible, che include moduli per favorire la gestione e il provisioning di IaC utilizzando HashiCorp Terraform (HCP Terraform e Terraform Enterprise). La raccolta supporta funzionalità di automazione simili ad altre integrazioni di strumenti di provisioning del cloud per Ansible, come AWS CloudFormation, Azure Resource Manager e Helm.
Inoltre, Hashicorp offre un provider Terraform per l'interazione con Ansible. Un provider Terraform è un plug-in che aggiunge risorse e sorgenti di dati che Terraform è in grado di gestire. È necessario dichiarare i provider nella configurazione di Terraform, in modo che Terraform possa installarli e utilizzarli. Il provider di Ansible per Terraform consente a Terraform di gestire direttamente l'inventario di Ansible. Anziché richiedere plug-in di inventario separati per raccogliere manualmente le informazioni relative alle infrastrutture appena fornite e trasmetterle ad Ansible, il provider automatizza il trasferimento. Gli utenti possono definire direttamente l'utilizzo di un inventario di Ansible all'interno della configurazione di Terraform, consentendo ad Ansible Playbook di eseguire attività di configurazione sui nuovi host subito dopo la creazione.
Perché utilizzare Red Hat Ansible Automation Platform?
Gli strumenti open source Terraform e Ansible forniscono una base per la IaC. Tuttavia, la scalabilità e la governance di questi flussi di lavoro integrati all'interno di grandi organizzazioni introduce sfide rilevanti a livello di sicurezza e coerenza. Red Hat Ansible Automation Platform riduce questa complessità, trasformando l'automazione della community in una soluzione strategica per le aziende. Offre il controllo centralizzato necessario per gestire processi di automazione complessi che comprendono sia il provisioning di Terraform che la configurazione continuativa di Ansible.
Ansible Automation Platform, basata su tecnologie open source, è un prodotto affidabile acquistabile tramite sottoscrizione che offre alle organizzazioni un supporto completo per l'intero ciclo di vita. Si basa su Ansible sviluppato dalla community, che si avvale dell'esperienza e dei contributi di migliaia di collaboratori in tutto il mondo. Ansible Automation Platform aiuta 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 per cloud ibrido, ubicazioni all'edge, reti, sicurezza, infrastruttura e molti altri scenari di utilizzo.
A che punto è la tua strategia di sovranità digitale? Introduzione al Red Hat Sovereignty Readiness Assessment Tool
Il Red Hat Sovereignty Readiness Assessment Tool è uno strumento per l’autovalutazione accessibile dal web, che fornisce una base di riferimento chiara e obiettiva del controllo digitale della tua organizzazione in sette ambiti fondamentali.