Home topics Cos'è Terraform? Cos'è Terraform?
Esplora Terraform di IBM Abbonati per ricevere gli aggiornamenti cloud
Illustrazione con collage di pittogrammi di monitor del computer, server, nuvole, punti
Cos'è Terraform?

Terraform, un tool open source "Infrastructure as Code" progettato da HashiCorp, consente ai programmatori di creare, modificare e versionare l'infrastruttura in modo sicuro ed efficiente.

Terraform è uno tool di programmazione dichiarativa che consente agli sviluppatori di utilizzare un linguaggio di configurazione di alto livello chiamato HCL (HashiCorp Configuration Language) per descrivere lo "stato finale" desiderato dell'infrastruttura cloud o on-premise per l'esecuzione di un'applicazione. In seguito, genera un piano per raggiungere lo stato finale e lo esegue per effettuare il provisioning dell'infrastruttura.

Terraform utilizza una sintassi semplice che consente di eseguire il provisioning dell'infrastruttura su più cloud e data center on-premise ed eseguire nuovamente il provisioning dell'infrastruttura in modo sicuro ed efficiente in risposta alle modifiche alla configurazione. Per questo motivo Terraform è attualmente uno dei tool di automazione dell'infrastruttura più diffusi e popolari. Se la tua organizzazione prevede di implementare un ambiente cloud ibrido o multicloud, utilizzare Terraform diventa un passaggio quasi obbligato.

Ottieni flessibilità sul posto di lavoro con DaaS

Scopri in che modo il Desktop as a Service (DaaS) consente alle aziende di raggiungere lo stesso livello di prestazioni e sicurezza della distribuzione delle applicazioni on-premise.

Contenuti correlati

Registrati per la guida sulla modernizzazione delle app

Perché scegliere l'IaC (Infrastructure as Code)?

Per comprendere meglio i vantaggi di Terraform, è utile innanzitutto conoscere i vantaggi dell'IaC (Infrastructure-as-Code). L'IaC consente agli sviluppatori di programmare l'infrastruttura in modo da automatizzarne il provisioning, rendendolo più rapido e ripetibile. È un componente chiave delle pratiche Agile e DevOps come il controllo delle versioni, l'integrazione continua e la distribuzione continua.

L'infrastructure as code può aiutare a:

  • Migliorare la velocità: quando si tratta di distribuire e/o connettere risorse, l'automazione è più veloce rispetto alla navigazione manuale di un'interfaccia.

  • Migliorare l'affidabilità: se la tua infrastruttura è grande, è facile sbagliare la configurazione di una risorsa o fornire servizi nell'ordine sbagliato. Con l'IaC, le risorse vengono sempre fornite e configurate esattamente come dichiarato.

  • Prevenire la deriva della configurazione: la deriva della configurazione si verifica quando la configurazione alla base del provisioning dell'ambiente non corrisponde più all'ambiente reale. (vedere "Infrastruttura immutabile")

  • Supporto per la sperimentazione, i test e l'ottimizzazione: poiché la modalità "Infrastructure-as-Code" rende il provisioning di una nuova infrastruttura molto più rapido e semplice, è possibile apportare e testare modifiche sperimentali senza investire molto tempo e risorse; e se i risultati sono soddisfacenti, è possibile scalare rapidamente la nuova infrastruttura per la produzione.
Perché Terraform?

Esistono alcuni motivi principali per cui gli sviluppatori scelgono di utilizzare Terraform rispetto ad altri strumenti Infrastructure as Code:

  • Open source: Terraform è supportato da grandi community di programmatori che offrono il proprio contributo creando plug-in per la piattaforma. Indipendentemente dal provider di cloud che utilizzi, potrai trovare facilmente plugin, estensioni e supporto professionale. Ciò significa anche che Terraform si evolve rapidamente, con nuove funzionalità e miglioramenti costanti.

  • Indipendente dalla piattaforma: significa che può essere utilizzato con qualsiasi provider di servizi cloud. La maggior parte degli altri strumenti IaC sono progettati per funzionare con un unico provider di cloud.

  • Infrastruttura immutabile: la maggior parte dei tool di tipo "Infrastructure-as-Code" creano un'infrastruttura mutabile, il che significa che l'infrastruttura può cambiare per adattarsi ad eventuali modifiche, come un aggiornamento del middleware o l'adozione di un nuovo server per lo storage. Il rischio legato a questo tipo di infrastruttura è la cosiddetta "deriva della configurazione". Ciò significa che man mano si accumulano le modifiche, il provisioning effettivo dei diversi server o di altri elementi dell'infrastruttura si allontana ulteriormente dalla configurazione originale, rendendo difficile la diagnosi e la correzione di bug o problemi di prestazioni. Terraform fornisce un'infrastruttura immutabile, il che significa che ad ogni modifica all'ambiente, la configurazione corrente viene sostituita con una nuova che tiene conto della modifica. L'infrastruttura viene pertanto riconfigurata. Ancora meglio, le configurazioni precedenti possono essere conservate come versioni per abilitare i rollback, se necessario o se così si desidera.
Moduli Terraform

I moduli di Terraform sono delle piccole configurazioni riutilizzabili per più risorse infrastrutturali che vengono utilizzate insieme. I moduli sono utili perché consentono di automatizzare risorse complesse con costrutti riutilizzabili e configurabili. La scrittura di un file Terraform, anche molto semplice, produce un modulo. Un modulo può richiamare altri moduli, chiamati moduli figli, che possono rendere la configurazione di assemblaggio più rapida e concisa. I moduli possono anche essere richiamati più volte, all'interno della stessa configurazione o in configurazioni separate.

Provider di Terraform

I provider di Terraform sono dei plugin che implementano i tipi di risorse. I provider contengono tutto il codice necessario per autenticare un servizio e per connettervisi per conto dell'utente, in genere da un provider di cloud pubblico. È possibile reperire provider per le piattaforme e i servizi cloud utilizzati, aggiungerli alla configurazione e quindi sfruttare le loro risorse per eseguire il provisioning dell'infrastruttura. Sono disponibili provider per quasi tutti i principali fornitori di servizi cloud, offerte SaaS e altro, sviluppati e/o supportati dalla community di Terraform o dalle singole organizzazioni. Per un elenco dettagliato, consulta la documentazione di Terraform (link esterno a ibm.com).

Terraform e Kubernetes a confronto

Talvolta si fa confusione tra Terraform e Kubernetes e su ciò che effettivamente fanno. La verità è che non sono degli strumenti alternativi l'uno all'altro, anzi lavorano efficacemente insieme.

Kubernetes è un sistema di orchestrazione dei container open source che consente agli sviluppatori di pianificare le distribuzioni sui nodi in un cluster di elaborazione, e gestisce attivamente i workload containerizzati per garantire che il loro stato corrisponda alle intenzioni degli utenti.

Terraform, invece, è uno strumento Infrastructure-as-Code con una portata molto più ampia, che consente agli sviluppatori di automatizzare un'infrastruttura completa che si estende su più cloud pubblici e privati.

Terraform può automatizzare e gestire le funzionalità di livello Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) o persino Software-as-a-Service (SaaS) e costruire tutte queste risorse tra tutti questi provider in parallelo. È possibile utilizzare Terraform per automatizzare il provisioning di Kubernetes, in particolare i cluster Kubernetes gestiti su piattaforme cloud, e per automatizzare la distribuzione delle applicazioni in un cluster.

Terraform e Ansible a confronto

Terraform e Ansible sono entrambi strumenti Infrastructure as Code, ma ci sono delle differenze significative tra i due:

  • Mentre Terraform è uno strumento puramente dichiarativo (vedi sopra), Ansible combina sia la configurazione dichiarativa che quella procedurale. Nella configurazione procedurale è possibile specificare i passaggi, o il modo preciso, in cui si desidera eseguire il provisioning dell'infrastruttura allo stato desiderato. La configurazione procedurale richiede più lavoro ma fornisce un maggiore controllo.

  • Terraform è open source, mentre Ansible è sviluppato e venduto da Red Hat®.
Soluzioni correlate
IBM Cloud Schematics

IBM® Cloud Schematics favorisce l'automazione offrendo modelli Terraform dichiarativi per l'infrastruttura cloud desiderata.

Esplora IBM Cloud Schematics
Risorse Cos'è l'IaC (Infrastructure as Code)?

Infrastructure as Code (IaC) automatizza il provisioning dell'infrastruttura, consentendo alle organizzazioni di sviluppare, distribuire e scalare le applicazioni cloud con maggiore velocità, meno rischi e costi ridotti.

Cos'è Kubernetes?

Kubernetes è una piattaforma open source di orchestrazione di container che automatizza la distribuzione, la gestione e la scalabilità delle applicazioni. Scopri perché Kubernetes consente uno sviluppo cloud-native conveniente.

Cos'è l'IaaS (Infrastructure-as-a-Service)?

Un'introduzione all'IaaS, ai suoi componenti, ai vantaggi, ai prezzi e alla sua relazione con PaaS, SaaS, BMaaS, container e serverless.

Fai il passo successivo

Vuoi avviare DevOps? Per fornire software e servizi alla velocità richiesta dal mercato, i team devono iterare e sperimentare rapidamente, distribuire frequentemente nuove versioni ed essere guidati dal feedback e dai dati. I team di sviluppo cloud di maggior successo adottano cultura e pratiche DevOps moderne, architetture cloud-native e assemblano toolchain a partire dagli strumenti migliori della categoria per liberare la propria produttività.

Esplora le soluzioni DevOps Fai una prova gratuita