Marvin Pascale

[B.Log]

22 Maggio 2024

OpenTofu

OpenTofu

Terraform è stato reso open source nel 2014 sotto la Mozilla Public License (v2.0) (la “MPL”). Nel corso dei successivi 9 anni, ha creato una comunità che comprende migliaia di utenti, collaboratori, clienti, professionisti certificati, fornitori e un ecosistema di moduli, plug-in, librerie ed estensioni open-source. Poi, il 10 agosto 2023, con poco o zero preavviso o possibilità per gran parte, se non tutta, della comunità di avere qualche input, HashiCorp ha cambiato la licenza per Terraform da MPL a Business Source License (v1.1) (il “BUSL”), una licenza non open-source. A nostro avviso, questo cambiamento minaccia l’intera comunità e l’ecosistema costruito attorno a Terraform negli ultimi 9 anni.

Questo è l’inizio del “Manifesto” di OpenTofu e penso tolga ogni dubbio sugli obiettivi del progetto.

OpenTofu 1.7.0

L’annuncio della versione 1.7.0 di OpenTofu segna un momento cruciale per la comunità dell’infrastructure as a code (IaC). Questo aggiornamento non solo porta importanti e nuove funzionalità, ma apre anche la strada a una possibile riunificazione con Terraform, evidenziando l’importanza crescente dell’automazione nella gestione delle infrastrutture moderne.

Le novità

OpenTofu 1.7.0 introduce diverse migliorie chiave che rafforzano la sicurezza e la flessibilità del tool:

  1. crittografia end-to-end dello stato: questa funzione protegge i file di stato da accessi non autorizzati, indipendentemente dal backend utilizzato. È possibile integrare sistemi di gestione delle chiavi come AWS KMS, GCP KMS e OpenBao per una gestione sicura delle passphrase;

  2. funzioni dinamiche definite dal provider: questa novità permette ai provider di offrire risorse e funzioni native personalizzabili direttamente nel codice OpenTofu. Gli utenti possono sfruttare linguaggi di programmazione come Lua e Go per integrare funzionalità avanzate nelle loro configurazioni;

  3. blocchi di importazione ciclabili e blocchi di rimozione: questi strumenti facilitano la gestione di infrastrutture su larga scala, consentendo l’importazione di risorse in massa e la rimozione sicura di elementi senza interrompere il setup complessivo;

  4. crescita della comunità: la comunità OpenTofu ha visto una crescita significativa, con un aumento delle richieste al registro e una partecipazione attiva con oltre 20,000 stelle su GitHub e numerosi contributori unici per questa release.

L’importanza dell’automazione nelle infrastrutture

L’automazione gioca un ruolo vitale nella gestione delle infrastrutture moderne. Strumenti come OpenTofu permettono di definire e controllare l’infrastruttura attraverso il codice, eliminando molte delle complessità e degli errori umani associati alla gestione tradizionale. Questo approccio offre numerosi vantaggi:

  • efficienza operativa: automatizzare la creazione e gestione dell’infrastruttura riduce il tempo e le risorse necessarie per il provisioning e il mantenimento;
  • consistenza e riproducibilità: le configurazioni scritte sotto forma di codice assicurano che l’infrastruttura sia sempre configurata in modo uniforme e possono essere riprodotte facilmente in diversi ambienti;
  • scalabilità: con l’automazione, è possibile gestire grandi volumi di risorse e scalare l’infrastruttura senza aumentare proporzionalmente il carico di lavoro manuale;
  • miglioramento della sicurezza: l’integrazione di pratiche DevSecOps, come la crittografia end-to-end e l’uso di sistemi di gestione delle chiavi, migliora la sicurezza dell’infrastruttura automatizzata.

Mani in pasta

In questa sezione “mani in pasta”, vedremo un esempio pratico di come creare un’istanza EC2 su AWS utilizzando OpenTofu. Questo esempio dimostra la potenza e la semplicità di OpenTofu nell’automazione delle infrastrutture cloud.

Prerequisiti

Prima di iniziare, assicurati di avere: 1. un account AWS attivo; 2. le credenziali di accesso configurate sul tuo sistema; 3. OpenTofu installato. Puoi trovare le istruzioni di installazione qui .

Configurazione di Base

Iniziamo creando un file di configurazione main.tf dove definiremo la nostra infrastruttura.

Step 1: Definire il Provider

provider "aws" {
  region = "eu-south-1"  # Specifica la regione AWS
}

Step 2: Creare l’istanza EC2

Ora definiamo una risorsa aws_instance che crea un’istanza EC2.

resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"  # Sostituisci con l'ID dell'AMI desiderata
  instance_type = "t2.micro"               # Tipo di istanza
  tags = {
    Name = "Istanza_di_test_opentofu"
  }
}

Questa porzine di codice definisce un’istanza EC2 utilizzando un’AMI specifica e un tipo di istanza t2.micro. Il tag Name aiuta a identificare l’istanza nel pannello di gestione AWS.

Step 3: Inizializzare e Applicare la Configurazione

Una volta definito il file di configurazione, è necessario inizializzare OpenTofu e applicare la configurazione.

$ tofu init

$ tofu apply

Durante l’esecuzione del comando apply, OpenTofu mostrerà un piano (recap) delle azioni che saranno eseguite e chiederà conferma per procedere. Una volta confermato, OpenTofu creerà l’istanza EC2 come definito nel file main.tf.

Per fare pulizia ci basterà lanciare un destroy

$ tofu destroy

Anche in questo caso ci verrà proposto un recap e richiesta una conferma di procedere.

Conclusione

Abbiamo visto come, con pochi semplici passi, sia possibile creare un’istanza EC2 su AWS utilizzando OpenTofu. Questa esercitazione dimostra l’efficacia dell’automazione delle infrastrutture e come OpenTofu possa semplificare questo processo, rendendo le operazioni più rapide, riproducibili e sicure.

Per ulteriori informazioni e configurazioni avanzate, consulta la documentazione ufficiale di OpenTofu .

Un futuro promettente

Guardando avanti, OpenTofu continua a evolversi con il contributo della comunità. La roadmap prevede l’introduzione di nuove funzionalità richieste dagli utenti, come la valutazione anticipata delle variabili e la flessibilità nella configurazione dei moduli. Con un focus continuo sulla trasparenza e sulla collaborazione, OpenTofu si propone come un’alternativa robusta e open-source a Terraform, specialmente in un contesto in cui HashiCorp sta considerando un potenziale cambio di proprietà.

In conclusione, la versione 1.7.0 di OpenTofu rappresenta un passo significativo nell’automazione dell’infrastruttura, offrendo strumenti avanzati e sicuri per la gestione delle risorse. La comunità e l’ecosistema di OpenTofu sono in crescita, promettendo un futuro ricco di innovazioni e opportunità per gli amministratori di sistema e gli sviluppatori DevOps.


Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.

Risorse: