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.
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.
Registrati per la guida sulla modernizzazione delle app
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:
Esistono alcuni motivi principali per cui gli sviluppatori scelgono di utilizzare Terraform rispetto ad altri strumenti Infrastructure as Code:
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.
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).
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 sono entrambi strumenti Infrastructure as Code, ma ci sono delle differenze significative tra i due:
IBM® Cloud Schematics favorisce l'automazione offrendo modelli Terraform dichiarativi per l'infrastruttura cloud desiderata.
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.
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.
Un'introduzione all'IaaS, ai suoi componenti, ai vantaggi, ai prezzi e alla sua relazione con PaaS, SaaS, BMaaS, container e serverless.