Terraform

menu icon

Terraform

Questa guida evidenzia tutto ciò che devi sapere su Terraform, uno strumento che consente ai programmatori di creare, modificare e controllare le versioni dell'infrastruttura in modo sicuro ed efficiente.

Cos'è Terraform?

Terraform è uno strumento IaC (Infrastructure as Code) open source creato da HashiCorp.

Uno strumento di codifica dichiarativo, Terraform consente agli sviluppatori di utilizzare un linguaggio di configurazione di alto livello chiamato HCL (HashiCorp Configuration Language) per descrivere l'infrastruttura sul cloud o in ambienti on-premise nello "stato finale" per l'esecuzione di un'applicazione. Genera poi un piano per raggiungere tale stato finale e lo attua per eseguire il provisioning dell'infrastruttura.

Poiché utilizza una sintassi semplice, può eseguire il provisioning dell'infrastruttura in più data center sul cloud e in ambienti on-premise e può rieseguire il provisioning dell'infrastruttura in modo sicuro ed efficiente in risposta a variazioni della configurazione, Terraform è attualmente uno degli strumenti di automazione dell'infrastruttura più diffusi a disposizione. Se la tua organizzazione intende implementare un ambiente cloud ibrido o multicloud, conoscere Terraform potrebbe essere una cosa auspicabile, se non necessaria.

Perché IaC (Infrastucture as Code)?

Per comprendere meglio i vantaggi di Terraform, è utile comprendere prima i vantaggi di IaC (Infrastructure as Code). IaC consente agli sviluppatori di codificare l'infrastruttura in un modo che rende il provisioning automatizzato, più veloce e ripetibile. È un componente chiave delle prassi Agile e DevOps quali il controllo delle versioni, l'integrazione continua e l'implementazione continua.

IaC (Infrastructure as Code) può contribuire a:

  • Migliorare la velocità: l'automazione è più veloce rispetto allo spostarsi manualmente in un'interfaccia quando hai bisogno di eseguire l'implementazione e/o la connessione di risorse.
  • Aumentare l'affidabilità: se la tua infrastruttura è grande, diventa facile sbagliare la configurazione di una risorsa o eseguire il provisioning dei servizi nell'ordine errato. Con IaC, il provisioning e la configurazione delle risorse viene sempre eseguito esattamente come dichiarato.
  • Prevenire una differenza della configurazione: una differenza della configurazione si verifica quando la configurazione che ha eseguito il provisioning del tuo ambiente non corrisponde più all'ambiente effettivo (vedi 'Infrastruttura immutabile' di seguito).
  • Supportare la sperimentazione, l'esecuzione di test e l'ottimizzazione: poiché IoC (infrastructure as Code) accelera e semplifica in misura così considerevole l'esecuzione del provisioning di una nuova infrastruttura, puoi apportare delle modifiche sperimentali e testarle senza investire molto tempo e tante risorse e, se sei soddisfatto dei risultati, puoi espandere rapidamente la nuova infrastruttura per la produzione.

Per maggiori dettagli, vedi "Cos'è IaC (Infrastructure as Code)?":

Perché Terraform?

Ci sono alcuni motivi fondamentali per cui gli sviluppatori scelgono di utilizzare Terraform piuttosto che altri strumenti IaC (Infrastructure as Code):

  • Open source: Terraform è supportato da ampie community di contributori che creano plugin per la piattaforma. Indipendentemente dal provider di servizi cloud che utilizzi, è facile trovare plugin, estensioni e supporto professionale. Questo significa anche che Terraform si evolve rapidamente, con nuovi benefici e miglioramenti aggiunti regolarmente.
  • Indipendente dalla piattaforma: puoi cioè utilizzarlo con qualsiasi provider di servizi cloud. La maggior parte degli altri strumenti IaC è progettata per funzionare con un singolo provider di servizi cloud.
  • Infrastruttura immutabile: la maggior parte degli strumenti IaC (Infrastructure as Code) crea un'infrastruttura mutevole, ossia l'infrastruttura può variare per integrare modifiche quali un upgrade del middleware o un nuovo server di storage. Il pericolo con un'infrastruttura mutevole è una differenza della configurazione; con l'accumularsi delle modifiche, il provisioning effettivo di server diversi o altri elementi dell'infrastruttura si 'differenzia' ulteriormente dalla configurazione originale, rendendo difficile diagnosticare e correggere bug e problemi di prestazioni. Terraform esegue il provisioning di un'infrastruttura immutabile, il che significa che con ogni modifica all'ambiente, la configurazione effettiva viene sostituita con una nuova che tiene conto della modifica e viene nuovamente eseguito il provisioning dell'infrastruttura. Ancora meglio, le configurazioni precedenti possono essere conservate come versioni per abilitare i rollback se necessario o desiderato.

Moduli Terraform

I moduli Terraform sono piccole configurazioni Terraform riutilizzabili per più risorse dell'infrastruttura che vengono utilizzati insieme. I moduli Terraform sono utili perché consentono di automatizzare risorse complesse con costrutti riutilizzabili e configurabili. Scrivere anche un file Terraform molto semplice significa creare un modulo. Un modulo può richiamare altri moduli, detti moduli secondari, che possono rendere l'assemblaggio della configurazione più rapido e conciso. 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 tipi di risorsa. I provider contengono tutto il codice necessario per autenticarsi e connettersi ad un servizio, di solito da un provider di servizi cloud pubblico, per conto dell'utente. Puoi trovare i provider per le piattaforme cloud e i servizi che usi, aggiungerli alla tua configurazione e utilizzare quindi le loro risorse per eseguire il provisioning dell'infrastruttura. Sono disponibili dei provider per quasi tutti i principali provider di servizi cloud, per l'offerta SaaS e per altro ancora, sviluppati e/o supportati dalla community di Terraform o da singole organizzazioni. Per un elenco dettagliato, fai riferimento alla documentazione di Terraform (link esterno a IBM).

Confronto tra Terraform e Kubernetes

A volte, si fa confusione tra Terraform e Kubernetes e quello che in effetti fanno. La verità è che l'uno non è un'alternativa all'altro e che anzi funzionano efficacemente insieme.

Kubernetes è un sistema di orchestrazione dei container open source che consente agli sviluppatori di pianificare implementazioni sui nodi in un cluster di calcolo e gestisce attivamente i carichi di lavoro containerizzati per garantire che il loro stato corrisponda alle intenzioni degli utenti.

Terraform, invece, è uno strumento IaC (Infrastructure as Code) con una portata molto più ampia che consente agli sviluppatori di automatizzare l'intera infrastruttura che si estende a più cloud pubblici e privati.

Terraform può automatizzare e gestire funzionalità di livelloIaaS (Infrastructure-as-a-Service),PaaS (Platform-as-a-Service)o ancheSaaS (Software-as-a-Service)e sviluppare tutte queste risorse su tutti questi provider in parallelo. Puoi utilizzare Terraform per automatizzare il provisioning di Kubernetes , in particolare i cluster Kubernetes gestiti sulle piattaforme cloud, e per automatizzare l'implementazione di applicazioni in un cluster.

Confronto tra Terraform e Ansible

Terraform e Ansible sono entrambi strumenti IaC (Infrastructure as Code) ma si distinguono per un paio di differenze significative:

  • Mentre Terraform è puramente uno strumento dichiarativo (vedi sopra), Ansible combina sia la configurazione dichiarativa che quella procedurale. Nella configurazione procedurale, specifichi la procedura, o il modo preciso, con cui desideri eseguire il provisioning dell'infrastruttura allo stato desiderato. La configurazione procedurale richiede più lavoro ma fornisce più controllo.
  • Terraform è open source; Ansible è sviluppato e venduto da Red Hat.

IBM e Terraform

IBM Cloud Schematics è lo strumento di automazione cloud gratuito di IBM basato su Terraform. IBM Cloud Schematics ti consente di gestire completamente l'automazione dell'infrastruttura basata su Terraform in modo da poter dedicare più tempo allo sviluppo di applicazioni e meno tempo allo sviluppo di ambienti.

Scopri di più su come utilizzare IBM Cloud Schematics.

Per ulteriori informazioni su Terraform, registrati per l'IBMid e crea il tuo account IBM Cloud.